add operator config for ephemeral volumes
This commit is contained in:
		
							parent
							
								
									e71891e2bd
								
							
						
					
					
						commit
						8a5b6b1408
					
				|  | @ -692,6 +692,9 @@ spec: | ||||||
|                   enable_patroni_failsafe_mode: |                   enable_patroni_failsafe_mode: | ||||||
|                     type: boolean |                     type: boolean | ||||||
|                     default: false |                     default: false | ||||||
|  |               allow_ephemeral_volumes: | ||||||
|  |                 type: boolean | ||||||
|  |                 default: false | ||||||
|           status: |           status: | ||||||
|             type: object |             type: object | ||||||
|             additionalProperties: |             additionalProperties: | ||||||
|  |  | ||||||
|  | @ -42,4 +42,5 @@ configuration: | ||||||
| {{ tpl (toYaml .Values.configConnectionPooler) . | indent 4 }} | {{ tpl (toYaml .Values.configConnectionPooler) . | indent 4 }} | ||||||
|   patroni: |   patroni: | ||||||
| {{ tpl (toYaml .Values.configPatroni) . | indent 4 }} | {{ tpl (toYaml .Values.configPatroni) . | indent 4 }} | ||||||
|  |   allow_ephemeral_volumes: {{ .Values.allowEphemeralVolumes }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  |  | ||||||
|  | @ -454,6 +454,9 @@ configPatroni: | ||||||
| # Zalando's internal CDC stream feature | # Zalando's internal CDC stream feature | ||||||
| enableStreams: false | enableStreams: false | ||||||
| 
 | 
 | ||||||
|  | # Allow ephemeral instances | ||||||
|  | allowEphemeralVolumes: false | ||||||
|  | 
 | ||||||
| rbac: | rbac: | ||||||
|   # Specifies whether RBAC resources should be created |   # Specifies whether RBAC resources should be created | ||||||
|   create: true |   create: true | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ data: | ||||||
|   # additional_pod_capabilities: "SYS_NICE" |   # additional_pod_capabilities: "SYS_NICE" | ||||||
|   # additional_secret_mount: "some-secret-name" |   # additional_secret_mount: "some-secret-name" | ||||||
|   # additional_secret_mount_path: "/some/dir" |   # additional_secret_mount_path: "/some/dir" | ||||||
|  |   # allow_ephemeral_volumes: true | ||||||
|   api_port: "8080" |   api_port: "8080" | ||||||
|   aws_region: eu-central-1 |   aws_region: eu-central-1 | ||||||
|   cluster_domain: cluster.local |   cluster_domain: cluster.local | ||||||
|  |  | ||||||
|  | @ -690,6 +690,9 @@ spec: | ||||||
|                   enable_patroni_failsafe_mode: |                   enable_patroni_failsafe_mode: | ||||||
|                     type: boolean |                     type: boolean | ||||||
|                     default: false |                     default: false | ||||||
|  |               allow_ephemeral_volumes: | ||||||
|  |                 type: boolean | ||||||
|  |                 default: false | ||||||
|           status: |           status: | ||||||
|             type: object |             type: object | ||||||
|             additionalProperties: |             additionalProperties: | ||||||
|  |  | ||||||
|  | @ -220,3 +220,4 @@ configuration: | ||||||
|     # connection_pooler_user: "pooler" |     # connection_pooler_user: "pooler" | ||||||
|   patroni: |   patroni: | ||||||
|     enable_patroni_failsafe_mode: false |     enable_patroni_failsafe_mode: false | ||||||
|  |   allow_ephemeral_volumes: false | ||||||
|  | @ -1966,6 +1966,9 @@ var OperatorConfigCRDResourceValidation = apiextv1.CustomResourceValidation{ | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
|  | 					"allow_ephemeral_volums": { | ||||||
|  | 						Type: "boolean", | ||||||
|  | 					}, | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 			"status": { | 			"status": { | ||||||
|  |  | ||||||
|  | @ -287,6 +287,8 @@ type OperatorConfigurationData struct { | ||||||
| 	MinInstances                      int32  `json:"min_instances,omitempty"` | 	MinInstances                      int32  `json:"min_instances,omitempty"` | ||||||
| 	MaxInstances                      int32  `json:"max_instances,omitempty"` | 	MaxInstances                      int32  `json:"max_instances,omitempty"` | ||||||
| 	IgnoreInstanceLimitsAnnotationKey string `json:"ignore_instance_limits_annotation_key,omitempty"` | 	IgnoreInstanceLimitsAnnotationKey string `json:"ignore_instance_limits_annotation_key,omitempty"` | ||||||
|  | 
 | ||||||
|  | 	AllowEphemeralVolumes *bool `json:"allow_ephemeral_volumes,omitempty"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Duration shortens this frequently used name
 | // Duration shortens this frequently used name
 | ||||||
|  |  | ||||||
|  | @ -461,6 +461,11 @@ func (in *OperatorConfigurationData) DeepCopyInto(out *OperatorConfigurationData | ||||||
| 	out.LogicalBackup = in.LogicalBackup | 	out.LogicalBackup = in.LogicalBackup | ||||||
| 	in.ConnectionPooler.DeepCopyInto(&out.ConnectionPooler) | 	in.ConnectionPooler.DeepCopyInto(&out.ConnectionPooler) | ||||||
| 	in.Patroni.DeepCopyInto(&out.Patroni) | 	in.Patroni.DeepCopyInto(&out.Patroni) | ||||||
|  | 	if in.AllowEphemeralVolumes != nil { | ||||||
|  | 		in, out := &in.AllowEphemeralVolumes, &out.AllowEphemeralVolumes | ||||||
|  | 		*out = new(bool) | ||||||
|  | 		**out = **in | ||||||
|  | 	} | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -692,6 +692,7 @@ func generateContainer( | ||||||
| 	privilegedMode bool, | 	privilegedMode bool, | ||||||
| 	privilegeEscalationMode *bool, | 	privilegeEscalationMode *bool, | ||||||
| 	additionalPodCapabilities *v1.Capabilities, | 	additionalPodCapabilities *v1.Capabilities, | ||||||
|  | 	useEphemeralVolumes *bool, | ||||||
| ) *v1.Container { | ) *v1.Container { | ||||||
| 	return &v1.Container{ | 	return &v1.Container{ | ||||||
| 		Name:            name, | 		Name:            name, | ||||||
|  | @ -1394,6 +1395,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef | ||||||
| 		c.OpConfig.Resources.SpiloPrivileged, | 		c.OpConfig.Resources.SpiloPrivileged, | ||||||
| 		c.OpConfig.Resources.SpiloAllowPrivilegeEscalation, | 		c.OpConfig.Resources.SpiloAllowPrivilegeEscalation, | ||||||
| 		generateCapabilities(c.OpConfig.AdditionalPodCapabilities), | 		generateCapabilities(c.OpConfig.AdditionalPodCapabilities), | ||||||
|  | 		nil, | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 	// Patroni responds 200 to probe only if it either owns the leader lock or postgres is running and DCS is accessible
 | 	// Patroni responds 200 to probe only if it either owns the leader lock or postgres is running and DCS is accessible
 | ||||||
|  | @ -2288,6 +2290,7 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1.CronJob, error) { | ||||||
| 		c.OpConfig.SpiloPrivileged, // use same value as for normal DB pods
 | 		c.OpConfig.SpiloPrivileged, // use same value as for normal DB pods
 | ||||||
| 		c.OpConfig.SpiloAllowPrivilegeEscalation, | 		c.OpConfig.SpiloAllowPrivilegeEscalation, | ||||||
| 		nil, | 		nil, | ||||||
|  | 		nil, | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 	logicalBackupJobLabel := map[string]string{ | 	logicalBackupJobLabel := map[string]string{ | ||||||
|  |  | ||||||
|  | @ -277,5 +277,8 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur | ||||||
| 		fromCRD.ConnectionPooler.MaxDBConnections, | 		fromCRD.ConnectionPooler.MaxDBConnections, | ||||||
| 		k8sutil.Int32ToPointer(constants.ConnectionPoolerMaxDBConnections)) | 		k8sutil.Int32ToPointer(constants.ConnectionPoolerMaxDBConnections)) | ||||||
| 
 | 
 | ||||||
|  | 	// Ephemeral config
 | ||||||
|  | 	result.AllowEphemeralVolumes = util.CoalesceBool(fromCRD.AllowEphemeralVolumes, util.False()) | ||||||
|  | 
 | ||||||
| 	return result | 	return result | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -253,6 +253,7 @@ type Config struct { | ||||||
| 	EnableSecretsDeletion                    *bool             `name:"enable_secrets_deletion" default:"true"` | 	EnableSecretsDeletion                    *bool             `name:"enable_secrets_deletion" default:"true"` | ||||||
| 	EnablePersistentVolumeClaimDeletion      *bool             `name:"enable_persistent_volume_claim_deletion" default:"true"` | 	EnablePersistentVolumeClaimDeletion      *bool             `name:"enable_persistent_volume_claim_deletion" default:"true"` | ||||||
| 	PersistentVolumeClaimRetentionPolicy     map[string]string `name:"persistent_volume_claim_retention_policy" default:"when_deleted:retain,when_scaled:retain"` | 	PersistentVolumeClaimRetentionPolicy     map[string]string `name:"persistent_volume_claim_retention_policy" default:"when_deleted:retain,when_scaled:retain"` | ||||||
|  | 	AllowEphemeralVolumes                    *bool             `json:"allow_ephemeral_volumes,omitempty"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // MustMarshal marshals the config or panics
 | // MustMarshal marshals the config or panics
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue