Skip to content

Commit 76d4352

Browse files
authored
define more default values for opConfig CRD (zalando#955)
1 parent d52296c commit 76d4352

File tree

5 files changed

+39
-31
lines changed

5 files changed

+39
-31
lines changed

charts/postgres-operator/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ configKubernetes:
109109
# Postgres pods are terminated forcefully after this timeout
110110
pod_terminate_grace_period: 5m
111111
# template for database user secrets generated by the operator
112-
secret_name_template: '{username}.{cluster}.credentials'
112+
secret_name_template: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}"
113113
# group ID with write-access to volumes (required to run Spilo as non-root process)
114114
# spilo_fsgroup: "103"
115115

manifests/configmap.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,16 @@ data:
5050
# inherited_labels: application,environment
5151
# kube_iam_role: ""
5252
# log_s3_bucket: ""
53-
# logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup"
53+
logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup"
5454
# logical_backup_s3_access_key_id: ""
55-
# logical_backup_s3_bucket: "my-bucket-url"
55+
logical_backup_s3_bucket: "my-bucket-url"
5656
# logical_backup_s3_region: ""
5757
# logical_backup_s3_endpoint: ""
5858
# logical_backup_s3_secret_access_key: ""
59-
# logical_backup_s3_sse: "AES256"
60-
# logical_backup_schedule: "30 00 * * *"
59+
logical_backup_s3_sse: "AES256"
60+
logical_backup_schedule: "30 00 * * *"
6161
master_dns_name_format: "{cluster}.{team}.{hostedzone}"
62-
# master_pod_move_timeout: 10m
62+
# master_pod_move_timeout: 20m
6363
# max_instances: "-1"
6464
# min_instances: "-1"
6565
# min_cpu_limit: 250m

pkg/controller/operator_config.go

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,28 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur
3333
result := &config.Config{}
3434

3535
// general config
36-
result.EnableCRDValidation = fromCRD.EnableCRDValidation
36+
result.EnableCRDValidation = util.CoalesceBool(fromCRD.EnableCRDValidation, util.True())
3737
result.EnableLazySpiloUpgrade = fromCRD.EnableLazySpiloUpgrade
3838
result.EtcdHost = fromCRD.EtcdHost
3939
result.KubernetesUseConfigMaps = fromCRD.KubernetesUseConfigMaps
40-
result.DockerImage = fromCRD.DockerImage
40+
result.DockerImage = util.Coalesce(fromCRD.DockerImage, "registry.opensource.zalan.do/acid/spilo-cdp-12:1.6-p115")
4141
result.Workers = fromCRD.Workers
4242
result.MinInstances = fromCRD.MinInstances
4343
result.MaxInstances = fromCRD.MaxInstances
4444
result.ResyncPeriod = time.Duration(fromCRD.ResyncPeriod)
4545
result.RepairPeriod = time.Duration(fromCRD.RepairPeriod)
4646
result.SetMemoryRequestToLimit = fromCRD.SetMemoryRequestToLimit
47-
result.ShmVolume = fromCRD.ShmVolume
47+
result.ShmVolume = util.CoalesceBool(fromCRD.ShmVolume, util.True())
4848
result.SidecarImages = fromCRD.SidecarImages
4949
result.SidecarContainers = fromCRD.SidecarContainers
5050

5151
// user config
52-
result.SuperUsername = fromCRD.PostgresUsersConfiguration.SuperUsername
53-
result.ReplicationUsername = fromCRD.PostgresUsersConfiguration.ReplicationUsername
52+
result.SuperUsername = util.Coalesce(fromCRD.PostgresUsersConfiguration.SuperUsername, "postgres")
53+
result.ReplicationUsername = util.Coalesce(fromCRD.PostgresUsersConfiguration.ReplicationUsername, "standby")
5454

5555
// kubernetes config
5656
result.CustomPodAnnotations = fromCRD.Kubernetes.CustomPodAnnotations
57-
result.PodServiceAccountName = fromCRD.Kubernetes.PodServiceAccountName
57+
result.PodServiceAccountName = util.Coalesce(fromCRD.Kubernetes.PodServiceAccountName, "postgres-pod")
5858
result.PodServiceAccountDefinition = fromCRD.Kubernetes.PodServiceAccountDefinition
5959
result.PodServiceAccountRoleBindingDefinition = fromCRD.Kubernetes.PodServiceAccountRoleBindingDefinition
6060
result.PodEnvironmentConfigMap = fromCRD.Kubernetes.PodEnvironmentConfigMap
@@ -64,31 +64,31 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur
6464
result.ClusterDomain = util.Coalesce(fromCRD.Kubernetes.ClusterDomain, "cluster.local")
6565
result.WatchedNamespace = fromCRD.Kubernetes.WatchedNamespace
6666
result.PDBNameFormat = fromCRD.Kubernetes.PDBNameFormat
67-
result.EnablePodDisruptionBudget = fromCRD.Kubernetes.EnablePodDisruptionBudget
68-
result.EnableInitContainers = fromCRD.Kubernetes.EnableInitContainers
69-
result.EnableSidecars = fromCRD.Kubernetes.EnableSidecars
67+
result.EnablePodDisruptionBudget = util.CoalesceBool(fromCRD.Kubernetes.EnablePodDisruptionBudget, util.True())
68+
result.EnableInitContainers = util.CoalesceBool(fromCRD.Kubernetes.EnableInitContainers, util.True())
69+
result.EnableSidecars = util.CoalesceBool(fromCRD.Kubernetes.EnableSidecars, util.True())
7070
result.SecretNameTemplate = fromCRD.Kubernetes.SecretNameTemplate
7171
result.OAuthTokenSecretName = fromCRD.Kubernetes.OAuthTokenSecretName
7272
result.InfrastructureRolesSecretName = fromCRD.Kubernetes.InfrastructureRolesSecretName
73-
result.PodRoleLabel = fromCRD.Kubernetes.PodRoleLabel
73+
result.PodRoleLabel = util.Coalesce(fromCRD.Kubernetes.PodRoleLabel, "spilo-role")
7474
result.ClusterLabels = fromCRD.Kubernetes.ClusterLabels
7575
result.InheritedLabels = fromCRD.Kubernetes.InheritedLabels
7676
result.DownscalerAnnotations = fromCRD.Kubernetes.DownscalerAnnotations
77-
result.ClusterNameLabel = fromCRD.Kubernetes.ClusterNameLabel
77+
result.ClusterNameLabel = util.Coalesce(fromCRD.Kubernetes.ClusterNameLabel, "cluster-name")
7878
result.NodeReadinessLabel = fromCRD.Kubernetes.NodeReadinessLabel
7979
result.PodPriorityClassName = fromCRD.Kubernetes.PodPriorityClassName
80-
result.PodManagementPolicy = fromCRD.Kubernetes.PodManagementPolicy
80+
result.PodManagementPolicy = util.Coalesce(fromCRD.Kubernetes.PodManagementPolicy, "ordered_ready")
8181
result.MasterPodMoveTimeout = time.Duration(fromCRD.Kubernetes.MasterPodMoveTimeout)
8282
result.EnablePodAntiAffinity = fromCRD.Kubernetes.EnablePodAntiAffinity
83-
result.PodAntiAffinityTopologyKey = fromCRD.Kubernetes.PodAntiAffinityTopologyKey
83+
result.PodAntiAffinityTopologyKey = util.Coalesce(fromCRD.Kubernetes.PodAntiAffinityTopologyKey, "kubernetes.io/hostname")
8484

8585
// Postgres Pod resources
86-
result.DefaultCPURequest = fromCRD.PostgresPodResources.DefaultCPURequest
87-
result.DefaultMemoryRequest = fromCRD.PostgresPodResources.DefaultMemoryRequest
88-
result.DefaultCPULimit = fromCRD.PostgresPodResources.DefaultCPULimit
89-
result.DefaultMemoryLimit = fromCRD.PostgresPodResources.DefaultMemoryLimit
90-
result.MinCPULimit = fromCRD.PostgresPodResources.MinCPULimit
91-
result.MinMemoryLimit = fromCRD.PostgresPodResources.MinMemoryLimit
86+
result.DefaultCPURequest = util.Coalesce(fromCRD.PostgresPodResources.DefaultCPURequest, "100m")
87+
result.DefaultMemoryRequest = util.Coalesce(fromCRD.PostgresPodResources.DefaultMemoryRequest, "100Mi")
88+
result.DefaultCPULimit = util.Coalesce(fromCRD.PostgresPodResources.DefaultCPULimit, "1")
89+
result.DefaultMemoryLimit = util.Coalesce(fromCRD.PostgresPodResources.DefaultMemoryLimit, "500Mi")
90+
result.MinCPULimit = util.Coalesce(fromCRD.PostgresPodResources.MinCPULimit, "250m")
91+
result.MinMemoryLimit = util.Coalesce(fromCRD.PostgresPodResources.MinMemoryLimit, "250Mi")
9292

9393
// timeout config
9494
result.ResourceCheckInterval = time.Duration(fromCRD.Timeouts.ResourceCheckInterval)
@@ -115,8 +115,8 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur
115115
result.AdditionalSecretMountPath = fromCRD.AWSGCP.AdditionalSecretMountPath
116116

117117
// logical backup config
118-
result.LogicalBackupSchedule = fromCRD.LogicalBackup.Schedule
119-
result.LogicalBackupDockerImage = fromCRD.LogicalBackup.DockerImage
118+
result.LogicalBackupSchedule = util.Coalesce(fromCRD.LogicalBackup.Schedule, "30 00 * * *")
119+
result.LogicalBackupDockerImage = util.Coalesce(fromCRD.LogicalBackup.DockerImage, "registry.opensource.zalan.do/acid/logical-backup")
120120
result.LogicalBackupS3Bucket = fromCRD.LogicalBackup.S3Bucket
121121
result.LogicalBackupS3Region = fromCRD.LogicalBackup.S3Region
122122
result.LogicalBackupS3Endpoint = fromCRD.LogicalBackup.S3Endpoint

pkg/util/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ type LogicalBackup struct {
8383
LogicalBackupS3Endpoint string `name:"logical_backup_s3_endpoint" default:""`
8484
LogicalBackupS3AccessKeyID string `name:"logical_backup_s3_access_key_id" default:""`
8585
LogicalBackupS3SecretAccessKey string `name:"logical_backup_s3_secret_access_key" default:""`
86-
LogicalBackupS3SSE string `name:"logical_backup_s3_sse" default:"AES256"`
86+
LogicalBackupS3SSE string `name:"logical_backup_s3_sse" default:""`
8787
}
8888

8989
// Operator options for connection pooler

pkg/util/util.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,22 @@ func Coalesce(val, defaultVal string) string {
147147
return val
148148
}
149149

150-
// Yeah, golang
150+
// CoalesceInt32 works like coalesce but for *int32
151151
func CoalesceInt32(val, defaultVal *int32) *int32 {
152152
if val == nil {
153153
return defaultVal
154154
}
155155
return val
156156
}
157157

158+
// CoalesceBool works like coalesce but for *bool
159+
func CoalesceBool(val, defaultVal *bool) *bool {
160+
if val == nil {
161+
return defaultVal
162+
}
163+
return val
164+
}
165+
158166
// Test if any of the values is nil
159167
func testNil(values ...*int32) bool {
160168
for _, v := range values {
@@ -166,8 +174,8 @@ func testNil(values ...*int32) bool {
166174
return false
167175
}
168176

169-
// Return maximum of two integers provided via pointers. If one value is not
170-
// defined, return the other one. If both are not defined, result is also
177+
// MaxInt32 : Return maximum of two integers provided via pointers. If one value
178+
// is not defined, return the other one. If both are not defined, result is also
171179
// undefined, caller needs to check for that.
172180
func MaxInt32(a, b *int32) *int32 {
173181
if testNil(a, b) {

0 commit comments

Comments
 (0)