Set user and group in security context (#1083)
* Set user and group in security context
This commit is contained in:
		
							parent
							
								
									d8884a4003
								
							
						
					
					
						commit
						d09e418b56
					
				|  | @ -200,6 +200,10 @@ spec: | ||||||
|                   type: string |                   type: string | ||||||
|                 secret_name_template: |                 secret_name_template: | ||||||
|                   type: string |                   type: string | ||||||
|  |                 spilo_runasuser: | ||||||
|  |                   type: integer | ||||||
|  |                 spilo_runasgroup: | ||||||
|  |                   type: integer | ||||||
|                 spilo_fsgroup: |                 spilo_fsgroup: | ||||||
|                   type: integer |                   type: integer | ||||||
|                 spilo_privileged: |                 spilo_privileged: | ||||||
|  |  | ||||||
|  | @ -374,6 +374,10 @@ spec: | ||||||
|               items: |               items: | ||||||
|                 type: object |                 type: object | ||||||
|                 additionalProperties: true |                 additionalProperties: true | ||||||
|  |             spiloRunAsUser: | ||||||
|  |               type: integer | ||||||
|  |             spiloRunAsGroup: | ||||||
|  |               type: integer | ||||||
|             spiloFSGroup: |             spiloFSGroup: | ||||||
|               type: integer |               type: integer | ||||||
|             standby: |             standby: | ||||||
|  |  | ||||||
|  | @ -127,6 +127,9 @@ configKubernetes: | ||||||
|   pod_terminate_grace_period: 5m |   pod_terminate_grace_period: 5m | ||||||
|   # template for database user secrets generated by the operator |   # template for database user secrets generated by the operator | ||||||
|   secret_name_template: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}" |   secret_name_template: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}" | ||||||
|  |   # set user and group for the spilo container (required to run Spilo as non-root process) | ||||||
|  |   # spilo_runasuser: "101" | ||||||
|  |   # spilo_runasgroup: "103" | ||||||
|   # group ID with write-access to volumes (required to run Spilo as non-root process) |   # group ID with write-access to volumes (required to run Spilo as non-root process) | ||||||
|   # spilo_fsgroup: 103 |   # spilo_fsgroup: 103 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -118,6 +118,9 @@ configKubernetes: | ||||||
|   pod_terminate_grace_period: 5m |   pod_terminate_grace_period: 5m | ||||||
|   # template for database user secrets generated by the operator |   # template for database user secrets generated by the operator | ||||||
|   secret_name_template: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}" |   secret_name_template: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}" | ||||||
|  |   # set user and group for the spilo container (required to run Spilo as non-root process) | ||||||
|  |   # spilo_runasuser: "101" | ||||||
|  |   # spilo_runasgroup: "103" | ||||||
|   # group ID with write-access to volumes (required to run Spilo as non-root process) |   # group ID with write-access to volumes (required to run Spilo as non-root process) | ||||||
|   # spilo_fsgroup: "103" |   # spilo_fsgroup: "103" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -65,6 +65,16 @@ These parameters are grouped directly under  the `spec` key in the manifest. | ||||||
|   custom Docker image that overrides the **docker_image** operator parameter. |   custom Docker image that overrides the **docker_image** operator parameter. | ||||||
|   It should be a [Spilo](https://github.com/zalando/spilo) image. Optional. |   It should be a [Spilo](https://github.com/zalando/spilo) image. Optional. | ||||||
| 
 | 
 | ||||||
|  | * **spiloRunAsUser** | ||||||
|  |   sets the user ID which should be used in the container to run the process. | ||||||
|  |   This must be set to run the container without root. By default the container | ||||||
|  |   runs with root. This option only works for Spilo versions >= 1.6-p3. | ||||||
|  | 
 | ||||||
|  | * **spiloRunAsGroup** | ||||||
|  |   sets the group ID which should be used in the container to run the process. | ||||||
|  |   This must be set to run the container without root. By default the container | ||||||
|  |   runs with root. This option only works for Spilo versions >= 1.6-p3. | ||||||
|  | 
 | ||||||
| * **spiloFSGroup** | * **spiloFSGroup** | ||||||
|   the Persistent Volumes for the Spilo pods in the StatefulSet will be owned and |   the Persistent Volumes for the Spilo pods in the StatefulSet will be owned and | ||||||
|   writable by the group ID specified. This will override the **spilo_fsgroup** |   writable by the group ID specified. This will override the **spilo_fsgroup** | ||||||
|  |  | ||||||
|  | @ -317,6 +317,16 @@ configuration they are grouped under the `kubernetes` key. | ||||||
|   that should be assigned to the Postgres pods. The priority class itself must |   that should be assigned to the Postgres pods. The priority class itself must | ||||||
|   be defined in advance. Default is empty (use the default priority class). |   be defined in advance. Default is empty (use the default priority class). | ||||||
| 
 | 
 | ||||||
|  | * **spilo_runasuser** | ||||||
|  |   sets the user ID which should be used in the container to run the process. | ||||||
|  |   This must be set to run the container without root. By default the container | ||||||
|  |   runs with root. This option only works for Spilo versions >= 1.6-p3. | ||||||
|  | 
 | ||||||
|  | * **spilo_runasgroup** | ||||||
|  |   sets the group ID which should be used in the container to run the process. | ||||||
|  |   This must be set to run the container without root. By default the container | ||||||
|  |   runs with root. This option only works for Spilo versions >= 1.6-p3. | ||||||
|  | 
 | ||||||
| * **spilo_fsgroup** | * **spilo_fsgroup** | ||||||
|   the Persistent Volumes for the Spilo pods in the StatefulSet will be owned and |   the Persistent Volumes for the Spilo pods in the StatefulSet will be owned and | ||||||
|   writable by the group ID specified. This is required to run Spilo as a |   writable by the group ID specified. This is required to run Spilo as a | ||||||
|  |  | ||||||
|  | @ -68,6 +68,8 @@ spec: | ||||||
| #          name: my-config-map | #          name: my-config-map | ||||||
| 
 | 
 | ||||||
|   enableShmVolume: true |   enableShmVolume: true | ||||||
|  | #  spiloRunAsUser: 101 | ||||||
|  | #  spiloRunAsGroup: 103 | ||||||
| #  spiloFSGroup: 103 | #  spiloFSGroup: 103 | ||||||
| #  podAnnotations: | #  podAnnotations: | ||||||
| #    annotation.key: value | #    annotation.key: value | ||||||
|  |  | ||||||
|  | @ -99,6 +99,8 @@ data: | ||||||
|   secret_name_template: "{username}.{cluster}.credentials" |   secret_name_template: "{username}.{cluster}.credentials" | ||||||
|   # sidecar_docker_images: "" |   # sidecar_docker_images: "" | ||||||
|   # set_memory_request_to_limit: "false" |   # set_memory_request_to_limit: "false" | ||||||
|  |   # spilo_runasuser: 101 | ||||||
|  |   # spilo_runasgroup: 103 | ||||||
|   # spilo_fsgroup: 103 |   # spilo_fsgroup: 103 | ||||||
|   spilo_privileged: "false" |   spilo_privileged: "false" | ||||||
|   # storage_resize_mode: "off" |   # storage_resize_mode: "off" | ||||||
|  |  | ||||||
|  | @ -196,6 +196,10 @@ spec: | ||||||
|                   type: string |                   type: string | ||||||
|                 secret_name_template: |                 secret_name_template: | ||||||
|                   type: string |                   type: string | ||||||
|  |                 spilo_runasuser: | ||||||
|  |                   type: integer | ||||||
|  |                 spilo_runasgroup: | ||||||
|  |                   type: integer | ||||||
|                 spilo_fsgroup: |                 spilo_fsgroup: | ||||||
|                   type: integer |                   type: integer | ||||||
|                 spilo_privileged: |                 spilo_privileged: | ||||||
|  |  | ||||||
|  | @ -68,6 +68,8 @@ configuration: | ||||||
|     # pod_service_account_role_binding_definition: "" |     # pod_service_account_role_binding_definition: "" | ||||||
|     pod_terminate_grace_period: 5m |     pod_terminate_grace_period: 5m | ||||||
|     secret_name_template: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}" |     secret_name_template: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}" | ||||||
|  |     # spilo_runasuser: 101 | ||||||
|  |     # spilo_runasgroup: 103 | ||||||
|     # spilo_fsgroup: 103 |     # spilo_fsgroup: 103 | ||||||
|     spilo_privileged: false |     spilo_privileged: false | ||||||
|     storage_resize_mode: ebs |     storage_resize_mode: ebs | ||||||
|  |  | ||||||
|  | @ -370,6 +370,10 @@ spec: | ||||||
|               items: |               items: | ||||||
|                 type: object |                 type: object | ||||||
|                 additionalProperties: true |                 additionalProperties: true | ||||||
|  |             spiloRunAsUser: | ||||||
|  |               type: integer | ||||||
|  |             spiloRunAsGroup: | ||||||
|  |               type: integer | ||||||
|             spiloFSGroup: |             spiloFSGroup: | ||||||
|               type: integer |               type: integer | ||||||
|             standby: |             standby: | ||||||
|  |  | ||||||
|  | @ -519,6 +519,12 @@ var PostgresCRDResourceValidation = apiextv1beta1.CustomResourceValidation{ | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
|  | 					"spiloRunAsUser": { | ||||||
|  | 						Type: "integer", | ||||||
|  | 					}, | ||||||
|  | 					"spiloRunAsGroup": { | ||||||
|  | 						Type: "integer", | ||||||
|  | 					}, | ||||||
| 					"spiloFSGroup": { | 					"spiloFSGroup": { | ||||||
| 						Type: "integer", | 						Type: "integer", | ||||||
| 					}, | 					}, | ||||||
|  | @ -1018,6 +1024,12 @@ var OperatorConfigCRDResourceValidation = apiextv1beta1.CustomResourceValidation | ||||||
| 							"secret_name_template": { | 							"secret_name_template": { | ||||||
| 								Type: "string", | 								Type: "string", | ||||||
| 							}, | 							}, | ||||||
|  | 							"spilo_runasuser": { | ||||||
|  | 								Type: "integer", | ||||||
|  | 							}, | ||||||
|  | 							"spilo_runasgroup": { | ||||||
|  | 								Type: "integer", | ||||||
|  | 							}, | ||||||
| 							"spilo_fsgroup": { | 							"spilo_fsgroup": { | ||||||
| 								Type: "integer", | 								Type: "integer", | ||||||
| 							}, | 							}, | ||||||
|  |  | ||||||
|  | @ -49,6 +49,8 @@ type KubernetesMetaConfiguration struct { | ||||||
| 	PodServiceAccountRoleBindingDefinition string                       `json:"pod_service_account_role_binding_definition,omitempty"` | 	PodServiceAccountRoleBindingDefinition string                       `json:"pod_service_account_role_binding_definition,omitempty"` | ||||||
| 	PodTerminateGracePeriod                Duration                     `json:"pod_terminate_grace_period,omitempty"` | 	PodTerminateGracePeriod                Duration                     `json:"pod_terminate_grace_period,omitempty"` | ||||||
| 	SpiloPrivileged                        bool                         `json:"spilo_privileged,omitempty"` | 	SpiloPrivileged                        bool                         `json:"spilo_privileged,omitempty"` | ||||||
|  | 	SpiloRunAsUser                         *int64                       `json:"spilo_runasuser,omitempty"` | ||||||
|  | 	SpiloRunAsGroup                        *int64                       `json:"spilo_runasgroup,omitempty"` | ||||||
| 	SpiloFSGroup                           *int64                       `json:"spilo_fsgroup,omitempty"` | 	SpiloFSGroup                           *int64                       `json:"spilo_fsgroup,omitempty"` | ||||||
| 	WatchedNamespace                       string                       `json:"watched_namespace,omitempty"` | 	WatchedNamespace                       string                       `json:"watched_namespace,omitempty"` | ||||||
| 	PDBNameFormat                          config.StringTemplate        `json:"pdb_name_format,omitempty"` | 	PDBNameFormat                          config.StringTemplate        `json:"pdb_name_format,omitempty"` | ||||||
|  |  | ||||||
|  | @ -35,6 +35,8 @@ type PostgresSpec struct { | ||||||
| 	TeamID      string `json:"teamId"` | 	TeamID      string `json:"teamId"` | ||||||
| 	DockerImage string `json:"dockerImage,omitempty"` | 	DockerImage string `json:"dockerImage,omitempty"` | ||||||
| 
 | 
 | ||||||
|  | 	SpiloRunAsUser  *int64 `json:"spiloRunAsUser,omitempty"` | ||||||
|  | 	SpiloRunAsGroup *int64 `json:"spiloRunAsGroup,omitempty"` | ||||||
| 	SpiloFSGroup    *int64 `json:"spiloFSGroup,omitempty"` | 	SpiloFSGroup    *int64 `json:"spiloFSGroup,omitempty"` | ||||||
| 
 | 
 | ||||||
| 	// vars that enable load balancers are pointers because it is important to know if any of them is omitted from the Postgres manifest
 | 	// vars that enable load balancers are pointers because it is important to know if any of them is omitted from the Postgres manifest
 | ||||||
|  |  | ||||||
|  | @ -147,6 +147,16 @@ func (in *ConnectionPoolerConfiguration) DeepCopy() *ConnectionPoolerConfigurati | ||||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 | ||||||
| func (in *KubernetesMetaConfiguration) DeepCopyInto(out *KubernetesMetaConfiguration) { | func (in *KubernetesMetaConfiguration) DeepCopyInto(out *KubernetesMetaConfiguration) { | ||||||
| 	*out = *in | 	*out = *in | ||||||
|  | 	if in.SpiloRunAsUser != nil { | ||||||
|  | 		in, out := &in.SpiloRunAsUser, &out.SpiloRunAsUser | ||||||
|  | 		*out = new(int64) | ||||||
|  | 		**out = **in | ||||||
|  | 	} | ||||||
|  | 	if in.SpiloRunAsGroup != nil { | ||||||
|  | 		in, out := &in.SpiloRunAsGroup, &out.SpiloRunAsGroup | ||||||
|  | 		*out = new(int64) | ||||||
|  | 		**out = **in | ||||||
|  | 	} | ||||||
| 	if in.SpiloFSGroup != nil { | 	if in.SpiloFSGroup != nil { | ||||||
| 		in, out := &in.SpiloFSGroup, &out.SpiloFSGroup | 		in, out := &in.SpiloFSGroup, &out.SpiloFSGroup | ||||||
| 		*out = new(int64) | 		*out = new(int64) | ||||||
|  | @ -527,6 +537,16 @@ func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec) { | ||||||
| 		*out = new(ConnectionPooler) | 		*out = new(ConnectionPooler) | ||||||
| 		(*in).DeepCopyInto(*out) | 		(*in).DeepCopyInto(*out) | ||||||
| 	} | 	} | ||||||
|  | 	if in.SpiloRunAsUser != nil { | ||||||
|  | 		in, out := &in.SpiloRunAsUser, &out.SpiloRunAsUser | ||||||
|  | 		*out = new(int64) | ||||||
|  | 		**out = **in | ||||||
|  | 	} | ||||||
|  | 	if in.SpiloRunAsGroup != nil { | ||||||
|  | 		in, out := &in.SpiloRunAsGroup, &out.SpiloRunAsGroup | ||||||
|  | 		*out = new(int64) | ||||||
|  | 		**out = **in | ||||||
|  | 	} | ||||||
| 	if in.SpiloFSGroup != nil { | 	if in.SpiloFSGroup != nil { | ||||||
| 		in, out := &in.SpiloFSGroup, &out.SpiloFSGroup | 		in, out := &in.SpiloFSGroup, &out.SpiloFSGroup | ||||||
| 		*out = new(int64) | 		*out = new(int64) | ||||||
|  |  | ||||||
|  | @ -557,6 +557,8 @@ func (c *Cluster) generatePodTemplate( | ||||||
| 	initContainers []v1.Container, | 	initContainers []v1.Container, | ||||||
| 	sidecarContainers []v1.Container, | 	sidecarContainers []v1.Container, | ||||||
| 	tolerationsSpec *[]v1.Toleration, | 	tolerationsSpec *[]v1.Toleration, | ||||||
|  | 	spiloRunAsUser *int64, | ||||||
|  | 	spiloRunAsGroup *int64, | ||||||
| 	spiloFSGroup *int64, | 	spiloFSGroup *int64, | ||||||
| 	nodeAffinity *v1.Affinity, | 	nodeAffinity *v1.Affinity, | ||||||
| 	terminateGracePeriod int64, | 	terminateGracePeriod int64, | ||||||
|  | @ -576,6 +578,14 @@ func (c *Cluster) generatePodTemplate( | ||||||
| 	containers = append(containers, sidecarContainers...) | 	containers = append(containers, sidecarContainers...) | ||||||
| 	securityContext := v1.PodSecurityContext{} | 	securityContext := v1.PodSecurityContext{} | ||||||
| 
 | 
 | ||||||
|  | 	if spiloRunAsUser != nil { | ||||||
|  | 		securityContext.RunAsUser = spiloRunAsUser | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if spiloRunAsGroup != nil { | ||||||
|  | 		securityContext.RunAsGroup = spiloRunAsGroup | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	if spiloFSGroup != nil { | 	if spiloFSGroup != nil { | ||||||
| 		securityContext.FSGroup = spiloFSGroup | 		securityContext.FSGroup = spiloFSGroup | ||||||
| 	} | 	} | ||||||
|  | @ -1073,7 +1083,17 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef | ||||||
| 	// pickup the docker image for the spilo container
 | 	// pickup the docker image for the spilo container
 | ||||||
| 	effectiveDockerImage := util.Coalesce(spec.DockerImage, c.OpConfig.DockerImage) | 	effectiveDockerImage := util.Coalesce(spec.DockerImage, c.OpConfig.DockerImage) | ||||||
| 
 | 
 | ||||||
| 	// determine the FSGroup for the spilo pod
 | 	// determine the User, Group and FSGroup for the spilo pod
 | ||||||
|  | 	effectiveRunAsUser := c.OpConfig.Resources.SpiloRunAsUser | ||||||
|  | 	if spec.SpiloRunAsUser != nil { | ||||||
|  | 		effectiveRunAsUser = spec.SpiloRunAsUser | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	effectiveRunAsGroup := c.OpConfig.Resources.SpiloRunAsGroup | ||||||
|  | 	if spec.SpiloRunAsGroup != nil { | ||||||
|  | 		effectiveRunAsGroup = spec.SpiloRunAsGroup | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	effectiveFSGroup := c.OpConfig.Resources.SpiloFSGroup | 	effectiveFSGroup := c.OpConfig.Resources.SpiloFSGroup | ||||||
| 	if spec.SpiloFSGroup != nil { | 	if spec.SpiloFSGroup != nil { | ||||||
| 		effectiveFSGroup = spec.SpiloFSGroup | 		effectiveFSGroup = spec.SpiloFSGroup | ||||||
|  | @ -1217,6 +1237,8 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef | ||||||
| 		initContainers, | 		initContainers, | ||||||
| 		sidecarContainers, | 		sidecarContainers, | ||||||
| 		&tolerationSpec, | 		&tolerationSpec, | ||||||
|  | 		effectiveRunAsUser, | ||||||
|  | 		effectiveRunAsGroup, | ||||||
| 		effectiveFSGroup, | 		effectiveFSGroup, | ||||||
| 		nodeAffinity(c.OpConfig.NodeReadinessLabel), | 		nodeAffinity(c.OpConfig.NodeReadinessLabel), | ||||||
| 		int64(c.OpConfig.PodTerminateGracePeriod.Seconds()), | 		int64(c.OpConfig.PodTerminateGracePeriod.Seconds()), | ||||||
|  | @ -1897,6 +1919,8 @@ func (c *Cluster) generateLogicalBackupJob() (*batchv1beta1.CronJob, error) { | ||||||
| 		[]v1.Container{}, | 		[]v1.Container{}, | ||||||
| 		&[]v1.Toleration{}, | 		&[]v1.Toleration{}, | ||||||
| 		nil, | 		nil, | ||||||
|  | 		nil, | ||||||
|  | 		nil, | ||||||
| 		nodeAffinity(c.OpConfig.NodeReadinessLabel), | 		nodeAffinity(c.OpConfig.NodeReadinessLabel), | ||||||
| 		int64(c.OpConfig.PodTerminateGracePeriod.Seconds()), | 		int64(c.OpConfig.PodTerminateGracePeriod.Seconds()), | ||||||
| 		c.OpConfig.PodServiceAccountName, | 		c.OpConfig.PodServiceAccountName, | ||||||
|  |  | ||||||
|  | @ -1302,6 +1302,8 @@ func TestTLS(t *testing.T) { | ||||||
| 	var err error | 	var err error | ||||||
| 	var spec acidv1.PostgresSpec | 	var spec acidv1.PostgresSpec | ||||||
| 	var cluster *Cluster | 	var cluster *Cluster | ||||||
|  | 	var spiloRunAsUser = int64(101) | ||||||
|  | 	var spiloRunAsGroup = int64(103) | ||||||
| 	var spiloFSGroup = int64(103) | 	var spiloFSGroup = int64(103) | ||||||
| 	var additionalVolumes = spec.AdditionalVolumes | 	var additionalVolumes = spec.AdditionalVolumes | ||||||
| 
 | 
 | ||||||
|  | @ -1329,6 +1331,8 @@ func TestTLS(t *testing.T) { | ||||||
| 					ReplicationUsername: replicationUserName, | 					ReplicationUsername: replicationUserName, | ||||||
| 				}, | 				}, | ||||||
| 				Resources: config.Resources{ | 				Resources: config.Resources{ | ||||||
|  | 					SpiloRunAsUser:  &spiloRunAsUser, | ||||||
|  | 					SpiloRunAsGroup: &spiloRunAsGroup, | ||||||
| 					SpiloFSGroup:    &spiloFSGroup, | 					SpiloFSGroup:    &spiloFSGroup, | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
|  |  | ||||||
|  | @ -61,6 +61,8 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur | ||||||
| 	result.PodEnvironmentSecret = fromCRD.Kubernetes.PodEnvironmentSecret | 	result.PodEnvironmentSecret = fromCRD.Kubernetes.PodEnvironmentSecret | ||||||
| 	result.PodTerminateGracePeriod = util.CoalesceDuration(time.Duration(fromCRD.Kubernetes.PodTerminateGracePeriod), "5m") | 	result.PodTerminateGracePeriod = util.CoalesceDuration(time.Duration(fromCRD.Kubernetes.PodTerminateGracePeriod), "5m") | ||||||
| 	result.SpiloPrivileged = fromCRD.Kubernetes.SpiloPrivileged | 	result.SpiloPrivileged = fromCRD.Kubernetes.SpiloPrivileged | ||||||
|  | 	result.SpiloRunAsUser = fromCRD.Kubernetes.SpiloRunAsUser | ||||||
|  | 	result.SpiloRunAsGroup = fromCRD.Kubernetes.SpiloRunAsGroup | ||||||
| 	result.SpiloFSGroup = fromCRD.Kubernetes.SpiloFSGroup | 	result.SpiloFSGroup = fromCRD.Kubernetes.SpiloFSGroup | ||||||
| 	result.ClusterDomain = util.Coalesce(fromCRD.Kubernetes.ClusterDomain, "cluster.local") | 	result.ClusterDomain = util.Coalesce(fromCRD.Kubernetes.ClusterDomain, "cluster.local") | ||||||
| 	result.WatchedNamespace = fromCRD.Kubernetes.WatchedNamespace | 	result.WatchedNamespace = fromCRD.Kubernetes.WatchedNamespace | ||||||
|  |  | ||||||
|  | @ -28,6 +28,8 @@ type Resources struct { | ||||||
| 	PodLabelWaitTimeout     time.Duration       `name:"pod_label_wait_timeout" default:"10m"` | 	PodLabelWaitTimeout     time.Duration       `name:"pod_label_wait_timeout" default:"10m"` | ||||||
| 	PodDeletionWaitTimeout  time.Duration       `name:"pod_deletion_wait_timeout" default:"10m"` | 	PodDeletionWaitTimeout  time.Duration       `name:"pod_deletion_wait_timeout" default:"10m"` | ||||||
| 	PodTerminateGracePeriod time.Duration       `name:"pod_terminate_grace_period" default:"5m"` | 	PodTerminateGracePeriod time.Duration       `name:"pod_terminate_grace_period" default:"5m"` | ||||||
|  | 	SpiloRunAsUser          *int64              `json:"spilo_runasuser,omitempty"` | ||||||
|  | 	SpiloRunAsGroup         *int64              `json:"spilo_runasgroup,omitempty"` | ||||||
| 	SpiloFSGroup            *int64              `name:"spilo_fsgroup"` | 	SpiloFSGroup            *int64              `name:"spilo_fsgroup"` | ||||||
| 	PodPriorityClassName    string              `name:"pod_priority_class_name"` | 	PodPriorityClassName    string              `name:"pod_priority_class_name"` | ||||||
| 	ClusterDomain           string              `name:"cluster_domain" default:"cluster.local"` | 	ClusterDomain           string              `name:"cluster_domain" default:"cluster.local"` | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue