Skip to content

Commit f6aac0f

Browse files
author
Gabriel Nobel
committed
fix(2582): added cluster level delete secrets config
1 parent 2e39812 commit f6aac0f

12 files changed

+100
-2
lines changed

2

Whitespace-only changes.

charts/postgres-operator/crds/operatorconfigurations.yaml

Lines changed: 2 additions & 0 deletions
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

Lines changed: 3 additions & 0 deletions
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

manifests/configmap.yaml

Lines changed: 1 addition & 0 deletions
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 3 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,7 +1191,24 @@ 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+
c.logger.Info("TEST FEATURE START")
1196+
c.logger.Info(enable_secrets_deletion_cluster)
1197+
if c.OpConfig.EnableSecretsDeletionKey != "" {
1198+
key := c.OpConfig.EnableSecretsDeletionKey
1199+
c.logger.Info(key)
1200+
c.logger.Info(c.Postgresql.Annotations)
1201+
if value, ok := c.Postgresql.Annotations[key]; ok {
1202+
c.logger.Info("Test feature", value)
1203+
if value == "true" {
1204+
enable_secrets_deletion_cluster = true
1205+
} else if value == "false" {
1206+
enable_secrets_deletion_cluster = false
1207+
}
1208+
}
1209+
}
1210+
c.logger.Info(enable_secrets_deletion_cluster)
1211+
if enable_secrets_deletion_cluster {
11951212
if err := c.deleteSecrets(); err != nil {
11961213
anyErrors = true
11971214
c.logger.Warningf("could not delete secrets: %v", err)
@@ -1200,7 +1217,7 @@ func (c *Cluster) Delete() error {
12001217
} else {
12011218
c.logger.Info("not deleting secrets because disabled in configuration")
12021219
}
1203-
1220+
c.logger.Info("TEST FEATURE END")
12041221
if err := c.deletePodDisruptionBudget(); err != nil {
12051222
anyErrors = true
12061223
c.logger.Warningf("could not delete pod disruption budget: %v", err)

pkg/controller/operator_config.go

Lines changed: 1 addition & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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 {

test-postgresql.yaml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
apiVersion: acid.zalan.do/v1
2+
kind: postgresql
3+
metadata:
4+
annotations:
5+
delete-clustername: "acid-minimal-cluster"
6+
creationTimestamp: "2024-09-05T09:42:09Z"
7+
generation: 1
8+
managedFields:
9+
- apiVersion: acid.zalan.do/v1
10+
fieldsType: FieldsV1
11+
fieldsV1:
12+
f:spec:
13+
.: {}
14+
f:databases:
15+
.: {}
16+
f:foo: {}
17+
f:numberOfInstances: {}
18+
f:postgresql:
19+
.: {}
20+
f:version: {}
21+
f:preparedDatabases:
22+
.: {}
23+
f:bar: {}
24+
f:teamId: {}
25+
f:users:
26+
.: {}
27+
f:foo_user: {}
28+
f:zalando: {}
29+
f:volume:
30+
.: {}
31+
f:size: {}
32+
manager: kubectl-create
33+
operation: Update
34+
time: "2024-09-05T09:42:09Z"
35+
- apiVersion: acid.zalan.do/v1
36+
fieldsType: FieldsV1
37+
fieldsV1:
38+
f:status:
39+
.: {}
40+
f:PostgresClusterStatus: {}
41+
manager: postgres-operator
42+
operation: Update
43+
subresource: status
44+
time: "2024-09-05T09:44:08Z"
45+
name: acid-minimal-cluster
46+
namespace: default
47+
resourceVersion: "643"
48+
uid: 25f67ca6-eb04-4e2b-a9ee-2662423232a8
49+
spec:
50+
databases:
51+
foo: zalando
52+
numberOfInstances: 0
53+
postgresql:
54+
version: "16"
55+
preparedDatabases:
56+
bar: {}
57+
teamId: acid
58+
users:
59+
foo_user: []
60+
zalando:
61+
- superuser
62+
- createdb
63+
volume:
64+
size: 1Gi
65+
status:
66+
PostgresClusterStatus: Running

0 commit comments

Comments
 (0)