resource renderer
diff --git a/core/resource-renderer/config/crd/bases/dodo.cloud.dodo.cloud_resourcerenderers.yaml b/core/resource-renderer/config/crd/bases/dodo.cloud.dodo.cloud_resourcerenderers.yaml
new file mode 100644
index 0000000..83a80c5
--- /dev/null
+++ b/core/resource-renderer/config/crd/bases/dodo.cloud.dodo.cloud_resourcerenderers.yaml
@@ -0,0 +1,54 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.9.2
+  creationTimestamp: null
+  name: resourcerenderers.dodo.cloud.dodo.cloud
+spec:
+  group: dodo.cloud.dodo.cloud
+  names:
+    kind: ResourceRenderer
+    listKind: ResourceRendererList
+    plural: resourcerenderers
+    singular: resourcerenderer
+  scope: Namespaced
+  versions:
+  - name: v1
+    schema:
+      openAPIV3Schema:
+        description: ResourceRenderer is the Schema for the resourcerenderers API
+        properties:
+          apiVersion:
+            description: 'APIVersion defines the versioned schema of this representation
+              of an object. Servers should convert recognized schemas to the latest
+              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+            type: string
+          kind:
+            description: 'Kind is a string value representing the REST resource this
+              object represents. Servers may infer this from the endpoint the client
+              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+            type: string
+          metadata:
+            type: object
+          spec:
+            description: ResourceRendererSpec defines the desired state of ResourceRenderer
+            properties:
+              resourceTemplate:
+                type: string
+              secretName:
+                description: Foo is an example field of ResourceRenderer. Edit resourcerenderer_types.go
+                  to remove/update
+                type: string
+              secretNamespace:
+                type: string
+            type: object
+          status:
+            description: ResourceRendererStatus defines the observed state of ResourceRenderer
+            type: object
+        type: object
+    served: true
+    storage: true
+    subresources:
+      status: {}
diff --git a/core/resource-renderer/config/crd/kustomization.yaml b/core/resource-renderer/config/crd/kustomization.yaml
new file mode 100644
index 0000000..2942988
--- /dev/null
+++ b/core/resource-renderer/config/crd/kustomization.yaml
@@ -0,0 +1,21 @@
+# This kustomization.yaml is not intended to be run by itself,
+# since it depends on service name and namespace that are out of this kustomize package.
+# It should be run by config/default
+resources:
+- bases/dodo.cloud.dodo.cloud_resourcerenderers.yaml
+#+kubebuilder:scaffold:crdkustomizeresource
+
+patchesStrategicMerge:
+# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix.
+# patches here are for enabling the conversion webhook for each CRD
+#- patches/webhook_in_resourcerenderers.yaml
+#+kubebuilder:scaffold:crdkustomizewebhookpatch
+
+# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix.
+# patches here are for enabling the CA injection for each CRD
+#- patches/cainjection_in_resourcerenderers.yaml
+#+kubebuilder:scaffold:crdkustomizecainjectionpatch
+
+# the following config is for teaching kustomize how to do kustomization for CRDs.
+configurations:
+- kustomizeconfig.yaml
diff --git a/core/resource-renderer/config/crd/kustomizeconfig.yaml b/core/resource-renderer/config/crd/kustomizeconfig.yaml
new file mode 100644
index 0000000..ec5c150
--- /dev/null
+++ b/core/resource-renderer/config/crd/kustomizeconfig.yaml
@@ -0,0 +1,19 @@
+# This file is for teaching kustomize how to substitute name and namespace reference in CRD
+nameReference:
+- kind: Service
+  version: v1
+  fieldSpecs:
+  - kind: CustomResourceDefinition
+    version: v1
+    group: apiextensions.k8s.io
+    path: spec/conversion/webhook/clientConfig/service/name
+
+namespace:
+- kind: CustomResourceDefinition
+  version: v1
+  group: apiextensions.k8s.io
+  path: spec/conversion/webhook/clientConfig/service/namespace
+  create: false
+
+varReference:
+- path: metadata/annotations
diff --git a/core/resource-renderer/config/crd/patches/cainjection_in_resourcerenderers.yaml b/core/resource-renderer/config/crd/patches/cainjection_in_resourcerenderers.yaml
new file mode 100644
index 0000000..526bd3b
--- /dev/null
+++ b/core/resource-renderer/config/crd/patches/cainjection_in_resourcerenderers.yaml
@@ -0,0 +1,7 @@
+# The following patch adds a directive for certmanager to inject CA into the CRD
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+  annotations:
+    cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME)
+  name: resourcerenderers.dodo.cloud.dodo.cloud
diff --git a/core/resource-renderer/config/crd/patches/webhook_in_resourcerenderers.yaml b/core/resource-renderer/config/crd/patches/webhook_in_resourcerenderers.yaml
new file mode 100644
index 0000000..72a1f5b
--- /dev/null
+++ b/core/resource-renderer/config/crd/patches/webhook_in_resourcerenderers.yaml
@@ -0,0 +1,16 @@
+# The following patch enables a conversion webhook for the CRD
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+  name: resourcerenderers.dodo.cloud.dodo.cloud
+spec:
+  conversion:
+    strategy: Webhook
+    webhook:
+      clientConfig:
+        service:
+          namespace: system
+          name: webhook-service
+          path: /convert
+      conversionReviewVersions:
+      - v1