From 9c8e9a9a0fc584012b6ff46ade7e508104e7d6ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Bry=C5=84ski?= Date: Tue, 18 Dec 2018 19:06:34 +0100 Subject: [PATCH] [incubator/cassandra] Ability to override Cassandra configuration files and docker command (#8376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix Statefulset definition Signed-off-by: Maciej Bryński * Ability to overrides config files and docker command Signed-off-by: Maciej Bryński * Bump Chart version Signed-off-by: Maciej Bryński * Fix newline Signed-off-by: Maciej Bryński * Fix Signed-off-by: Maciej Bryński --- incubator/cassandra/Chart.yaml | 2 +- incubator/cassandra/README.md | 3 +++ incubator/cassandra/templates/configmap.yaml | 14 +++++++++++++ .../cassandra/templates/statefulset.yaml | 20 ++++++++++++++++++- incubator/cassandra/values.yaml | 9 +++++++++ 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 incubator/cassandra/templates/configmap.yaml diff --git a/incubator/cassandra/Chart.yaml b/incubator/cassandra/Chart.yaml index 000bf0afbb..2ab671bd09 100644 --- a/incubator/cassandra/Chart.yaml +++ b/incubator/cassandra/Chart.yaml @@ -1,5 +1,5 @@ name: cassandra -version: 0.9.5 +version: 0.10.0 appVersion: 3.11.3 description: Apache Cassandra is a free and open-source distributed database management system designed to handle large amounts of data across many commodity servers, providing diff --git a/incubator/cassandra/README.md b/incubator/cassandra/README.md index a6f89d16ba..bba89615b2 100644 --- a/incubator/cassandra/README.md +++ b/incubator/cassandra/README.md @@ -98,6 +98,9 @@ The following table lists the configurable parameters of the Cassandra chart and | `config.ports.thrift` | Initdb Arguments | `9160` | | `config.ports.agent` | The port of the JVM Agent (if any) | `nil` | | `config.start_rpc` | Initdb Arguments | `false` | +| `configOverrides` | Overrides config files in /etc/cassandra dir | `{}` | +| `commandOverrides` | Overrides default docker command | `[]` | +| `argsOverrides` | Overrides default docker args | `[]` | | `env` | Custom env variables | `{}` | | `persistence.enabled` | Use a PVC to persist data | `true` | | `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) | diff --git a/incubator/cassandra/templates/configmap.yaml b/incubator/cassandra/templates/configmap.yaml new file mode 100644 index 0000000000..4e5ab76d6c --- /dev/null +++ b/incubator/cassandra/templates/configmap.yaml @@ -0,0 +1,14 @@ +{{- if .Values.configOverrides }} +kind: ConfigMap +apiVersion: v1 +metadata: + name: {{ template "cassandra.name" . }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ template "cassandra.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: +{{ toYaml .Values.configOverrides | indent 2 }} +{{- end }} diff --git a/incubator/cassandra/templates/statefulset.yaml b/incubator/cassandra/templates/statefulset.yaml index a447ba34bf..412a4cbcf2 100644 --- a/incubator/cassandra/templates/statefulset.yaml +++ b/incubator/cassandra/templates/statefulset.yaml @@ -74,6 +74,12 @@ spec: - name: {{ template "cassandra.fullname" . }} image: "{{ .Values.image.repo }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy | quote }} +{{- if .Values.commandOverrides }} + command: {{ .Values.commandOverrides }} +{{- end }} +{{- if .Values.argsOverrides }} + args: {{ .Values.argsOverrides }} +{{- end }} resources: {{ toYaml .Values.resources | indent 10 }} env: @@ -137,6 +143,11 @@ spec: volumeMounts: - name: data mountPath: /var/lib/cassandra +{{- range $key, $value := .Values.configOverrides }} + - name: cassandra-config-{{ $key | replace "." "-" }} + mountPath: /etc/cassandra/{{ $key }} + subPath: {{ $key }} +{{- end }} {{- if not .Values.persistence.enabled }} lifecycle: preStop: @@ -148,8 +159,15 @@ spec: imagePullSecrets: - name: {{ .Values.image.pullSecrets }} {{- end }} -{{- if not .Values.persistence.enabled }} +{{- if or .Values.configOverrides (not .Values.persistence.enabled) }} volumes: +{{- end }} +{{- range $key, $value := .Values.configOverrides }} + - configMap: + name: cassandra + name: cassandra-config-{{ $key | replace "." "-" }} +{{- end }} +{{- if not .Values.persistence.enabled }} - name: data emptyDir: {} {{- else }} diff --git a/incubator/cassandra/values.yaml b/incubator/cassandra/values.yaml index 9beb181b68..7caaaa128e 100644 --- a/incubator/cassandra/values.yaml +++ b/incubator/cassandra/values.yaml @@ -67,6 +67,15 @@ config: # If a JVM Agent is in place # agent: 61621 +## Cassandra config files overrides +configOverrides: {} + +## Cassandra docker command overrides +commandOverrides: [] + +## Cassandra docker args overrides +argsOverrides: [] + ## Custom env variables. ## ref: https://hub.docker.com/_/cassandra/ env: {}