From 9708e84c3fab687b4d2a7f0b356eeb998f805036 Mon Sep 17 00:00:00 2001 From: Javier Salmeron Garcia Date: Thu, 29 Aug 2019 16:28:14 +0200 Subject: [PATCH 1/2] [bitnami/cassandra] Allow setting custom entrypoint and cmd Signed-off-by: Javier Salmeron Garcia --- bitnami/cassandra/Chart.yaml | 2 +- bitnami/cassandra/README.md | 3 +++ bitnami/cassandra/templates/statefulset.yaml | 9 +++++---- bitnami/cassandra/values.yaml | 3 +++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/bitnami/cassandra/Chart.yaml b/bitnami/cassandra/Chart.yaml index c0a3180f9..7ae5200d9 100644 --- a/bitnami/cassandra/Chart.yaml +++ b/bitnami/cassandra/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: cassandra -version: 3.3.2 +version: 3.4.0 appVersion: 3.11.4 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 high availability with no single point of failure. Cassandra offers robust support for clusters spanning multiple datacenters, with asynchronous masterless replication allowing low latency operations for all clients. icon: https://bitnami.com/assets/stacks/cassandra/img/cassandra-stack-220x234.png diff --git a/bitnami/cassandra/README.md b/bitnami/cassandra/README.md index b3055e4a6..14a771c1b 100644 --- a/bitnami/cassandra/README.md +++ b/bitnami/cassandra/README.md @@ -59,6 +59,9 @@ The following tables lists the configurable parameters of the cassandra chart an | `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | | `nameOverride` | String to partially override cassandra.fullname template with a string (will prepend the release name) | `nil` | | `fullnameOverride` | String to fully override cassandra.fullname template with a string | `nil` | +| `entrypoint` | Cassandra container entrypoint (in case you want to use a different image) | `/app-entrypoint.sh` | +| `cmd` | Cassandra container cmd (in case you want to use a different image) | `/run.sh` | + | `volumePermissions.enabled` | Enable init container that changes volume permissions in the data directory (for cases where the default k8s `runAsUser` and `fsUser` values do not work) | `false` | | `volumePermissions.image.registry` | Init container volume-permissions image registry | `docker.io` | | `volumePermissions.image.repository` | Init container volume-permissions image name | `bitnami/minideb` | diff --git a/bitnami/cassandra/templates/statefulset.yaml b/bitnami/cassandra/templates/statefulset.yaml index 5ad696dca..640f81cc9 100644 --- a/bitnami/cassandra/templates/statefulset.yaml +++ b/bitnami/cassandra/templates/statefulset.yaml @@ -85,17 +85,18 @@ spec: # Only node 0 will execute the startup initdb scripts export CASSANDRA_IGNORE_INITDB_SCRIPTS=1 fi - /app-entrypoint.sh /run.sh + {{- $domain := .Values.cluster.domain }} + export CASSANDRA_HOST="${HOSTNAME}.{{ template "cassandra.fullname" . }}-headless.{{ .Release.Namespace }}.svc.{{ $domain }}" + {{ .Values.entrypoint }} {{ .Values.cmd }} image: {{ template "cassandra.image" . }} imagePullPolicy: {{ .Values.image.pullPolicy | quote }} resources: {{ toYaml .Values.resources | nindent 10 }} env: - name: CASSANDRA_CLUSTER_NAME value: {{ .Values.cluster.name }} +{{- $global := . }} +{{- $replicas := .Values.cluster.seedCount | int }} - name: CASSANDRA_SEEDS - {{- $global := . }} - {{- $replicas := .Values.cluster.seedCount | int }} - {{- $domain := .Values.cluster.domain }} value: "{{- range $i, $e := until $replicas }}{{ template "cassandra.fullname" $global }}-{{ $i }}.{{ template "cassandra.fullname" $global }}-headless.{{ $global.Release.Namespace }}.svc.{{ $domain }}{{- if (lt ( add1 $i ) $replicas ) }},{{- end }}{{- end }}" - name: CASSANDRA_PASSWORD valueFrom: diff --git a/bitnami/cassandra/values.yaml b/bitnami/cassandra/values.yaml index fb4f978c0..13e0ebc0d 100644 --- a/bitnami/cassandra/values.yaml +++ b/bitnami/cassandra/values.yaml @@ -214,6 +214,9 @@ affinity: {} ## tolerations: [] +entrypoint: "/app-entrypoint.sh" +cmd: "/run.sh" + ## Network policies ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/ ## From 79da0c68cdf953fb483b7afc40e7bc697b41eae2 Mon Sep 17 00:00:00 2001 From: Javier Salmeron Garcia Date: Thu, 29 Aug 2019 16:55:38 +0200 Subject: [PATCH 2/2] [bitnami/cassandra] Allow custom entrypoint & cmd Signed-off-by: Javier Salmeron Garcia --- bitnami/cassandra/README.md | 4 ++++ bitnami/cassandra/templates/networkpolicy.yaml | 4 ++-- bitnami/cassandra/templates/statefulset.yaml | 7 +++---- bitnami/cassandra/values-production.yaml | 6 ++++++ bitnami/cassandra/values.yaml | 3 +++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/bitnami/cassandra/README.md b/bitnami/cassandra/README.md index 14a771c1b..8ee4a13db 100644 --- a/bitnami/cassandra/README.md +++ b/bitnami/cassandra/README.md @@ -245,6 +245,10 @@ kubectl create configmap init-db --from-file=path/to/scripts helm install bitnami/cassandra --set initDBConfigMap=init-db ``` +## Using a custom Cassandra image + +This chart uses the [Bitnami cassandra](https://github.com/bitnami/bitnami-docker-cassandra) image by default. In case you want to use a different image, you can redefine the container entrypoint by setting the `entrypoint` and `cmd` values. + ## Upgrade ### 2.0.0 diff --git a/bitnami/cassandra/templates/networkpolicy.yaml b/bitnami/cassandra/templates/networkpolicy.yaml index 75a40f0ea..2d85537ac 100644 --- a/bitnami/cassandra/templates/networkpolicy.yaml +++ b/bitnami/cassandra/templates/networkpolicy.yaml @@ -28,7 +28,7 @@ spec: - podSelector: matchLabels: app: {{ template "cassandra.name" . }} - release: {{ .Release.Name }} + release: {{ .Release.Name }} # Internal ports - ports: - port: intra @@ -38,7 +38,7 @@ spec: - podSelector: matchLabels: app: {{ template "cassandra.name" . }} - release: {{ .Release.Name }} + release: {{ .Release.Name }} {{- if .Values.metrics.enabled }} # Allow prometheus scrapes for metrics - ports: diff --git a/bitnami/cassandra/templates/statefulset.yaml b/bitnami/cassandra/templates/statefulset.yaml index 640f81cc9..aa9a4b3a4 100644 --- a/bitnami/cassandra/templates/statefulset.yaml +++ b/bitnami/cassandra/templates/statefulset.yaml @@ -85,8 +85,6 @@ spec: # Only node 0 will execute the startup initdb scripts export CASSANDRA_IGNORE_INITDB_SCRIPTS=1 fi - {{- $domain := .Values.cluster.domain }} - export CASSANDRA_HOST="${HOSTNAME}.{{ template "cassandra.fullname" . }}-headless.{{ .Release.Namespace }}.svc.{{ $domain }}" {{ .Values.entrypoint }} {{ .Values.cmd }} image: {{ template "cassandra.image" . }} imagePullPolicy: {{ .Values.image.pullPolicy | quote }} @@ -94,9 +92,10 @@ spec: env: - name: CASSANDRA_CLUSTER_NAME value: {{ .Values.cluster.name }} -{{- $global := . }} -{{- $replicas := .Values.cluster.seedCount | int }} - name: CASSANDRA_SEEDS + {{- $global := . }} + {{- $replicas := .Values.cluster.seedCount | int }} + {{- $domain := .Values.cluster.domain }} value: "{{- range $i, $e := until $replicas }}{{ template "cassandra.fullname" $global }}-{{ $i }}.{{ template "cassandra.fullname" $global }}-headless.{{ $global.Release.Namespace }}.svc.{{ $domain }}{{- if (lt ( add1 $i ) $replicas ) }},{{- end }}{{- end }}" - name: CASSANDRA_PASSWORD valueFrom: diff --git a/bitnami/cassandra/values-production.yaml b/bitnami/cassandra/values-production.yaml index 9195e5357..c1e071541 100644 --- a/bitnami/cassandra/values-production.yaml +++ b/bitnami/cassandra/values-production.yaml @@ -214,6 +214,12 @@ affinity: {} ## tolerations: [] +## +## Container entrypoint and cmd (useful for using different images) +## +entrypoint: "/app-entrypoint.sh" +cmd: "/run.sh" + ## Network policies ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/ ## diff --git a/bitnami/cassandra/values.yaml b/bitnami/cassandra/values.yaml index 13e0ebc0d..d3c5a281a 100644 --- a/bitnami/cassandra/values.yaml +++ b/bitnami/cassandra/values.yaml @@ -214,6 +214,9 @@ affinity: {} ## tolerations: [] +## +## Container entrypoint and cmd (useful for using different images) +## entrypoint: "/app-entrypoint.sh" cmd: "/run.sh"