diff --git a/docs/integrations/platforms/kubernetes/infisical-secret-crd.mdx b/docs/integrations/platforms/kubernetes/infisical-secret-crd.mdx
index a7f3dd4ce5..765dfbf365 100644
--- a/docs/integrations/platforms/kubernetes/infisical-secret-crd.mdx
+++ b/docs/integrations/platforms/kubernetes/infisical-secret-crd.mdx
@@ -970,6 +970,13 @@ Please refer to the [templating functions documentation](/integrations/platforms
+
+ Define custom labels and annotations for the managed Kubernetes secret. This allows you to specify metadata that should be applied to the managed secret separately from the InfisicalSecret itself.
+
+ For detailed information on how metadata propagation works and examples, see the [Propagating Labels & Annotations](#propagating-labels-&-annotations) section.
+
+
+
### Operator Managed ConfigMaps
The managed config map properties specify where to store the secrets retrieved from your Infisical project. Config maps can be used to store **non-sensitive** data, such as application configuration variables.
@@ -1078,6 +1085,13 @@ Please refer to the [templating functions documentation](/integrations/platforms
+
+ Define custom labels and annotations for the managed Kubernetes ConfigMap. This allows you to specify metadata that should be applied to the managed ConfigMap separately from the InfisicalSecret itself.
+
+ This field works the same way as `template.metadata` for managed secrets. For detailed information on how metadata propagation works and examples, see the [Propagating Labels & Annotations](#propagating-labels-&-annotations) section.
+
+
+
## Applying CRD
Once you have configured the InfisicalSecret CRD with the required fields, you can apply it to your cluster.
@@ -1564,10 +1578,13 @@ stringData:
## Propagating Labels & Annotations
-The operator will transfer all labels & annotations present on the `InfisicalSecret` CRD to the managed Kubernetes secret to be created.
-Thus, if a specific label is required on the resulting secret, it can be applied as demonstrated in the following example:
+The operator provides flexible options for managing labels and annotations on managed Kubernetes secrets.
+
+
+ By default, the operator will transfer all labels & annotations present on the `InfisicalSecret` to the managed Kubernetes secret to be created.
+
+ ### Example
-
```yaml
apiVersion: secrets.infisical.com/v1alpha1
kind: InfisicalSecret
@@ -1578,28 +1595,95 @@ Thus, if a specific label is required on the resulting secret, it can be applied
annotations:
example.com/annotation-to-be-passed-to-managed-secret: "sample-value"
spec:
- ..
authentication:
- ...
+ # ... auth config ...
managedKubeSecretReferences:
- ...
+ - secretName: managed-token
+ secretNamespace: default
```
-This would result in the following managed secret to be created:
+ This would result in the following managed secret to be created:
-```yaml
-apiVersion: v1
-data: ...
-kind: Secret
-metadata:
- annotations:
- example.com/annotation-to-be-passed-to-managed-secret: sample-value
- secrets.infisical.com/version: W/"3f1-ZyOSsrCLGSkAhhCkY2USPu2ivRw"
- labels:
- label-to-be-passed-to-managed-secret: sample-value
- name: managed-token
- namespace: default
-type: Opaque
-```
+ ```yaml
+ apiVersion: v1
+ data: ...
+ kind: Secret
+ metadata:
+ annotations:
+ example.com/annotation-to-be-passed-to-managed-secret: sample-value
+ secrets.infisical.com/version: W/"3f1-ZyOSsrCLGSkAhhCkY2USPu2ivRw"
+ labels:
+ label-to-be-passed-to-managed-secret: sample-value
+ name: managed-token
+ namespace: default
+ type: Opaque
+ ```
+
+
+
+ When you specify `template.metadata` in your template configuration, you have full control over which labels and annotations are applied to the managed secret:
+
+ - Labels and annotations from `template.metadata` are used exclusively on the managed secret
+ - InfisicalSecret labels and annotations are NOT propagated to the managed secret
+ - This allows you to keep InfisicalSecret-specific metadata separate from the managed secret metadata
+
+
+ To prevent propagation while using `template.metadata`, pass empty objects for labels and/or annotations:
+
+ ```yaml
+ template:
+ metadata:
+ labels: {}
+ annotations: {}
+ ```
+
+
+ ### Example
+
+ ```yaml
+ apiVersion: secrets.infisical.com/v1alpha1
+ kind: InfisicalSecret
+ metadata:
+ name: infisicalsecret-with-template-metadata
+ labels:
+ managed-by: infisical-operator
+ annotations:
+ example.com/cr-specific: "metadata"
+ spec:
+ authentication:
+ # ... auth config ...
+ managedKubeSecretReferences:
+ - secretName: managed-secret-with-custom-metadata
+ secretNamespace: default
+ template:
+ includeAllSecrets: true
+ metadata:
+ labels:
+ app: my-application
+ environment: production
+ tier: backend
+ annotations:
+ secret.example.com/description: "Production database credentials"
+ secret.example.com/owner: "platform-team"
+ ```
+
+ This would result in the following managed secret to be created:
+
+ ```yaml
+ apiVersion: v1
+ data: ...
+ kind: Secret
+ metadata:
+ annotations:
+ secret.example.com/description: "Production database credentials"
+ secret.example.com/owner: "platform-team"
+ labels:
+ app: my-application
+ environment: production
+ tier: backend
+ name: managed-secret-with-custom-metadata
+ namespace: default
+ type: Opaque
+ ```