From 74f2fd8f163cb4a9aa48bae1cb2a674ce4de2ae4 Mon Sep 17 00:00:00 2001 From: jackieskeate Date: Fri, 5 Feb 2021 10:50:37 +0000 Subject: [PATCH] [bitnami/mongodb] Add optional parameters to configure service names used for mongo and arbiter services (#5384) * Update headless-svc.yaml Updated headless-svc.yaml to pull in the new servicename parameter. * Update _helpers.tpl * Update values.yaml * Update statefulset.yaml * Update statefulset.yaml * Update statefulset.yaml * Update headless-svc.yaml * Update _helpers.tpl * Update _helpers.tpl Added default mongo arbiter service name which can be overridden. * Update values.yaml Added Arbiter service name parameter * Update headless-svc.yaml Updated to use the mongodb.arbiterservicename parameter * Update statefulset.yaml Updated to use the new mongodb.arbiterservicename parameter * Update values.yaml Renamed "servicename" parameter to "name" in line with template changes. * Update Chart.yaml Bumped version * Update README.md Added new service name parameters to README * Update _helpers.tpl Fixed indentation to make it consistent * Update Chart.yaml Removed blank line * Update README.md Updated service.name to service.nameOverride and arbiter.service.name to arbiter.service.nameOverride * Update _helpers.tpl Updated service.name parameters to service.nameOverride * Update values.yaml Updated new 'name' parameters to 'nameOverride' * Update _helpers.tpl Updated definition for mongodb.servicename to be mongodb.service.nameOverride Updated definition for mongodb.arbiterservicename to be mongodb.arbiter.service.nameOverride * Update headless-svc.yaml Updated mongodb.arbiterservicename to mongodb.arbiter.service.name * Update headless-svc.yaml mongodb.arbiter.service.nameOverride * Update statefulset.yaml Updated mongodb.arbiterservicename to be mongodb.arbiter.service.nameOverride * Update statefulset.yaml Updated mongodb.servicename to be mongodb.service.nameOverride Updated mongodb.arbiterservicename to be mongodb.arbiter.service.nameOverride * Update headless-svc.yaml Updated mongodb.servicenameOverride to mongodb.service.nameOverride * Update statefulset.yaml Updated mongodb.servicename to be mongodb.service.nameOverride --- bitnami/mongodb/README.md | 82 ++++++++++--------- bitnami/mongodb/templates/_helpers.tpl | 30 +++++++ .../templates/arbiter/headless-svc.yaml | 2 +- .../templates/arbiter/statefulset.yaml | 6 +- .../templates/replicaset/headless-svc.yaml | 2 +- .../templates/replicaset/statefulset.yaml | 4 +- bitnami/mongodb/values.yaml | 9 ++ 7 files changed, 88 insertions(+), 47 deletions(-) diff --git a/bitnami/mongodb/README.md b/bitnami/mongodb/README.md index e407c3c88..90cbab662 100644 --- a/bitnami/mongodb/README.md +++ b/bitnami/mongodb/README.md @@ -220,6 +220,7 @@ The following tables lists the configurable parameters of the MongoDB chart and | Parameter | Description | Default | |---------------------------------------------------|---------------------------------------------------------------------------------------------------|--------------------------------| | `service.type` | Kubernetes Service type | `ClusterIP` | +| `service.nameOverride` | MongoDB service name | `{mongodb.fullname}-headless` | | `service.port` | MongoDB service port | `27017` | | `service.portName` | MongoDB service port name | `mongodb` | | `service.nodePort` | Port to bind to for NodePort and LoadBalancer service types | `""` | @@ -285,46 +286,47 @@ The following tables lists the configurable parameters of the MongoDB chart and ### Arbiter parameters -| Parameter | Description | Default | -|-------------------------------------|---------------------------------------------------------------------------------------------------|--------------------------------| -| `arbiter.enabled` | Enable deploying the arbiter | `true` | -| `arbiter.hostAliases` | Add deployment host aliases | `[]` | -| `arbiter.configuration` | Arbiter configuration file to be used | `{}` | -| `arbiter.existingConfigmap` | Name of existing ConfigMap with Arbiter configuration | `nil` | -| `arbiter.command` | Override default container command (useful when using custom images) | `nil` | -| `arbiter.args` | Override default container args (useful when using custom images) | `nil` | -| `arbiter.extraFlags` | Arbiter additional command line flags | `[]` | -| `arbiter.extraEnvVars` | Extra environment variables to add to Arbiter pods | `[]` | -| `arbiter.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `nil` | -| `arbiter.extraEnvVarsSecret` | Name of existing Secret containing extra env vars (in case of sensitive data) | `nil` | -| `arbiter.labels` | Annotations to be added to the Arbiter statefulset | `{}` (evaluated as a template) | -| `arbiter.annotations` | Additional labels to be added to the Arbiter statefulset | `{}` (evaluated as a template) | -| `arbiter.podLabels` | Arbiter pod labels | `{}` (evaluated as a template) | -| `arbiter.podAnnotations` | Arbiter Pod annotations | `{}` (evaluated as a template) | -| `arbiter.priorityClassName` | Name of the existing priority class to be used by Arbiter pod(s) | `""` | -| `arbiter.podAffinityPreset` | Arbiter Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `arbiter.podAntiAffinityPreset` | Arbiter Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | -| `arbiter.nodeAffinityPreset.type` | Arbiter Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `arbiter.nodeAffinityPreset.key` | Arbiter Node label key to match Ignored if `affinity` is set. | `""` | -| `arbiter.nodeAffinityPreset.values` | Arbiter Node label values to match. Ignored if `affinity` is set. | `[]` | -| `arbiter.affinity` | Arbiter Affinity for pod assignment | `{}` (evaluated as a template) | -| `arbiter.nodeSelector` | Arbiter Node labels for pod assignment | `{}` (evaluated as a template) | -| `arbiter.tolerations` | Arbiter Tolerations for pod assignment | `[]` (evaluated as a template) | -| `arbiter.podSecurityContext` | Arbiter pod(s)' Security Context | Check `values.yaml` file | -| `arbiter.containerSecurityContext` | Arbiter containers' Security Context | Check `values.yaml` file | -| `arbiter.resources.limits` | The resources limits for Arbiter containers | `{}` | -| `arbiter.resources.requests` | The requested resources for Arbiter containers | `{}` | -| `arbiter.livenessProbe` | Liveness probe configuration for Arbiter | Check `values.yaml` file | -| `arbiter.readinessProbe` | Readiness probe configuration for Arbiter | Check `values.yaml` file | -| `arbiter.customLivenessProbe` | Override default liveness probe for Arbiter containers | `nil` | -| `arbiter.customReadinessProbe` | Override default readiness probe for Arbiter containers | `nil` | -| `arbiter.pdb.create` | Enable/disable a Pod Disruption Budget creation for Arbiter pod(s) | `false` | -| `arbiter.pdb.minAvailable` | Minimum number/percentage of Arbiter pods that should remain scheduled | `1` | -| `arbiter.pdb.maxUnavailable` | Maximum number/percentage of Arbiter pods that may be made unavailable | `nil` | -| `arbiter.initContainers` | Add additional init containers for the Arbiter pod(s) | `{}` (evaluated as a template) | -| `arbiter.sidecars` | Add additional sidecar containers for the Arbiter pod(s) | `{}` (evaluated as a template) | -| `arbiter.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the Arbiter container(s) | `{}` | -| `arbiter.extraVolumes` | Optionally specify extra list of additional volumes to the Arbiter statefulset | `{}` | +| Parameter | Description | Default | +|-------------------------------------|---------------------------------------------------------------------------------------------------|----------------------------------------| +| `arbiter.enabled` | Enable deploying the arbiter | `true` | +| `arbiter.hostAliases` | Add deployment host aliases | `[]` | +| `arbiter.configuration` | Arbiter configuration file to be used | `{}` | +| `arbiter.existingConfigmap` | Name of existing ConfigMap with Arbiter configuration | `nil` | +| `arbiter.command` | Override default container command (useful when using custom images) | `nil` | +| `arbiter.args` | Override default container args (useful when using custom images) | `nil` | +| `arbiter.extraFlags` | Arbiter additional command line flags | `[]` | +| `arbiter.extraEnvVars` | Extra environment variables to add to Arbiter pods | `[]` | +| `arbiter.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `nil` | +| `arbiter.extraEnvVarsSecret` | Name of existing Secret containing extra env vars (in case of sensitive data) | `nil` | +| `arbiter.labels` | Annotations to be added to the Arbiter statefulset | `{}` (evaluated as a template) | +| `arbiter.annotations` | Additional labels to be added to the Arbiter statefulset | `{}` (evaluated as a template) | +| `arbiter.podLabels` | Arbiter pod labels | `{}` (evaluated as a template) | +| `arbiter.podAnnotations` | Arbiter Pod annotations | `{}` (evaluated as a template) | +| `arbiter.priorityClassName` | Name of the existing priority class to be used by Arbiter pod(s) | `""` | +| `arbiter.podAffinityPreset` | Arbiter Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `arbiter.podAntiAffinityPreset` | Arbiter Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `arbiter.nodeAffinityPreset.type` | Arbiter Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `arbiter.nodeAffinityPreset.key` | Arbiter Node label key to match Ignored if `affinity` is set. | `""` | +| `arbiter.nodeAffinityPreset.values` | Arbiter Node label values to match. Ignored if `affinity` is set. | `[]` | +| `arbiter.affinity` | Arbiter Affinity for pod assignment | `{}` (evaluated as a template) | +| `arbiter.nodeSelector` | Arbiter Node labels for pod assignment | `{}` (evaluated as a template) | +| `arbiter.tolerations` | Arbiter Tolerations for pod assignment | `[]` (evaluated as a template) | +| `arbiter.podSecurityContext` | Arbiter pod(s)' Security Context | Check `values.yaml` file | +| `arbiter.containerSecurityContext` | Arbiter containers' Security Context | Check `values.yaml` file | +| `arbiter.resources.limits` | The resources limits for Arbiter containers | `{}` | +| `arbiter.resources.requests` | The requested resources for Arbiter containers | `{}` | +| `arbiter.livenessProbe` | Liveness probe configuration for Arbiter | Check `values.yaml` file | +| `arbiter.readinessProbe` | Readiness probe configuration for Arbiter | Check `values.yaml` file | +| `arbiter.customLivenessProbe` | Override default liveness probe for Arbiter containers | `nil` | +| `arbiter.customReadinessProbe` | Override default readiness probe for Arbiter containers | `nil` | +| `arbiter.pdb.create` | Enable/disable a Pod Disruption Budget creation for Arbiter pod(s) | `false` | +| `arbiter.pdb.minAvailable` | Minimum number/percentage of Arbiter pods that should remain scheduled | `1` | +| `arbiter.pdb.maxUnavailable` | Maximum number/percentage of Arbiter pods that may be made unavailable | `nil` | +| `arbiter.initContainers` | Add additional init containers for the Arbiter pod(s) | `{}` (evaluated as a template) | +| `arbiter.sidecars` | Add additional sidecar containers for the Arbiter pod(s) | `{}` (evaluated as a template) | +| `arbiter.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the Arbiter container(s) | `{}` | +| `arbiter.extraVolumes` | Optionally specify extra list of additional volumes to the Arbiter statefulset | `{}` | +| `arbiter.service.nameOverride` | The arbiter service name | `{mongodb.fullname}-arbiter-headless` | ### Metrics parameters diff --git a/bitnami/mongodb/templates/_helpers.tpl b/bitnami/mongodb/templates/_helpers.tpl index bdf701f41..ad329ac52 100644 --- a/bitnami/mongodb/templates/_helpers.tpl +++ b/bitnami/mongodb/templates/_helpers.tpl @@ -15,6 +15,36 @@ If release name contains chart name it will be used as a full name. {{- include "common.names.fullname" . -}} {{- end -}} +{{/* +Create a default mongo service name which can be overridden. +*/}} +{{- define "mongodb.service.nameOverride" -}} + {{- if .Values.service -}} + {{- if .Values.service.nameOverride }} + {{- .Values.service.nameOverride -}} + {{- else -}} + {{ include "mongodb.fullname" . }}-headless + {{- end -}} + {{- else -}} + {{ include "mongodb.fullname" . }}-headless + {{- end }} +{{- end }} + +{{/* +Create a default mongo arbiter service name which can be overridden. +*/}} +{{- define "mongodb.arbiter.service.nameOverride" -}} + {{- if .Values.arbiter.service -}} + {{- if .Values.arbiter.service.nameOverride }} + {{- .Values.arbiter.service.nameOverride -}} + {{- else -}} + {{ include "mongodb.fullname" . }}-arbiter-headless + {{- end -}} + {{- else -}} + {{ include "mongodb.fullname" . }}-arbiter-headless + {{- end }} +{{- end }} + {{/* Return the proper MongoDB image name */}} diff --git a/bitnami/mongodb/templates/arbiter/headless-svc.yaml b/bitnami/mongodb/templates/arbiter/headless-svc.yaml index 85d8ac915..f08a099ec 100644 --- a/bitnami/mongodb/templates/arbiter/headless-svc.yaml +++ b/bitnami/mongodb/templates/arbiter/headless-svc.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "mongodb.fullname" . }}-arbiter-headless + name: {{ include "mongodb.arbiter.service.nameOverride" . }} namespace: {{ include "mongodb.namespace" . }} labels: {{- include "common.labels.standard" . | nindent 4 }} app.kubernetes.io/component: arbiter diff --git a/bitnami/mongodb/templates/arbiter/statefulset.yaml b/bitnami/mongodb/templates/arbiter/statefulset.yaml index 8959e8384..9dd7c86e7 100644 --- a/bitnami/mongodb/templates/arbiter/statefulset.yaml +++ b/bitnami/mongodb/templates/arbiter/statefulset.yaml @@ -13,7 +13,7 @@ metadata: annotations: {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.annotations "context" $) | nindent 4 }} {{- end }} spec: - serviceName: {{ include "mongodb.fullname" . }}-arbiter-headless + serviceName: {{ include "mongodb.arbiter.service.nameOverride" . }} selector: matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} app.kubernetes.io/component: arbiter @@ -145,11 +145,11 @@ spec: fieldRef: fieldPath: metadata.namespace - name: K8S_SERVICE_NAME - value: "{{ include "mongodb.fullname" . }}-arbiter-headless" + value: "{{ include "mongodb.arbiter.service.nameOverride" . }}" - name: MONGODB_REPLICA_SET_MODE value: "arbiter" - name: MONGODB_INITIAL_PRIMARY_HOST - value: "{{ include "mongodb.fullname" . }}-0.{{ include "mongodb.fullname" . }}-headless.$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}" + value: "{{ include "mongodb.fullname" . }}-0.{{ include "mongodb.service.nameOverride" . }}.$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}" - name: MONGODB_REPLICA_SET_NAME value: {{ .Values.replicaSetName | quote }} - name: MONGODB_ADVERTISED_HOSTNAME diff --git a/bitnami/mongodb/templates/replicaset/headless-svc.yaml b/bitnami/mongodb/templates/replicaset/headless-svc.yaml index 39c487495..16757ef45 100644 --- a/bitnami/mongodb/templates/replicaset/headless-svc.yaml +++ b/bitnami/mongodb/templates/replicaset/headless-svc.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "mongodb.fullname" . }}-headless + name: {{ include "mongodb.service.nameOverride" . }} namespace: {{ include "mongodb.namespace" . }} labels: {{- include "common.labels.standard" . | nindent 4 }} app.kubernetes.io/component: mongodb diff --git a/bitnami/mongodb/templates/replicaset/statefulset.yaml b/bitnami/mongodb/templates/replicaset/statefulset.yaml index 6e6be1c7c..1c1288e57 100644 --- a/bitnami/mongodb/templates/replicaset/statefulset.yaml +++ b/bitnami/mongodb/templates/replicaset/statefulset.yaml @@ -16,7 +16,7 @@ metadata: annotations: {{- include "common.tplvalues.render" (dict "value" .Values.annotations "context" $) | nindent 4 }} {{- end }} spec: - serviceName: {{ include "mongodb.fullname" . }}-headless + serviceName: {{ include "mongodb.service.nameOverride" . }} podManagementPolicy: {{ .Values.podManagementPolicy }} replicas: {{ .Values.replicaCount }} updateStrategy: @@ -215,7 +215,7 @@ spec: fieldRef: fieldPath: metadata.namespace - name: K8S_SERVICE_NAME - value: "{{ include "mongodb.fullname" . }}-headless" + value: "{{ include "mongodb.service.nameOverride" . }}" - name: MONGODB_INITIAL_PRIMARY_HOST value: "{{ include "mongodb.fullname" . }}-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}" - name: MONGODB_REPLICA_SET_NAME diff --git a/bitnami/mongodb/values.yaml b/bitnami/mongodb/values.yaml index 80d2c5a2f..52c606002 100644 --- a/bitnami/mongodb/values.yaml +++ b/bitnami/mongodb/values.yaml @@ -483,6 +483,9 @@ persistence: ## Service parameters ## service: + ## Service name + ## + nameOverride: "" ## Service type ## type: ClusterIP @@ -839,6 +842,12 @@ arbiter: ## # maxUnavailable: 1 + ## MongoDB Arbiter service parameters + service: + ## Service name + ## + nameOverride: "" + ## ServiceAccount ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ ##