Skip to content

Commit 3544cc9

Browse files
redbaronsdudoladov
authored andcommitted
Allow specifying init_containers in Postgres CRD (zalando#445)
* Add support for init_containers
1 parent 6f6a599 commit 3544cc9

29 files changed

+71
-25
lines changed

docs/user.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,32 @@ are always passed to sidecars:
273273

274274
The PostgreSQL volume is shared with sidecars and is mounted at `/home/postgres/pgdata`.
275275

276+
277+
## InitContainers Support
278+
279+
Each cluster can specify arbitrary init containers to run. These containers can be
280+
used to run custom actions before any normal and sidecar containers start.
281+
An init container can be specified like this:
282+
283+
```yaml
284+
apiVersion: "acid.zalan.do/v1"
285+
kind: postgresql
286+
287+
metadata:
288+
name: acid-minimal-cluster
289+
spec:
290+
...
291+
init_containers:
292+
- name: "container-name"
293+
image: "company/image:tag"
294+
env:
295+
- name: "ENV_VAR_NAME"
296+
value: "any-k8s-env-things"
297+
```
298+
299+
`init_containers` accepts full `v1.Container` definition.
300+
301+
276302
## Increase volume size
277303

278304
PostgreSQL operator supports statefulset volume resize if you're using the

manifests/complete-postgres-manifest.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ kind: postgresql
44
metadata:
55
name: acid-test-cluster
66
spec:
7+
init_containers:
8+
- name: date
9+
image: busybox
10+
command: [ "/bin/date" ]
711
teamId: "ACID"
812
volume:
913
size: 1Gi

pkg/apis/acid.zalan.do/v1/postgresql_type.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type PostgresSpec struct {
5151
Databases map[string]string `json:"databases,omitempty"`
5252
Tolerations []v1.Toleration `json:"tolerations,omitempty"`
5353
Sidecars []Sidecar `json:"sidecars,omitempty"`
54+
InitContainers []v1.Container `json:"init_containers,omitempty"`
5455
PodPriorityClassName string `json:"pod_priority_class_name,omitempty"`
5556
ShmVolume *bool `json:"enableShmVolume,omitempty"`
5657
}

pkg/apis/acid.zalan.do/v1/zz_generated.deepcopy.go

Lines changed: 13 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cluster/k8sres.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ func generatePodTemplate(
410410
namespace string,
411411
labels labels.Set,
412412
spiloContainer *v1.Container,
413+
initContainers []v1.Container,
413414
sidecarContainers []v1.Container,
414415
tolerationsSpec *[]v1.Toleration,
415416
nodeAffinity *v1.Affinity,
@@ -428,6 +429,7 @@ func generatePodTemplate(
428429
ServiceAccountName: podServiceAccountName,
429430
TerminationGracePeriodSeconds: &terminateGracePeriodSeconds,
430431
Containers: containers,
432+
InitContainers: initContainers,
431433
Tolerations: *tolerationsSpec,
432434
}
433435

@@ -803,6 +805,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*v1beta1.State
803805
c.Namespace,
804806
c.labelsSet(true),
805807
spiloContainer,
808+
spec.InitContainers,
806809
sidecarContainers,
807810
&tolerationSpec,
808811
nodeAffinity(c.OpConfig.NodeReadinessLabel),

pkg/generated/clientset/versioned/clientset.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/doc.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/fake/clientset_generated.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/fake/doc.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/fake/register.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/scheme/doc.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/scheme/register.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/acid.zalan.do_client.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/doc.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/fake/doc.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/fake/fake_acid.zalan.do_client.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/fake/fake_operatorconfiguration.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/fake/fake_postgresql.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/generated_expansion.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/operatorconfiguration.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/postgresql.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/informers/externalversions/acid.zalan.do/interface.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/informers/externalversions/acid.zalan.do/v1/interface.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/informers/externalversions/acid.zalan.do/v1/postgresql.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/informers/externalversions/factory.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/informers/externalversions/generic.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/listers/acid.zalan.do/v1/expansion_generated.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/generated/listers/acid.zalan.do/v1/postgresql.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)