Allow specifying init_containers in Postgres CRD (#445)
* Add support for init_containers
This commit is contained in:
		
							parent
							
								
									6f6a599c90
								
							
						
					
					
						commit
						3544cc90fa
					
				
							
								
								
									
										26
									
								
								docs/user.md
								
								
								
								
							
							
						
						
									
										26
									
								
								docs/user.md
								
								
								
								
							|  | @ -273,6 +273,32 @@ are always passed to sidecars: | |||
| 
 | ||||
| The PostgreSQL volume is shared with sidecars and is mounted at `/home/postgres/pgdata`. | ||||
| 
 | ||||
| 
 | ||||
| ## InitContainers Support | ||||
| 
 | ||||
| Each cluster can specify arbitrary init containers to run. These containers can be | ||||
| used to run custom actions before any normal and sidecar containers start. | ||||
| An init container can be specified like this: | ||||
| 
 | ||||
| ```yaml | ||||
| apiVersion: "acid.zalan.do/v1" | ||||
| kind: postgresql | ||||
| 
 | ||||
| metadata: | ||||
|   name: acid-minimal-cluster | ||||
| spec: | ||||
|   ... | ||||
|   init_containers: | ||||
|     - name: "container-name" | ||||
|       image: "company/image:tag" | ||||
|       env: | ||||
|         - name: "ENV_VAR_NAME" | ||||
|           value: "any-k8s-env-things" | ||||
| ``` | ||||
| 
 | ||||
| `init_containers` accepts full `v1.Container` definition. | ||||
| 
 | ||||
| 
 | ||||
| ## Increase volume size | ||||
| 
 | ||||
| PostgreSQL operator supports statefulset volume resize if you're using the | ||||
|  |  | |||
|  | @ -4,6 +4,10 @@ kind: postgresql | |||
| metadata: | ||||
|   name: acid-test-cluster | ||||
| spec: | ||||
|   init_containers: | ||||
|   - name: date | ||||
|     image: busybox | ||||
|     command: [ "/bin/date" ] | ||||
|   teamId: "ACID" | ||||
|   volume: | ||||
|     size: 1Gi | ||||
|  |  | |||
|  | @ -51,6 +51,7 @@ type PostgresSpec struct { | |||
| 	Databases            map[string]string    `json:"databases,omitempty"` | ||||
| 	Tolerations          []v1.Toleration      `json:"tolerations,omitempty"` | ||||
| 	Sidecars             []Sidecar            `json:"sidecars,omitempty"` | ||||
| 	InitContainers       []v1.Container       `json:"init_containers,omitempty"` | ||||
| 	PodPriorityClassName string               `json:"pod_priority_class_name,omitempty"` | ||||
| 	ShmVolume            *bool                `json:"enableShmVolume,omitempty"` | ||||
| } | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| // +build !ignore_autogenerated
 | ||||
| 
 | ||||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  | @ -442,6 +442,18 @@ func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec) { | |||
| 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||
| 		} | ||||
| 	} | ||||
| 	if in.InitContainers != nil { | ||||
| 		in, out := &in.InitContainers, &out.InitContainers | ||||
| 		*out = make([]corev1.Container, len(*in)) | ||||
| 		for i := range *in { | ||||
| 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||
| 		} | ||||
| 	} | ||||
| 	if in.ShmVolume != nil { | ||||
| 		in, out := &in.ShmVolume, &out.ShmVolume | ||||
| 		*out = new(bool) | ||||
| 		**out = **in | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -410,6 +410,7 @@ func generatePodTemplate( | |||
| 	namespace string, | ||||
| 	labels labels.Set, | ||||
| 	spiloContainer *v1.Container, | ||||
| 	initContainers []v1.Container, | ||||
| 	sidecarContainers []v1.Container, | ||||
| 	tolerationsSpec *[]v1.Toleration, | ||||
| 	nodeAffinity *v1.Affinity, | ||||
|  | @ -428,6 +429,7 @@ func generatePodTemplate( | |||
| 		ServiceAccountName:            podServiceAccountName, | ||||
| 		TerminationGracePeriodSeconds: &terminateGracePeriodSeconds, | ||||
| 		Containers:                    containers, | ||||
| 		InitContainers:                initContainers, | ||||
| 		Tolerations:                   *tolerationsSpec, | ||||
| 	} | ||||
| 
 | ||||
|  | @ -803,6 +805,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*v1beta1.State | |||
| 		c.Namespace, | ||||
| 		c.labelsSet(true), | ||||
| 		spiloContainer, | ||||
| 		spec.InitContainers, | ||||
| 		sidecarContainers, | ||||
| 		&tolerationSpec, | ||||
| 		nodeAffinity(c.OpConfig.NodeReadinessLabel), | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
| Copyright 2018 Compose, Zalando SE | ||||
| Copyright 2019 Compose, Zalando SE | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue