Skip to content

Commit 44337ad

Browse files
committed
fix(2582): added cluster level delete secrets config
chore: removed log messages chore: removed test yaml Revert "chore: removed test yaml" This reverts commit f19110c. chore: removed test yaml chore: added docs
1 parent 2e39812 commit 44337ad

File tree

12 files changed

+30
-2
lines changed

12 files changed

+30
-2
lines changed

2

Whitespace-only changes.

charts/postgres-operator/crds/operatorconfigurations.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ spec:
229229
enable_secrets_deletion:
230230
type: boolean
231231
default: true
232+
enable_secrets_deletion_key:
233+
type: string
232234
enable_sidecars:
233235
type: boolean
234236
default: true

charts/postgres-operator/values.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ configKubernetes:
141141
enable_readiness_probe: false
142142
# toggles if operator should delete secrets on cluster deletion
143143
enable_secrets_deletion: true
144+
# key name for annotation that overrides enable_secrets_deletion on cluster level
145+
# enable_secrets_deletion_key: "enable-secrets-deletion"
146+
144147
# enables sidecar containers to run alongside Spilo in the same pod
145148
enable_sidecars: true
146149

docs/reference/operator_parameters.md

+3
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,9 @@ configuration they are grouped under the `kubernetes` key.
365365
By default, the operator deletes secrets when removing the Postgres cluster
366366
manifest. To keep secrets, set this option to `false`. The default is `true`.
367367

368+
* **enable_secrets_deletion_key**
369+
By default, the `enable_secrets_deletion` decides on the deletion of secrets for the entire operator. To overwrite `enable_secrets_deletion` this property can be set and an annotation on cluster level can be added with the values: delete secrets `true` or `false`.
370+
368371
* **enable_persistent_volume_claim_deletion**
369372
By default, the operator deletes PersistentVolumeClaims when removing the
370373
Postgres cluster manifest, no matter if `persistent_volume_claim_retention_policy`

manifests/configmap.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ data:
6161
enable_replica_load_balancer: "false"
6262
enable_replica_pooler_load_balancer: "false"
6363
enable_secrets_deletion: "true"
64+
# enable_secrets_deletion_key: enable-secrets-deletion
6465
enable_shm_volume: "true"
6566
enable_sidecars: "true"
6667
enable_spilo_wal_path_compat: "true"

manifests/operatorconfiguration.crd.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,8 @@ spec:
227227
enable_secrets_deletion:
228228
type: boolean
229229
default: true
230+
enable_secrets_deletion_key:
231+
type: string
230232
enable_sidecars:
231233
type: boolean
232234
default: true

manifests/postgresql-operator-default-configuration.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ configuration:
6565
enable_pod_disruption_budget: true
6666
enable_readiness_probe: false
6767
enable_secrets_deletion: true
68+
# enable_secrets_deletion_key: enable-secrets-deletion
6869
enable_sidecars: true
6970
# ignored_annotations:
7071
# - k8s.v1.cni.cncf.io/network-status

pkg/apis/acid.zalan.do/v1/crds.go

+3
Original file line numberDiff line numberDiff line change
@@ -1344,6 +1344,9 @@ var OperatorConfigCRDResourceValidation = apiextv1.CustomResourceValidation{
13441344
"enable_secrets_deletion": {
13451345
Type: "boolean",
13461346
},
1347+
"enable_secrets_deletion_key": {
1348+
Type: "string",
1349+
},
13471350
"enable_sidecars": {
13481351
Type: "boolean",
13491352
},

pkg/apis/acid.zalan.do/v1/operator_configuration_type.go

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ type KubernetesMetaConfiguration struct {
104104
PodManagementPolicy string `json:"pod_management_policy,omitempty"`
105105
PersistentVolumeClaimRetentionPolicy map[string]string `json:"persistent_volume_claim_retention_policy,omitempty"`
106106
EnableSecretsDeletion *bool `json:"enable_secrets_deletion,omitempty"`
107+
EnableSecretsDeletionKey string `json:"enable_secrets_deletion_key,omitempty"`
107108
EnablePersistentVolumeClaimDeletion *bool `json:"enable_persistent_volume_claim_deletion,omitempty"`
108109
EnableReadinessProbe bool `json:"enable_readiness_probe,omitempty"`
109110
EnableCrossNamespaceSecret bool `json:"enable_cross_namespace_secret,omitempty"`

pkg/cluster/cluster.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -1191,7 +1191,18 @@ func (c *Cluster) Delete() error {
11911191
c.eventRecorder.Eventf(c.GetReference(), v1.EventTypeWarning, "Delete", "could not delete statefulset: %v", err)
11921192
}
11931193

1194-
if c.OpConfig.EnableSecretsDeletion != nil && *c.OpConfig.EnableSecretsDeletion {
1194+
enable_secrets_deletion_cluster := c.OpConfig.EnableSecretsDeletion != nil && *c.OpConfig.EnableSecretsDeletion
1195+
if c.OpConfig.EnableSecretsDeletionKey != "" {
1196+
key := c.OpConfig.EnableSecretsDeletionKey
1197+
if value, ok := c.Postgresql.Annotations[key]; ok {
1198+
if value == "true" {
1199+
enable_secrets_deletion_cluster = true
1200+
} else if value == "false" {
1201+
enable_secrets_deletion_cluster = false
1202+
}
1203+
}
1204+
}
1205+
if enable_secrets_deletion_cluster {
11951206
if err := c.deleteSecrets(); err != nil {
11961207
anyErrors = true
11971208
c.logger.Warningf("could not delete secrets: %v", err)
@@ -1200,7 +1211,6 @@ func (c *Cluster) Delete() error {
12001211
} else {
12011212
c.logger.Info("not deleting secrets because disabled in configuration")
12021213
}
1203-
12041214
if err := c.deletePodDisruptionBudget(); err != nil {
12051215
anyErrors = true
12061216
c.logger.Warningf("could not delete pod disruption budget: %v", err)

pkg/controller/operator_config.go

+1
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur
124124
result.PodManagementPolicy = util.Coalesce(fromCRD.Kubernetes.PodManagementPolicy, "ordered_ready")
125125
result.PersistentVolumeClaimRetentionPolicy = fromCRD.Kubernetes.PersistentVolumeClaimRetentionPolicy
126126
result.EnableSecretsDeletion = util.CoalesceBool(fromCRD.Kubernetes.EnableSecretsDeletion, util.True())
127+
result.EnableSecretsDeletionKey = fromCRD.Kubernetes.EnableSecretsDeletionKey
127128
result.EnablePersistentVolumeClaimDeletion = util.CoalesceBool(fromCRD.Kubernetes.EnablePersistentVolumeClaimDeletion, util.True())
128129
result.EnableReadinessProbe = fromCRD.Kubernetes.EnableReadinessProbe
129130
result.MasterPodMoveTimeout = util.CoalesceDuration(time.Duration(fromCRD.Kubernetes.MasterPodMoveTimeout), "10m")

pkg/util/config/config.go

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ type Resources struct {
6666
MaxInstances int32 `name:"max_instances" default:"-1"`
6767
MinInstances int32 `name:"min_instances" default:"-1"`
6868
IgnoreInstanceLimitsAnnotationKey string `name:"ignore_instance_limits_annotation_key"`
69+
EnableSecretsDeletionKey string `name:"enable_secrets_deletion_key"`
6970
}
7071

7172
type InfrastructureRole struct {

0 commit comments

Comments
 (0)