Introduce crds directory for compatibility with Helm v3 (#738)
* Introduce crds directory for compatibility with Helm v3 This commit introduce a crd directory for the helm chart which has all custom resource definitions. The files in the crd directory is plain YAML. The crds got the label `app.kubernetes.io/name: postgres-operator` and removes all the templating. Helm v3 ignores the objects from the `templates` directory which have a `crd-install` hook. This commit addes templates/crds.yaml which generates YAMLs for CRDs. The hooks from these CRDs are detected by Helm v2 as well as v3. Helm v2 executes the hook and Helm v3 ignores the hook (YAML files are not applied) The approach is inspired by the prometheus-operator chart helm/charts@89b233eef6
This commit is contained in:
parent
5f87384d7f
commit
052940862a
|
|
@ -0,0 +1,41 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: operatorconfigurations.acid.zalan.do
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: postgres-operator
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": crd-install
|
||||||
|
spec:
|
||||||
|
group: acid.zalan.do
|
||||||
|
names:
|
||||||
|
kind: OperatorConfiguration
|
||||||
|
listKind: OperatorConfigurationList
|
||||||
|
plural: operatorconfigurations
|
||||||
|
singular: operatorconfiguration
|
||||||
|
shortNames:
|
||||||
|
- opconfig
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: Image
|
||||||
|
type: string
|
||||||
|
description: Spilo image to be used for Pods
|
||||||
|
JSONPath: .configuration.docker_image
|
||||||
|
- name: Cluster-Label
|
||||||
|
type: string
|
||||||
|
description: Label for K8s resources created by operator
|
||||||
|
JSONPath: .configuration.kubernetes.cluster_name_label
|
||||||
|
- name: Service-Account
|
||||||
|
type: string
|
||||||
|
description: Name of service account to be used
|
||||||
|
JSONPath: .configuration.kubernetes.pod_service_account_name
|
||||||
|
- name: Min-Instances
|
||||||
|
type: integer
|
||||||
|
description: Minimum number of instances per Postgres cluster
|
||||||
|
JSONPath: .configuration.min_instances
|
||||||
|
- name: Age
|
||||||
|
type: date
|
||||||
|
JSONPath: .metadata.creationTimestamp
|
||||||
|
scope: Namespaced
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
version: v1
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: postgresqls.acid.zalan.do
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: postgres-operator
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": crd-install
|
||||||
|
spec:
|
||||||
|
group: acid.zalan.do
|
||||||
|
names:
|
||||||
|
kind: postgresql
|
||||||
|
listKind: postgresqlList
|
||||||
|
plural: postgresqls
|
||||||
|
singular: postgresql
|
||||||
|
shortNames:
|
||||||
|
- pg
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: Team
|
||||||
|
type: string
|
||||||
|
description: Team responsible for Postgres CLuster
|
||||||
|
JSONPath: .spec.teamId
|
||||||
|
- name: Version
|
||||||
|
type: string
|
||||||
|
description: PostgreSQL version
|
||||||
|
JSONPath: .spec.postgresql.version
|
||||||
|
- name: Pods
|
||||||
|
type: integer
|
||||||
|
description: Number of Pods per Postgres cluster
|
||||||
|
JSONPath: .spec.numberOfInstances
|
||||||
|
- name: Volume
|
||||||
|
type: string
|
||||||
|
description: Size of the bound volume
|
||||||
|
JSONPath: .spec.volume.size
|
||||||
|
- name: CPU-Request
|
||||||
|
type: string
|
||||||
|
description: Requested CPU for Postgres containers
|
||||||
|
JSONPath: .spec.resources.requests.cpu
|
||||||
|
- name: Memory-Request
|
||||||
|
type: string
|
||||||
|
description: Requested memory for Postgres containers
|
||||||
|
JSONPath: .spec.resources.requests.memory
|
||||||
|
- name: Age
|
||||||
|
type: date
|
||||||
|
JSONPath: .metadata.creationTimestamp
|
||||||
|
- name: Status
|
||||||
|
type: string
|
||||||
|
description: Current sync status of postgresql resource
|
||||||
|
JSONPath: .status.PostgresClusterStatus
|
||||||
|
scope: Namespaced
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
version: v1
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{{ if .Values.crd.create }}
|
||||||
|
{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }}
|
||||||
|
{{ $.Files.Get $path }}
|
||||||
|
---
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
{{ if .Values.crd.create }}
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: postgresqls.acid.zalan.do
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ template "postgres-operator.name" . }}
|
|
||||||
helm.sh/chart: {{ template "postgres-operator.chart" . }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: acid.zalan.do
|
|
||||||
names:
|
|
||||||
kind: postgresql
|
|
||||||
listKind: postgresqlList
|
|
||||||
plural: postgresqls
|
|
||||||
singular: postgresql
|
|
||||||
shortNames:
|
|
||||||
- pg
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: Team
|
|
||||||
type: string
|
|
||||||
description: Team responsible for Postgres CLuster
|
|
||||||
JSONPath: .spec.teamId
|
|
||||||
- name: Version
|
|
||||||
type: string
|
|
||||||
description: PostgreSQL version
|
|
||||||
JSONPath: .spec.postgresql.version
|
|
||||||
- name: Pods
|
|
||||||
type: integer
|
|
||||||
description: Number of Pods per Postgres cluster
|
|
||||||
JSONPath: .spec.numberOfInstances
|
|
||||||
- name: Volume
|
|
||||||
type: string
|
|
||||||
description: Size of the bound volume
|
|
||||||
JSONPath: .spec.volume.size
|
|
||||||
- name: CPU-Request
|
|
||||||
type: string
|
|
||||||
description: Requested CPU for Postgres containers
|
|
||||||
JSONPath: .spec.resources.requests.cpu
|
|
||||||
- name: Memory-Request
|
|
||||||
type: string
|
|
||||||
description: Requested memory for Postgres containers
|
|
||||||
JSONPath: .spec.resources.requests.memory
|
|
||||||
- name: Age
|
|
||||||
type: date
|
|
||||||
JSONPath: .metadata.creationTimestamp
|
|
||||||
- name: Status
|
|
||||||
type: string
|
|
||||||
description: Current sync status of postgresql resource
|
|
||||||
JSONPath: .status.PostgresClusterStatus
|
|
||||||
scope: Namespaced
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
version: v1
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: operatorconfigurations.acid.zalan.do
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ template "postgres-operator.name" . }}
|
|
||||||
helm.sh/chart: {{ template "postgres-operator.chart" . }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: acid.zalan.do
|
|
||||||
names:
|
|
||||||
kind: OperatorConfiguration
|
|
||||||
listKind: OperatorConfigurationList
|
|
||||||
plural: operatorconfigurations
|
|
||||||
singular: operatorconfiguration
|
|
||||||
shortNames:
|
|
||||||
- opconfig
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: Image
|
|
||||||
type: string
|
|
||||||
description: Spilo image to be used for Pods
|
|
||||||
JSONPath: .configuration.docker_image
|
|
||||||
- name: Cluster-Label
|
|
||||||
type: string
|
|
||||||
description: Label for K8s resources created by operator
|
|
||||||
JSONPath: .configuration.kubernetes.cluster_name_label
|
|
||||||
- name: Service-Account
|
|
||||||
type: string
|
|
||||||
description: Name of service account to be used
|
|
||||||
JSONPath: .configuration.kubernetes.pod_service_account_name
|
|
||||||
- name: Min-Instances
|
|
||||||
type: integer
|
|
||||||
description: Minimum number of instances per Postgres cluster
|
|
||||||
JSONPath: .configuration.min_instances
|
|
||||||
- name: Age
|
|
||||||
type: date
|
|
||||||
JSONPath: .metadata.creationTimestamp
|
|
||||||
scope: Namespaced
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
version: v1
|
|
||||||
{{ end }}
|
|
||||||
|
|
@ -73,22 +73,22 @@ manifest.
|
||||||
### Helm chart
|
### Helm chart
|
||||||
|
|
||||||
Alternatively, the operator can be installed by using the provided [Helm](https://helm.sh/)
|
Alternatively, the operator can be installed by using the provided [Helm](https://helm.sh/)
|
||||||
chart which saves you the manual steps. Therefore, install the helm CLI on your
|
chart which saves you the manual steps. Clone this repo and change directory to
|
||||||
machine. After initializing helm (and its server component Tiller) in your local
|
the repo root. With Helm v3 installed you should be able to run:
|
||||||
cluster you can install the operator chart. You can define a release name that
|
|
||||||
is prepended to the operator resource's names.
|
|
||||||
|
|
||||||
Use `--name zalando` to match with the default service account name as older
|
|
||||||
operator versions do not support custom names for service accounts. To use
|
|
||||||
CRD-based configuration you need to specify the [values-crd yaml file](../charts/postgres-operator/values-crd.yaml).
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1) initialize helm
|
helm install postgres-operator ./charts/postgres-operator
|
||||||
helm init
|
|
||||||
# 2) install postgres-operator chart
|
|
||||||
helm install --name zalando ./charts/postgres-operator
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To use CRD-based configuration you need to specify the [values-crd yaml file](../charts/postgres-operator/values-crd.yaml).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm install postgres-operator ./charts/postgres-operator -f ./charts/postgres-operator/values-crd.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
The chart works with both Helm 2 and Helm 3. Documentation for installing
|
||||||
|
applications with helm2 can be found in the [helm2 docs](https://v2.helm.sh/docs/).
|
||||||
|
|
||||||
### Operator Lifecycle Manager (OLM)
|
### Operator Lifecycle Manager (OLM)
|
||||||
|
|
||||||
The [Operator Lifecycle Manager (OLM)](https://github.com/operator-framework/operator-lifecycle-manager)
|
The [Operator Lifecycle Manager (OLM)](https://github.com/operator-framework/operator-lifecycle-manager)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue