mirror of
https://github.com/wahyd4/charts.git
synced 2026-08-22 11:35:58 +10:00
Merge branch 'master' into fix_chartprovider_name
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: airflow
|
||||
version: 1.0.1
|
||||
version: 2.0.0
|
||||
appVersion: 1.10.3
|
||||
description: Apache Airflow is a platform to programmatically author, schedule and monitor workflows.
|
||||
keywords:
|
||||
|
||||
@@ -72,6 +72,8 @@ The following tables lists the configurable parameters of the Kafka chart and th
|
||||
| `git.tag` | Git image tag | `{TAG_NAME}` |
|
||||
| `git.pullPolicy` | Git image pull policy | `IfNotPresent` |
|
||||
| `git.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `nameOverride` | String to partially override airflow.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override ariflow.fullname template with a string | `nil` |
|
||||
| `updateStrategy` | Update strategy for the stateful set | `RollingUpdate` |
|
||||
| `rollingUpdatePartition` | Partition update strategy | `nil` |
|
||||
| `airflow.configurationConfigMap` | Name of an existing config map containing the Airflow config file | `nil` |
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "airflow.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 24 -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
|
||||
@@ -94,6 +94,14 @@ git:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override airflow.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override airflow.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## StatefulSet controller supports automated updates. There are two valid update strategies: RollingUpdate and OnDelete
|
||||
## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets
|
||||
##
|
||||
|
||||
@@ -94,6 +94,14 @@ git:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override airflow.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override airflow.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## StatefulSet controller supports automated updates. There are two valid update strategies: RollingUpdate and OnDelete
|
||||
## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets
|
||||
##
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: apache
|
||||
version: 4.3.2
|
||||
version: 5.1.1
|
||||
appVersion: 2.4.39
|
||||
description: Chart for Apache HTTP Server
|
||||
keywords:
|
||||
|
||||
@@ -53,6 +53,8 @@ The following tables lists the configurable parameters of the Apache chart and t
|
||||
| `image.tag` | Apache Docker image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Apache Docker image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `nameOverride` | String to partially override apache.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override apache.fullname template with a string | `nil` |
|
||||
| `podAnnotations` | Pod annotations | `{}` |
|
||||
| `ingress.enabled` | Enable ingress controller resource | `false` |
|
||||
| `ingress.certManager` | Add annotations for cert-manager | `false` |
|
||||
@@ -66,8 +68,8 @@ The following tables lists the configurable parameters of the Apache chart and t
|
||||
| `ingress.secrets[0].key` | TLS Secret Key | `nil` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image.registry` | Apache exporter image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Apache exporter image name | `lusotycoon/apache-exporter` |
|
||||
| `metrics.image.tag` | Apache exporter image tag | `v0.5.0` |
|
||||
| `metrics.image.repository` | Apache exporter image name | `bitnami/apache-exporter` |
|
||||
| `metrics.image.tag` | Apache exporter image tag | `{TAG_NAME}` |
|
||||
| `metrics.image.pullPolicy` | Apache exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.image.pullSecrets` | Specify Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | `{prometheus.io/scrape: "true", prometheus.io/port: "9117"}` |
|
||||
|
||||
@@ -2,17 +2,25 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 24 -}}
|
||||
{{- define "apache.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 24 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "fullname" -}}
|
||||
{{- define "apache.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 24 -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
name: {{ template "apache.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "apache.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "apache.fullname" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "apache.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
@@ -36,7 +36,7 @@ spec:
|
||||
hostnames:
|
||||
- "status.localhost"
|
||||
containers:
|
||||
- name: {{ template "fullname" . }}
|
||||
- name: apache
|
||||
image: "{{ template "apache.image" . }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
|
||||
ports:
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
name: {{ template "apache.fullname" . }}
|
||||
labels:
|
||||
app: "{{ template "fullname" . }}"
|
||||
app: "{{ template "apache.fullname" . }}"
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
paths:
|
||||
- path: {{ default "/" .path }}
|
||||
backend:
|
||||
serviceName: "{{ template "fullname" $ }}"
|
||||
serviceName: "{{ template "apache.fullname" $ }}"
|
||||
servicePort: http
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
name: {{ template "apache.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "apache.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
@@ -29,4 +29,4 @@ spec:
|
||||
nodePort: {{ .Values.service.nodePorts.https }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "apache.fullname" . }}
|
||||
|
||||
@@ -25,6 +25,14 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override apache.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override apache.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Pod annotations
|
||||
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
|
||||
##
|
||||
@@ -83,8 +91,8 @@ metrics:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: lusotycoon/apache-exporter
|
||||
tag: v0.5.0
|
||||
repository: bitnami/apache-exporter
|
||||
tag: 0.7.0-debian-9-r2
|
||||
pullPolicy: IfNotPresent
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: cassandra
|
||||
version: 2.3.10
|
||||
version: 3.1.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
|
||||
|
||||
+90
-73
@@ -46,79 +46,87 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following tables lists the configurable parameters of the cassandra chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| `global.imageRegistry` | Global Docker Image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Cassandra Image registry | `docker.io` |
|
||||
| `image.repository` | Cassandra Image name | `bitnami/cassandra` |
|
||||
| `image.tag` | Cassandra Image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.nodePort` | Kubernetes Service nodePort | `nil` |
|
||||
| `service.loadBalancerIP` | LoadBalancerIP if service type is `LoadBalancer` | `nil` |
|
||||
| `service.annotations` | Annotations for the service | {} |
|
||||
| `persistence.enabled` | Use PVCs to persist data | `true` |
|
||||
| `persistence.storageClass` | Persistent Volume Storage Class | `generic` |
|
||||
| `persistence.annotations` | Persistent Volume Claim annotations Annotations | {} |
|
||||
| `persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `tlsEncryptionSecretName` | Secret with keystore, keystore password, truststore and truststore password | `{}` |
|
||||
| `resources` | CPU/Memory resource requests/limits | `{}` |
|
||||
| `existingConfiguration` | Pointer to a configMap that contains custom Cassandra configuration files. This will override any Cassandra configuration variable set in the chart | `{}` |
|
||||
| `cluster.name` | Cassandra cluster name | `cassandra` |
|
||||
| `cluster.replicaCount` | Number of Cassandra nodes | `1` |
|
||||
| `cluster.seedCount` | Number of seed nodes (note: must be greater or equal than 1 and less or equal to `cluster.replicaCount`) | `1` |
|
||||
| `cluster.numTokens` | Number of tokens for each node | `256` |
|
||||
| `cluster.datacenter` | Datacenter name | `dc1` |
|
||||
| `cluster.rack` | Rack name | `rack1` |
|
||||
| `cluster.enableRPC` | Enable Thrift RPC endpoint | `true` |
|
||||
| `cluster.minimumAvailable` | Minimum nuber of instances that must be available in the cluster (used of PodDisruptionBudget) | `1` |
|
||||
| `cluster.internodeEncryption` | Set internode encryption. NOTE: A value different from 'none' requires setting `tlsEncryptionSecretName` | `none` |
|
||||
| `cluster.clientEncryption` | Set client-server encryption. NOTE: A value different from 'false' requires setting `tlsEncryptionSecretName` | `false` |
|
||||
| `cluster.jvm.extraOpts` | Set the value for Java Virtual Machine extra optinos (JVM_EXTRA_OPTS) | `nil` |
|
||||
| `cluster.jvm.maxHeapSize` | Set Java Virtual Machine maximum heap size (MAX_HEAP_SIZE). Calculated automatically if `nil` | `nil` |
|
||||
| `cluster.jvm.newHeapSize` | Set Java Virtual Machine new heap size (HEAP_NEWSIZE). Calculated automatically if `nil` | `nil` |
|
||||
| `cluster.domain` | Set the kubernetes cluster domain | `cluster.local` |
|
||||
| `service.port` | CQL Port for the Kubernetes service | `9042` |
|
||||
| `service.thriftPort` | Thrift Port for the Kubernetes service | `9160` |
|
||||
| `dbUser.user` | Cassandra admin user | `cassandra` |
|
||||
| `dbUser.forcePassword` | Force the user to provide a non-empty password for `dbUser.user` | `false` |
|
||||
| `dbUser.password` | Password for `dbUser.user`. Randomly generated if empty | (Random generated) |
|
||||
| `dbUser.existingSecret` | Use an existing secret object for `dbUser.user` password (will ignore `dbUser.password`) | `nil` |
|
||||
| `initDBConfigMap` | Configmap for initialization CQL commands (done in the first node). Useful for creating keyspaces at startup, for instance | `nil` |
|
||||
| `livenessProbe.enabled` | Turn on and off liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `30` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `readinessProbe.enabled` | Turn on and off readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `podAnnotations` | Additional pod annotations | `{}` |
|
||||
| `podLabels` | Additional pod labels | `{}` |
|
||||
| `statefulset.updateStrategy` | Update strategy for StatefulSet | onDelete |
|
||||
| `statefulset.rollingUpdatePartition` | Partition update strategy | `nil` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `affinity` | Enable node/pod affinity | {} |
|
||||
| `tolerations` | Toleration labels for pod assignment | \[] |
|
||||
| `networkPolicy.enabled` | Enable NetworkPolicy | `false` |
|
||||
| `networkPolicy.allowExternal` | Don't require client label for connections | `true` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image.registry` | Cassandra exporter Image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Cassandra exporter Image name | `criteo/cassandra_exporter` |
|
||||
| `metrics.image.tag` | Cassandra exporter Image tag | `2.0.4` |
|
||||
| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.podAnnotations` | Additional annotations for Metrics exporter | `{prometheus.io/scrape: "true", prometheus.io/port: "8080"}` |
|
||||
| `metrics.resources` | Exporter resource requests/limit | `{}` |
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| `global.imageRegistry` | Global Docker Image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Cassandra Image registry | `docker.io` |
|
||||
| `image.repository` | Cassandra Image name | `bitnami/cassandra` |
|
||||
| `image.tag` | Cassandra Image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `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` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.nodePort` | Kubernetes Service nodePort | `nil` |
|
||||
| `service.loadBalancerIP` | LoadBalancerIP if service type is `LoadBalancer` | `nil` |
|
||||
| `service.annotations` | Annotations for the service | {} |
|
||||
| `persistence.enabled` | Use PVCs to persist data | `true` |
|
||||
| `persistence.storageClass` | Persistent Volume Storage Class | `generic` |
|
||||
| `persistence.annotations` | Persistent Volume Claim annotations Annotations | {} |
|
||||
| `persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `tlsEncryptionSecretName` | Secret with keystore, keystore password, truststore and truststore password | `{}` |
|
||||
| `resources` | CPU/Memory resource requests/limits | `{}` |
|
||||
| `existingConfiguration` | Pointer to a configMap that contains custom Cassandra configuration files. This will override any Cassandra configuration variable set in the chart | `{}` |
|
||||
| `cluster.name` | Cassandra cluster name | `cassandra` |
|
||||
| `cluster.replicaCount` | Number of Cassandra nodes | `1` |
|
||||
| `cluster.seedCount` | Number of seed nodes (note: must be greater or equal than 1 and less or equal to `cluster.replicaCount`) | `1` |
|
||||
| `cluster.numTokens` | Number of tokens for each node | `256` |
|
||||
| `cluster.datacenter` | Datacenter name | `dc1` |
|
||||
| `cluster.rack` | Rack name | `rack1` |
|
||||
| `cluster.enableRPC` | Enable Thrift RPC endpoint | `true` |
|
||||
| `cluster.minimumAvailable` | Minimum nuber of instances that must be available in the cluster (used of PodDisruptionBudget) | `1` |
|
||||
| `cluster.internodeEncryption` | Set internode encryption. NOTE: A value different from 'none' requires setting `tlsEncryptionSecretName` | `none` |
|
||||
| `cluster.clientEncryption` | Set client-server encryption. NOTE: A value different from 'false' requires setting `tlsEncryptionSecretName` | `false` |
|
||||
| `cluster.jvm.extraOpts` | Set the value for Java Virtual Machine extra optinos (JVM_EXTRA_OPTS) | `nil` |
|
||||
| `cluster.jvm.maxHeapSize` | Set Java Virtual Machine maximum heap size (MAX_HEAP_SIZE). Calculated automatically if `nil` | `nil` |
|
||||
| `cluster.jvm.newHeapSize` | Set Java Virtual Machine new heap size (HEAP_NEWSIZE). Calculated automatically if `nil` | `nil` |
|
||||
| `cluster.domain` | Set the kubernetes cluster domain | `cluster.local` |
|
||||
| `service.port` | CQL Port for the Kubernetes service | `9042` |
|
||||
| `service.thriftPort` | Thrift Port for the Kubernetes service | `9160` |
|
||||
| `dbUser.user` | Cassandra admin user | `cassandra` |
|
||||
| `dbUser.forcePassword` | Force the user to provide a non-empty password for `dbUser.user` | `false` |
|
||||
| `dbUser.password` | Password for `dbUser.user`. Randomly generated if empty | (Random generated) |
|
||||
| `dbUser.existingSecret` | Use an existing secret object for `dbUser.user` password (will ignore `dbUser.password`) | `nil` |
|
||||
| `initDBConfigMap` | Configmap for initialization CQL commands (done in the first node). Useful for creating keyspaces at startup, for instance | `nil` |
|
||||
| `livenessProbe.enabled` | Turn on and off liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `30` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `readinessProbe.enabled` | Turn on and off readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `podAnnotations` | Additional pod annotations | `{}` |
|
||||
| `podLabels` | Additional pod labels | `{}` |
|
||||
| `statefulset.updateStrategy` | Update strategy for StatefulSet | onDelete |
|
||||
| `statefulset.rollingUpdatePartition` | Partition update strategy | `nil` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `affinity` | Enable node/pod affinity | {} |
|
||||
| `tolerations` | Toleration labels for pod assignment | \[] |
|
||||
| `networkPolicy.enabled` | Enable NetworkPolicy | `false` |
|
||||
| `networkPolicy.allowExternal` | Don't require client label for connections | `true` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image.registry` | Cassandra exporter Image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Cassandra exporter Image name | `criteo/cassandra_exporter` |
|
||||
| `metrics.image.tag` | Cassandra exporter Image tag | `2.0.4` |
|
||||
| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.podAnnotations` | Additional annotations for Metrics exporter | `{prometheus.io/scrape: "true", prometheus.io/port: "8080"}` |
|
||||
| `metrics.resources` | Exporter resource requests/limit | `{}` |
|
||||
|
||||
|
||||
The above parameters map to the env variables defined in [bitnami/cassandra](http://github.com/bitnami/bitnami-docker-cassandra). For more information please refer to the [bitnami/cassandra](http://github.com/bitnami/bitnami-docker-cassandra) image documentation.
|
||||
@@ -192,6 +200,15 @@ The [Bitnami cassandra](https://github.com/bitnami/bitnami-docker-cassandra) ima
|
||||
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
|
||||
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
## Enable TLS for Cassandra
|
||||
|
||||
You can enable TLS between client and server and between nodes. In order to do so, you need to set the following values:
|
||||
|
||||
@@ -125,7 +125,7 @@ imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -133,8 +133,11 @@ imagePullSecrets:
|
||||
{{- range .Values.metrics.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -142,5 +145,31 @@ imagePullSecrets:
|
||||
{{- range .Values.metrics.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "cassandra.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -7,6 +7,10 @@ metadata:
|
||||
chart: {{ template "cassandra.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
annotations:
|
||||
{{- range $key, $value := .Values.service.annotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.service.nodePort }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
|
||||
@@ -58,6 +58,19 @@ spec:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "cassandra.imagePullSecrets" . | indent 6 }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "cassandra.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "/bitnami/cassandra"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /bitnami/cassandra
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: cassandra
|
||||
command:
|
||||
@@ -75,8 +88,7 @@ spec:
|
||||
/app-entrypoint.sh /run.sh
|
||||
image: {{ template "cassandra.image" . }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 10 }}
|
||||
resources: {{ toYaml .Values.resources | nindent 10 }}
|
||||
env:
|
||||
- name: CASSANDRA_CLUSTER_NAME
|
||||
value: {{ .Values.cluster.name }}
|
||||
|
||||
@@ -29,6 +29,32 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override cassandra.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override cassandra.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## Specify a service type
|
||||
## ref: http://kubernetes.io/docs/user-guide/services/
|
||||
##
|
||||
|
||||
@@ -29,6 +29,32 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override cassandra.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override cassandra.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## Specify a service type
|
||||
## ref: http://kubernetes.io/docs/user-guide/services/
|
||||
##
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: consul
|
||||
version: 4.2.13
|
||||
version: 5.1.0
|
||||
appVersion: 1.5.2
|
||||
description: Highly available and distributed service discovery and key-value store designed with support for the modern data center to make distributed systems and configuration easy.
|
||||
home: https://www.consul.io/
|
||||
|
||||
+86
-69
@@ -49,75 +49,83 @@ $ helm delete --purge my-release
|
||||
|
||||
The following tables lists the configurable parameters of the HashiCorp Consul chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------ | ---------------------------------------------------------------- | ---------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | HashiCorp Consul image registry | `docker.io` |
|
||||
| `image.repository` | HashiCorp Consul image name | `bitnami/consul` |
|
||||
| `image.tag` | HashiCorp Consul image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `replicas` | Number of replicas | `3` |
|
||||
| `port` | HashiCorp Consul http listening port | `8500` |
|
||||
| `service.rpcPort` | HashiCorp Consul rpc listening port | `8400` |
|
||||
| `service.serflanPort` | Container serf lan listening port | `8301` |
|
||||
| `service.serverPort` | Container server listening port | `8300` |
|
||||
| `service.consulDnsPort` | Container dns listening port | `8600` |
|
||||
| `service.uiPort` | HashiCorp Consul UI port | `80` |
|
||||
| `datacenterName` | HashiCorp Consul datacenter name | `dc1` |
|
||||
| `gossipKey` | Gossip key for all members | `nil` |
|
||||
| `domain` | HashiCorp Consul domain | `consul` |
|
||||
| `clientAddress` | Address in which HashiCorp Consul will bind client interfaces | `0.0.0.0` |
|
||||
| `serflanAddress` | Address used for Serf LAN communications | `0.0.0.0` |
|
||||
| `raftMultiplier` | Multiplier used to scale key Raft timing parameters | `10Gi` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `updateStrategy.type` | Statefulset update strategy policy | `RollingUpdate` |
|
||||
| `persistence.enabled` | Use a PVC to persist data | `true` |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` |
|
||||
| `persistence.size` | Size of data volume | `8Gi` |
|
||||
| `persistence.annotations` | Annotations for the persistent volume | `nil` |
|
||||
| `resources` | Container resource requests and limits | `{}` |
|
||||
| `maxUnavailable` | Pod disruption Budget maxUnavailable | `1` |
|
||||
| `nodeAffinity` | HashiCorp Consul pod node-affinity setting | `nil` |
|
||||
| `antiAffinity` | HashiCorp Consul pod anti-affinity setting | `soft` |
|
||||
| `ui.service.enabled` | Use a service to access HashiCorp Consul Ui | `true` |
|
||||
| `ui.service.type` | Kubernetes Service Type | `ClusterIP` |
|
||||
| `ui.service.annotations` | Annotations for HashiCorp Consul UI service | {} |
|
||||
| `ui.service.loadBalancerIP` | IP if HashiCorp Consul UI service type is `LoadBalancer` | `nil` |
|
||||
| `ingress.enabled` | Enable ingress controller resource | `false` |
|
||||
| `ingress.certManager` | Add annotations for cert-manager | `false` |
|
||||
| `ingress.annotations` | Ingress annotations | `[]` |
|
||||
| `ingress.hosts[0].name` | Hostname to your HashiCorp Consul installation | `consul-ui.local` |
|
||||
| `ingress.hosts[0].path` | Path within the url structure | `/` |
|
||||
| `ingress.hosts[0].tls` | Utilize TLS backend in ingress | `false` |
|
||||
| `ingress.hosts[0].tlsSecret` | TLS Secret (certificates) | `consul-ui.local-tls` |
|
||||
| `ingress.secrets[0].name` | TLS Secret Name | `nil` |
|
||||
| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` |
|
||||
| `ingress.secrets[0].key` | TLS Secret Key | `nil` |
|
||||
| `configmap` | HashiCorp Consul configuration to be injected as ConfigMap | `nil` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image` | Exporter image | `prom/consul-exporter` |
|
||||
| `metrics.imageTag` | Exporter image tag | `v0.3.0` |
|
||||
| `metrics.imagePullPolicy` | Exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.resources` | Exporter resource requests/limit | `{}` |
|
||||
| `metrics.podAnnotations` | Exporter annotations | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 30 |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
| `podAnnotations` | Pod annotations | `{}` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | 5 |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | HashiCorp Consul image registry | `docker.io` |
|
||||
| `image.repository` | HashiCorp Consul image name | `bitnami/consul` |
|
||||
| `image.tag` | HashiCorp Consul image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `nameOverride` | String to partially override consul.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override consul.fullname template with a string | `nil` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `replicas` | Number of replicas | `3` |
|
||||
| `port` | HashiCorp Consul http listening port | `8500` |
|
||||
| `service.rpcPort` | HashiCorp Consul rpc listening port | `8400` |
|
||||
| `service.serflanPort` | Container serf lan listening port | `8301` |
|
||||
| `service.serverPort` | Container server listening port | `8300` |
|
||||
| `service.consulDnsPort` | Container dns listening port | `8600` |
|
||||
| `service.uiPort` | HashiCorp Consul UI port | `80` |
|
||||
| `datacenterName` | HashiCorp Consul datacenter name | `dc1` |
|
||||
| `gossipKey` | Gossip key for all members | `nil` |
|
||||
| `domain` | HashiCorp Consul domain | `consul` |
|
||||
| `clientAddress` | Address in which HashiCorp Consul will bind client interfaces | `0.0.0.0` |
|
||||
| `serflanAddress` | Address used for Serf LAN communications | `0.0.0.0` |
|
||||
| `raftMultiplier` | Multiplier used to scale key Raft timing parameters | `10Gi` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `updateStrategy.type` | Statefulset update strategy policy | `RollingUpdate` |
|
||||
| `persistence.enabled` | Use a PVC to persist data | `true` |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` |
|
||||
| `persistence.size` | Size of data volume | `8Gi` |
|
||||
| `persistence.annotations` | Annotations for the persistent volume | `nil` |
|
||||
| `resources` | Container resource requests and limits | `{}` |
|
||||
| `maxUnavailable` | Pod disruption Budget maxUnavailable | `1` |
|
||||
| `nodeAffinity` | HashiCorp Consul pod node-affinity setting | `nil` |
|
||||
| `antiAffinity` | HashiCorp Consul pod anti-affinity setting | `soft` |
|
||||
| `ui.service.enabled` | Use a service to access HashiCorp Consul Ui | `true` |
|
||||
| `ui.service.type` | Kubernetes Service Type | `ClusterIP` |
|
||||
| `ui.service.annotations` | Annotations for HashiCorp Consul UI service | {} |
|
||||
| `ui.service.loadBalancerIP` | IP if HashiCorp Consul UI service type is `LoadBalancer` | `nil` |
|
||||
| `ingress.enabled` | Enable ingress controller resource | `false` |
|
||||
| `ingress.certManager` | Add annotations for cert-manager | `false` |
|
||||
| `ingress.annotations` | Ingress annotations | `[]` |
|
||||
| `ingress.hosts[0].name` | Hostname to your HashiCorp Consul installation | `consul-ui.local` |
|
||||
| `ingress.hosts[0].path` | Path within the url structure | `/` |
|
||||
| `ingress.hosts[0].tls` | Utilize TLS backend in ingress | `false` |
|
||||
| `ingress.hosts[0].tlsSecret` | TLS Secret (certificates) | `consul-ui.local-tls` |
|
||||
| `ingress.secrets[0].name` | TLS Secret Name | `nil` |
|
||||
| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` |
|
||||
| `ingress.secrets[0].key` | TLS Secret Key | `nil` |
|
||||
| `configmap` | HashiCorp Consul configuration to be injected as ConfigMap | `nil` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image` | Exporter image | `prom/consul-exporter` |
|
||||
| `metrics.imageTag` | Exporter image tag | `v0.3.0` |
|
||||
| `metrics.imagePullPolicy` | Exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.resources` | Exporter resource requests/limit | `{}` |
|
||||
| `metrics.podAnnotations` | Exporter annotations | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 30 |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
| `podAnnotations` | Pod annotations | `{}` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | 5 |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -161,6 +169,15 @@ The [Bitnami HashiCorp Consul](https://github.com/bitnami/bitnami-docker-consul)
|
||||
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
|
||||
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
## Ingress
|
||||
|
||||
This chart provides support for ingress resources. If you have an
|
||||
|
||||
@@ -11,9 +11,17 @@ Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "consul.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
@@ -83,7 +91,7 @@ imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -91,8 +99,11 @@ imagePullSecrets:
|
||||
{{- range .Values.metrics.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -100,5 +111,31 @@ imagePullSecrets:
|
||||
{{- range .Values.metrics.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "consul.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -76,8 +76,21 @@ spec:
|
||||
values:
|
||||
- "{{ template "consul.name" . }}"
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "consul.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "/bitnami/consul/data"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /bitnami/consul/data
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: "{{ template "consul.fullname" . }}"
|
||||
- name: consul
|
||||
image: "{{ template "consul.image" . }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
ports:
|
||||
|
||||
@@ -26,6 +26,32 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override consul.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override consul.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## Consul replicas
|
||||
replicas: 3
|
||||
|
||||
|
||||
@@ -26,6 +26,32 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override consul.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override consul.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## Consul replicas
|
||||
replicas: 3
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: elasticsearch
|
||||
version: 5.1.10
|
||||
version: 6.1.0
|
||||
appVersion: 7.2.0
|
||||
description: A highly scalable open-source full-text search and analytics engine
|
||||
keywords:
|
||||
|
||||
+147
-130
@@ -49,136 +49,144 @@ $ helm delete --purge my-release
|
||||
|
||||
The following table lists the configurable parameters of the Elasticsearch chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|---------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Elasticsearch image registry | `docker.io` |
|
||||
| `image.repository` | Elasticsearch image repository | `bitnami/elasticsearch` |
|
||||
| `image.tag` | Elasticsearch image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `name` | Elasticsearch cluster name | `elastic` |
|
||||
| `plugins` | Comma, semi-colon or space separated list of plugins to install at initialization | `nil` |
|
||||
| `config` | Elasticsearch node custom configuration | `` |
|
||||
| `master.name` | Master-eligible node pod name | `master` |
|
||||
| `master.replicas` | Desired number of Elasticsearch master-eligible nodes | `2` |
|
||||
| `master.heapSize` | Master-eligible node heap size | `128m` |
|
||||
| `master.antiAffinity` | Master-eligible node pod anti-affinity policy | `soft` |
|
||||
| `coordinating.nodeAffinity` | Master-eligible node affinity policy | `nil` |
|
||||
| `master.service.type` | Kubernetes Service type (master-eligible nodes) | `ClusterIP` |
|
||||
| `master.service.port` | Kubernetes Service port for Elasticsearch transport port (master-eligible nodes) | `9300` |
|
||||
| `master.service.nodePort` | Kubernetes Service nodePort (master-eligible nodes) | `nil` |
|
||||
| `master.service.annotations` | Annotations for master-eligible nodes service | {} |
|
||||
| `master.service.loadBalancerIP` | loadBalancerIP if master-eligible nodes service type is `LoadBalancer` | `nil` |
|
||||
| `master.resources` | CPU/Memory resource requests/limits for master-eligible nodes pods | `requests: { cpu: "25m", memory: "256Mi" }` |
|
||||
| `master.livenessProbe.enabled` | Enable/disable the liveness probe (master-eligible nodes pod) | `true` |
|
||||
| `master.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (master-eligible nodes pod) | `90` |
|
||||
| `master.livenessProbe.periodSeconds` | How often to perform the probe (master-eligible nodes pod) | `10` |
|
||||
| `master.livenessProbe.timeoutSeconds` | When the probe times out (master-eligible nodes pod) | `5` |
|
||||
| `master.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (master-eligible nodes pod) | `1` |
|
||||
| `master.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `master.podAnnotations` | Annotations for master pods. | `{}` |
|
||||
| `master.readinessProbe.enabled` | Enable/disable the readiness probe (master-eligible nodes pod) | `true` |
|
||||
| `master.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (master-eligible nodes pod) | `90` |
|
||||
| `master.readinessProbe.periodSeconds` | How often to perform the probe (master-eligible nodes pod) | `10` |
|
||||
| `master.readinessProbe.timeoutSeconds` | When the probe times out (master-eligible nodes pod) | `5` |
|
||||
| `master.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (master-eligible nodes pod) | `1` |
|
||||
| `master.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `discovery.name` | Discover node pod name | `discovery` |
|
||||
| `coordinating.name` | Coordinating-only node pod name | `coordinating-only` |
|
||||
| `coordinating.replicas` | Desired number of Elasticsearch coordinating-only nodes | `2` |
|
||||
| `coordinating.heapSize` | Coordinating-only node heap size | `128m` |
|
||||
| `coordinating.antiAffinity` | Coordinating-only node pod anti-affinity policy | `soft` |
|
||||
| `coordinating.nodeAffinity` | Coordinating-only node affinity policy | `nil` |
|
||||
| `coordinating.podAnnotations` | Annotations for coordniating pods. | `{}` |
|
||||
| `coordinating.service.type` | Kubernetes Service type (coordinating-only nodes) | `ClusterIP` |
|
||||
| `coordinating.service.port` | Kubernetes Service port for REST API (coordinating-only nodes) | `9200` |
|
||||
| `coordinating.service.nodePort` | Kubernetes Service nodePort (coordinating-only nodes) | `nil` |
|
||||
| `coordinating.service.annotations` | Annotations for coordinating-only nodes service | {} |
|
||||
| `coordinating.service.loadBalancerIP` | loadBalancerIP if coordinating-only nodes service type is `LoadBalancer` | `nil` |
|
||||
| `coordinating.resources` | CPU/Memory resource requests/limits for coordinating-only nodes pods | `requests: { cpu: "25m", memory: "256Mi" }` |
|
||||
| `coordinating.livenessProbe.enabled` | Enable/disable the liveness probe (coordinating-only nodes pod) | `true` |
|
||||
| `coordinating.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (coordinating-only nodes pod) | `90` |
|
||||
| `coordinating.livenessProbe.periodSeconds` | How often to perform the probe (coordinating-only nodes pod) | `10` |
|
||||
| `coordinating.livenessProbe.timeoutSeconds` | When the probe times out (coordinating-only nodes pod) | `5` |
|
||||
| `coordinating.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (coordinating-only nodes pod) | `1` |
|
||||
| `coordinating.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `coordinating.readinessProbe.enabled` | Enable/disable the readiness probe (coordinating-only nodes pod) | `true` |
|
||||
| `coordinating.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (coordinating-only nodes pod) | `90` |
|
||||
| `coordinating.readinessProbe.periodSeconds` | How often to perform the probe (coordinating-only nodes pod) | `10` |
|
||||
| `coordinating.readinessProbe.timeoutSeconds` | When the probe times out (coordinating-only nodes pod) | `5` |
|
||||
| `coordinating.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (coordinating-only nodes pod) | `1` |
|
||||
| `coordinating.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `data.name` | Data node pod name | `data` |
|
||||
| `data.replicas` | Desired number of Elasticsearch data nodes | `3` |
|
||||
| `data.updateStrategy.type` | Update strategy for Data statefulset | `RollingUpdate` |
|
||||
| `data.updateStrategy.rollingUpdatePartition` | Partition update strategy for Data statefulset | `nil` |
|
||||
| `data.heapSize` | Data node heap size | `1024m` |
|
||||
| `data.antiAffinity` | Data pod anti-affinity policy | `soft` |
|
||||
| `data.nodeAffinity` | Data pod node affinity policy | `nil` |
|
||||
| `data.resources` | CPU/Memory resource requests/limits for data nodes | `requests: { cpu: "25m", memory: "1152Mi" }` |
|
||||
| `data.persistence.enabled` | Enable persistence using a `PersistentVolumeClaim` | `true` |
|
||||
| `data.persistence.annotations` | Persistent Volume Claim annotations | `{}` |
|
||||
| `data.persistence.storageClass` | Persistent Volume Storage Class | `` |
|
||||
| `data.persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `data.persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `data.livenessProbe.enabled` | Enable/disable the liveness probe (data nodes pod) | `true` |
|
||||
| `data.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (data nodes pod) | `90` |
|
||||
| `data.livenessProbe.periodSeconds` | How often to perform the probe (data nodes pod) | `10` |
|
||||
| `data.livenessProbe.timeoutSeconds` | When the probe times out (data nodes pod) | `5` |
|
||||
| `data.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (data nodes pod) | `1` |
|
||||
| `data.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `data.podAnnotations` | Annotations for data pods. | `{}` |
|
||||
| `data.readinessProbe.enabled` | Enable/disable the readiness probe (data nodes pod) | `true` |
|
||||
| `data.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (data nodes pod) | `90` |
|
||||
| `data.readinessProbe.periodSeconds` | How often to perform the probe (data nodes pod) | `10` |
|
||||
| `data.readinessProbe.timeoutSeconds` | When the probe times out (data nodes pod) | `5` |
|
||||
| `data.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (data nodes pod) | `1` |
|
||||
| `data.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `ingest.enabled` | Enable ingest nodes | `false` |
|
||||
| `ingest.name` | Ingest node pod name | `ingest` |
|
||||
| `ingest.replicas` | Desired number of Elasticsearch ingest nodes | `2` |
|
||||
| `ingest.heapSize` | Ingest node heap size | `128m` |
|
||||
| `ingest.antiAffinity` | Ingest node pod anti-affinity policy | `soft` |
|
||||
| `ingest.nodeAffinity` | Ingest node pod affinity policy | `nil` |
|
||||
| `ingest.service.type` | Kubernetes Service type (ingest nodes) | `ClusterIP` |
|
||||
| `ingest.service.port` | Kubernetes Service port Elasticsearch transport port (ingest nodes) | `9300` |
|
||||
| `ingest.service.nodePort` | Kubernetes Service nodePort (ingest nodes) | `nil` |
|
||||
| `ingest.service.annotations` | Annotations for ingest nodes service | {} |
|
||||
| `ingest.service.loadBalancerIP` | loadBalancerIP if ingest nodes service type is `LoadBalancer` | `nil` |
|
||||
| `ingest.resources` | CPU/Memory resource requests/limits for ingest nodes pods | `requests: { cpu: "25m", memory: "256Mi" }` |
|
||||
| `ingest.livenessProbe.enabled` | Enable/disable the liveness probe (ingest nodes pod) | `true` |
|
||||
| `ingest.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (ingest nodes pod) | `90` |
|
||||
| `ingest.livenessProbe.periodSeconds` | How often to perform the probe (ingest nodes pod) | `10` |
|
||||
| `ingest.livenessProbe.timeoutSeconds` | When the probe times out (ingest nodes pod) | `5` |
|
||||
| `ingest.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (ingest nodes pod) | `1` |
|
||||
| `ingest.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `ingest.podAnnotations` | Annotations for ingest pods. | `{}` |
|
||||
| `ingest.readinessProbe.enabled` | Enable/disable the readiness probe (ingest nodes pod) | `true` |
|
||||
| `ingest.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (ingest nodes pod) | `90` |
|
||||
| `ingest.readinessProbe.periodSeconds` | How often to perform the probe (ingest nodes pod) | `10` |
|
||||
| `ingest.readinessProbe.timeoutSeconds` | When the probe times out (ingest nodes pod) | `5` |
|
||||
| `ingest.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (ingest nodes pod) | `1` |
|
||||
| `ingest.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `metrics.enabled` | Enable prometheus exporter | `false` |
|
||||
| `metrics.name` | Metrics pod name | `metrics` |
|
||||
| `metrics.image.registry` | Metrics exporter image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Metrics exporter image repository | `bitnami/elasticsearch-exporter` |
|
||||
| `metrics.image.tag` | Metrics exporter image tag | `1.0.2` |
|
||||
| `metrics.image.pullPolicy` | Metrics exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.service.type` | Metrics exporter endpoint service type | `ClusterIP` |
|
||||
| `metrics.resources` | Metrics exporter resource requests/limit | `requests: { cpu: "25m" }` |
|
||||
| `metrics.podAnnotations` | Annotations for metrics pods. | `{}` |
|
||||
| `sysctlImage.enabled` | Enable kernel settings modifier image | `false` |
|
||||
| `sysctlImage.registry` | Kernel settings modifier image registry | `docker.io` |
|
||||
| `sysctlImage.repository` | Kernel settings modifier image repository | `bitnami/minideb` |
|
||||
| `sysctlImage.tag` | Kernel settings modifier image tag | `latest` |
|
||||
| `sysctlImage.pullPolicy` | Kernel settings modifier image pull policy | `Always` |
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Elasticsearch image registry | `docker.io` |
|
||||
| `image.repository` | Elasticsearch image repository | `bitnami/elasticsearch` |
|
||||
| `image.tag` | Elasticsearch image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `nameOverride` | String to partially override elasticsearch.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override elasticsearch.fullname template with a string | `nil` |
|
||||
| `name` | Elasticsearch cluster name | `elastic` |
|
||||
| `plugins` | Comma, semi-colon or space separated list of plugins to install at initialization | `nil` |
|
||||
| `config` | Elasticsearch node custom configuration | `` |
|
||||
| `master.name` | Master-eligible node pod name | `master` |
|
||||
| `master.replicas` | Desired number of Elasticsearch master-eligible nodes | `2` |
|
||||
| `master.heapSize` | Master-eligible node heap size | `128m` |
|
||||
| `master.antiAffinity` | Master-eligible node pod anti-affinity policy | `soft` |
|
||||
| `coordinating.nodeAffinity` | Master-eligible node affinity policy | `nil` |
|
||||
| `master.service.type` | Kubernetes Service type (master-eligible nodes) | `ClusterIP` |
|
||||
| `master.service.port` | Kubernetes Service port for Elasticsearch transport port (master-eligible nodes) | `9300` |
|
||||
| `master.service.nodePort` | Kubernetes Service nodePort (master-eligible nodes) | `nil` |
|
||||
| `master.service.annotations` | Annotations for master-eligible nodes service | {} |
|
||||
| `master.service.loadBalancerIP` | loadBalancerIP if master-eligible nodes service type is `LoadBalancer` | `nil` |
|
||||
| `master.resources` | CPU/Memory resource requests/limits for master-eligible nodes pods | `requests: { cpu: "25m", memory: "256Mi" }` |
|
||||
| `master.livenessProbe.enabled` | Enable/disable the liveness probe (master-eligible nodes pod) | `true` |
|
||||
| `master.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (master-eligible nodes pod) | `90` |
|
||||
| `master.livenessProbe.periodSeconds` | How often to perform the probe (master-eligible nodes pod) | `10` |
|
||||
| `master.livenessProbe.timeoutSeconds` | When the probe times out (master-eligible nodes pod) | `5` |
|
||||
| `master.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (master-eligible nodes pod) | `1` |
|
||||
| `master.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `master.podAnnotations` | Annotations for master pods. | `{}` |
|
||||
| `master.readinessProbe.enabled` | Enable/disable the readiness probe (master-eligible nodes pod) | `true` |
|
||||
| `master.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (master-eligible nodes pod) | `90` |
|
||||
| `master.readinessProbe.periodSeconds` | How often to perform the probe (master-eligible nodes pod) | `10` |
|
||||
| `master.readinessProbe.timeoutSeconds` | When the probe times out (master-eligible nodes pod) | `5` |
|
||||
| `master.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (master-eligible nodes pod) | `1` |
|
||||
| `master.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `discovery.name` | Discover node pod name | `discovery` |
|
||||
| `coordinating.name` | Coordinating-only node pod name | `coordinating-only` |
|
||||
| `coordinating.replicas` | Desired number of Elasticsearch coordinating-only nodes | `2` |
|
||||
| `coordinating.heapSize` | Coordinating-only node heap size | `128m` |
|
||||
| `coordinating.antiAffinity` | Coordinating-only node pod anti-affinity policy | `soft` |
|
||||
| `coordinating.nodeAffinity` | Coordinating-only node affinity policy | `nil` |
|
||||
| `coordinating.podAnnotations` | Annotations for coordniating pods. | `{}` |
|
||||
| `coordinating.service.type` | Kubernetes Service type (coordinating-only nodes) | `ClusterIP` |
|
||||
| `coordinating.service.port` | Kubernetes Service port for REST API (coordinating-only nodes) | `9200` |
|
||||
| `coordinating.service.nodePort` | Kubernetes Service nodePort (coordinating-only nodes) | `nil` |
|
||||
| `coordinating.service.annotations` | Annotations for coordinating-only nodes service | {} |
|
||||
| `coordinating.service.loadBalancerIP` | loadBalancerIP if coordinating-only nodes service type is `LoadBalancer` | `nil` |
|
||||
| `coordinating.resources` | CPU/Memory resource requests/limits for coordinating-only nodes pods | `requests: { cpu: "25m", memory: "256Mi" }` |
|
||||
| `coordinating.livenessProbe.enabled` | Enable/disable the liveness probe (coordinating-only nodes pod) | `true` |
|
||||
| `coordinating.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (coordinating-only nodes pod) | `90` |
|
||||
| `coordinating.livenessProbe.periodSeconds` | How often to perform the probe (coordinating-only nodes pod) | `10` |
|
||||
| `coordinating.livenessProbe.timeoutSeconds` | When the probe times out (coordinating-only nodes pod) | `5` |
|
||||
| `coordinating.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (coordinating-only nodes pod) | `1` |
|
||||
| `coordinating.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `coordinating.readinessProbe.enabled` | Enable/disable the readiness probe (coordinating-only nodes pod) | `true` |
|
||||
| `coordinating.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (coordinating-only nodes pod) | `90` |
|
||||
| `coordinating.readinessProbe.periodSeconds` | How often to perform the probe (coordinating-only nodes pod) | `10` |
|
||||
| `coordinating.readinessProbe.timeoutSeconds` | When the probe times out (coordinating-only nodes pod) | `5` |
|
||||
| `coordinating.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (coordinating-only nodes pod) | `1` |
|
||||
| `coordinating.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `data.name` | Data node pod name | `data` |
|
||||
| `data.replicas` | Desired number of Elasticsearch data nodes | `3` |
|
||||
| `data.updateStrategy.type` | Update strategy for Data statefulset | `RollingUpdate` |
|
||||
| `data.updateStrategy.rollingUpdatePartition` | Partition update strategy for Data statefulset | `nil` |
|
||||
| `data.heapSize` | Data node heap size | `1024m` |
|
||||
| `data.antiAffinity` | Data pod anti-affinity policy | `soft` |
|
||||
| `data.nodeAffinity` | Data pod node affinity policy | `nil` |
|
||||
| `data.resources` | CPU/Memory resource requests/limits for data nodes | `requests: { cpu: "25m", memory: "1152Mi" }` |
|
||||
| `data.persistence.enabled` | Enable persistence using a `PersistentVolumeClaim` | `true` |
|
||||
| `data.persistence.annotations` | Persistent Volume Claim annotations | `{}` |
|
||||
| `data.persistence.storageClass` | Persistent Volume Storage Class | `` |
|
||||
| `data.persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `data.persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `data.livenessProbe.enabled` | Enable/disable the liveness probe (data nodes pod) | `true` |
|
||||
| `data.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (data nodes pod) | `90` |
|
||||
| `data.livenessProbe.periodSeconds` | How often to perform the probe (data nodes pod) | `10` |
|
||||
| `data.livenessProbe.timeoutSeconds` | When the probe times out (data nodes pod) | `5` |
|
||||
| `data.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (data nodes pod) | `1` |
|
||||
| `data.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `data.podAnnotations` | Annotations for data pods. | `{}` |
|
||||
| `data.readinessProbe.enabled` | Enable/disable the readiness probe (data nodes pod) | `true` |
|
||||
| `data.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (data nodes pod) | `90` |
|
||||
| `data.readinessProbe.periodSeconds` | How often to perform the probe (data nodes pod) | `10` |
|
||||
| `data.readinessProbe.timeoutSeconds` | When the probe times out (data nodes pod) | `5` |
|
||||
| `data.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (data nodes pod) | `1` |
|
||||
| `data.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `ingest.enabled` | Enable ingest nodes | `false` |
|
||||
| `ingest.name` | Ingest node pod name | `ingest` |
|
||||
| `ingest.replicas` | Desired number of Elasticsearch ingest nodes | `2` |
|
||||
| `ingest.heapSize` | Ingest node heap size | `128m` |
|
||||
| `ingest.antiAffinity` | Ingest node pod anti-affinity policy | `soft` |
|
||||
| `ingest.nodeAffinity` | Ingest node pod affinity policy | `nil` |
|
||||
| `ingest.service.type` | Kubernetes Service type (ingest nodes) | `ClusterIP` |
|
||||
| `ingest.service.port` | Kubernetes Service port Elasticsearch transport port (ingest nodes) | `9300` |
|
||||
| `ingest.service.nodePort` | Kubernetes Service nodePort (ingest nodes) | `nil` |
|
||||
| `ingest.service.annotations` | Annotations for ingest nodes service | {} |
|
||||
| `ingest.service.loadBalancerIP` | loadBalancerIP if ingest nodes service type is `LoadBalancer` | `nil` |
|
||||
| `ingest.resources` | CPU/Memory resource requests/limits for ingest nodes pods | `requests: { cpu: "25m", memory: "256Mi" }` |
|
||||
| `ingest.livenessProbe.enabled` | Enable/disable the liveness probe (ingest nodes pod) | `true` |
|
||||
| `ingest.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (ingest nodes pod) | `90` |
|
||||
| `ingest.livenessProbe.periodSeconds` | How often to perform the probe (ingest nodes pod) | `10` |
|
||||
| `ingest.livenessProbe.timeoutSeconds` | When the probe times out (ingest nodes pod) | `5` |
|
||||
| `ingest.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (ingest nodes pod) | `1` |
|
||||
| `ingest.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `ingest.podAnnotations` | Annotations for ingest pods. | `{}` |
|
||||
| `ingest.readinessProbe.enabled` | Enable/disable the readiness probe (ingest nodes pod) | `true` |
|
||||
| `ingest.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (ingest nodes pod) | `90` |
|
||||
| `ingest.readinessProbe.periodSeconds` | How often to perform the probe (ingest nodes pod) | `10` |
|
||||
| `ingest.readinessProbe.timeoutSeconds` | When the probe times out (ingest nodes pod) | `5` |
|
||||
| `ingest.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed (ingest nodes pod) | `1` |
|
||||
| `ingest.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded | `5` |
|
||||
| `metrics.enabled` | Enable prometheus exporter | `false` |
|
||||
| `metrics.name` | Metrics pod name | `metrics` |
|
||||
| `metrics.image.registry` | Metrics exporter image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Metrics exporter image repository | `bitnami/elasticsearch-exporter` |
|
||||
| `metrics.image.tag` | Metrics exporter image tag | `1.0.2` |
|
||||
| `metrics.image.pullPolicy` | Metrics exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.service.type` | Metrics exporter endpoint service type | `ClusterIP` |
|
||||
| `metrics.resources` | Metrics exporter resource requests/limit | `requests: { cpu: "25m" }` |
|
||||
| `metrics.podAnnotations` | Annotations for metrics pods. | `{}` |
|
||||
| `sysctlImage.enabled` | Enable kernel settings modifier image | `false` |
|
||||
| `sysctlImage.registry` | Kernel settings modifier image registry | `docker.io` |
|
||||
| `sysctlImage.repository` | Kernel settings modifier image repository | `bitnami/minideb` |
|
||||
| `sysctlImage.tag` | Kernel settings modifier image tag | `latest` |
|
||||
| `sysctlImage.pullPolicy` | Kernel settings modifier image pull policy | `Always` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -370,6 +378,15 @@ The [Bitnami Elasticsearch](https://github.com/bitnami/bitnami-docker-elasticsea
|
||||
|
||||
By default, the chart mounts a [Persistent Volume](http://kubernetes.io/docs/user-guide/persistent-volumes/) at this location. The volume is created using dynamic volume provisioning. See the [Configuration](#configuration) section to configure the PVC.
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
Currently, Elasticsearch requires some changes in the kernel of the host machine to work as expected. If those values are not set in the underlying operating system, the ES containers fail to boot with ERROR messages. More information about these requirements can be found in the links below:
|
||||
|
||||
@@ -11,9 +11,17 @@ Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "elasticsearch.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
@@ -160,7 +168,7 @@ imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.sysctlImage.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.sysctlImage.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -171,8 +179,11 @@ imagePullSecrets:
|
||||
{{- range .Values.sysctlImage.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.sysctlImage.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.image.pullSecrets .Values.sysctlImage.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -183,5 +194,31 @@ imagePullSecrets:
|
||||
{{- range .Values.sysctlImage.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "elasticsearch.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -66,9 +66,9 @@ spec:
|
||||
{{- if .Values.data.nodeAffinity }}
|
||||
{{ toYaml .Values.data.nodeAffinity | indent 8 }}
|
||||
{{- end }}
|
||||
initContainers:
|
||||
{{- if .Values.sysctlImage.enabled }}
|
||||
## Image that performs the sysctl operation to modify Kernel settings (needed sometimes to avoid boot errors)
|
||||
initContainers:
|
||||
- name: sysctl
|
||||
image: {{ template "elasticsearch.sysctl.image" . }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
|
||||
@@ -76,6 +76,18 @@ spec:
|
||||
securityContext:
|
||||
privileged: true
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.data.persistence.enabled }}
|
||||
- name: volume-permissions
|
||||
image: "{{ template "elasticsearch.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "/bitnami/elasticsearch/data"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: "/bitnami/elasticsearch/data"
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: "elasticsearch"
|
||||
image: {{ template "elasticsearch.image" . }}
|
||||
|
||||
@@ -45,6 +45,32 @@ sysctlImage:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## String to partially override elasticsearch.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override elasticsearch.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Elasticsearch cluster name
|
||||
##
|
||||
name: elastic
|
||||
|
||||
@@ -45,6 +45,32 @@ sysctlImage:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## String to partially override elasticsearch.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override elasticsearch.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Elasticsearch cluster name
|
||||
##
|
||||
name: elastic
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: etcd
|
||||
version: 3.1.1
|
||||
version: 4.1.0
|
||||
appVersion: 3.3.13
|
||||
description: etcd is a distributed key value store that provides a reliable way to store data across a cluster of machines
|
||||
keywords:
|
||||
|
||||
+93
-78
@@ -45,84 +45,90 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following tables lists the configurable parameters of the etcd chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ----------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | etcd image registry | `docker.io` |
|
||||
| `image.repository` | etcd image name | `bitnami/etcd` |
|
||||
| `image.tag` | etcd image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | etcd image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug values should be set | `false` |
|
||||
| `nameOverride` | String to partially override etcd.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override etcd.fullname template with a string | `nil` |
|
||||
| `statefulset.updateStrategy` | Update strategy for the stateful set | `RollingUpdate` |
|
||||
| `statefulset.rollingUpdatePartition` | Partition for Rolling Update strategy | `nil` |
|
||||
| `statefulset.podManagementPolicy` | Pod management policy for the stateful set | `OrderedReady` |
|
||||
| `statefulset.replicaCount` | Number of etcd nodes | `1` |
|
||||
| `configFileConfigMap` | ConfigMap that contains a etcd.conf.yaml to be mounted | `nil` |
|
||||
| `envVarsConfigMap` | ConfigMap that contains environment variables to be set in the container | `nil` |
|
||||
| `allowNoneAuthentication` | Allow to use etcd without configuring RBAC authentication | `true` |
|
||||
| `maxProcs` | Set GOMAXPROCS environment variable to limit the number of CPUs | `nil` |
|
||||
| `auth.rbac.enabled` | Switch to enable the etcd authentication. | `true` |
|
||||
| `auth.rbac.rootPassword` | Password for the root user | `nil` |
|
||||
| `auth.rbac.existingSecret` | Name of the existing secret containing the root password | `nil` |
|
||||
| `auth.client.secureTransport` | Switch to encrypt client communication using TLS certificates | `false` |
|
||||
| `auth.client.useAutoTLS` | Switch to automatically create the TLS certificates | `false` |
|
||||
| `auth.client.enableAuthentication` | Switch to enable host authentication using TLS certificates. Requires existing secret. | `secret` |
|
||||
| `auth.client.existingSecret` | Name of the existing secret containing cert files for client communication. | `nil` |
|
||||
| `auth.peer.secureTransport` | Switch to encrypt peer communication using TLS certificates | `false` |
|
||||
| `auth.peer.useAutoTLS` | Switch to automatically create the TLS certificates | `false` |
|
||||
| `auth.peer.enableAuthentication` | Switch to enable host authentication using TLS certificates. Requires existing secret. | `false` |
|
||||
| `auth.peer.existingSecret` | Name of the existing secret containing cert files for peer communication. | `nil` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `service.dnsBase` | Kubernetes service cluster dns base name | `svc.cluster.local` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.port` | etcd client port | `2379` |
|
||||
| `service.nodePort` | Port to bind to for NodePort service type (client port) | `nil` |
|
||||
| `service.peerPort` | etcd peer port | `2380` |
|
||||
| `service.peerNodePort` | Port to bind to for NodePort service type (peer port) | `nil` |
|
||||
| `service.annotations` | Annotations for etcd service | `{}` |
|
||||
| `service.loadBalancerIP` | loadBalancerIP if etcd service type is `LoadBalancer` | `nil` |
|
||||
| `persistence.enabled` | Enable persistence using PVC | `true` |
|
||||
| `persistence.storageClass` | PVC Storage Class for etcd volume | `nil` |
|
||||
| `persistence.accessMode` | PVC Access Mode for etcd volume | `ReadWriteOnce` |
|
||||
| `persistence.size` | PVC Storage Request for etcd volume | `8Gi` |
|
||||
| `persistence.annotations` | Annotations for the PVC | `{}` |
|
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `250m` |
|
||||
| `livenessProbe.enabled` | Turn on and off liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `10` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `2` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `readinessProbe.enabled` | Turn on and off readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `15` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `podAnnotations` | Annotations to be added to pods | `{}` |
|
||||
| `nodeAffinity` | Node Affinity rules for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `podAffinity` | Affinity rules for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `podAntiAffinity` | Anti-Affinity rules for pod assignment. Allowed values: `soft` and `hard` | `soft` |
|
||||
| `nodeSelector` | Node labels for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `tolerations` | Tolerations for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `metrics.enabled` | Enable Prometheus exporter to expose etcd metrics | `false` |
|
||||
| `metrics.podAnnotations` | Annotations for enabling prometheus to access the metrics endpoint | {`prometheus.io/scrape: "true",prometheus.io/port: "2379"`} |
|
||||
| `startFromSnapshot.enabled` | Initialize new cluster recovering an existing snapshot | `false` |
|
||||
| `startFromSnapshot.existingClaim` | PVC containing the existing snapshot | `nil` |
|
||||
| `startFromSnapshot.snapshotFilename` | Snapshot filename | `nil` |
|
||||
| `disasterRecovery.enabled` | Enable auto disaster recovery by periodically snapshotting the keyspace | `false` |
|
||||
| `disasterRecovery.cronjob.schedule` | Schedule in Cron format to save snapshots | `*/30 * * * *` |
|
||||
| `disasterRecovery.cronjob.historyLimit` | Number of successful finished jobs to retain | `1` |
|
||||
| `disasterRecovery.cronjob.podAnnotations` | Pod annotations for cronjob pods | `{}` |
|
||||
| `disasterRecovery.pvc.existingClaim` | Provide an existing `PersistentVolumeClaim`, the value is evaluated as a template. | `nil` |
|
||||
| `disasterRecovery.pvc.size` | PVC Storage Request | `2Gi` |
|
||||
| `disasterRecovery.pvc.storageClassName` | Storage Class for snapshots volume | `nfs` |
|
||||
| Parameter | Description | Default |
|
||||
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | etcd image registry | `docker.io` |
|
||||
| `image.repository` | etcd image name | `bitnami/etcd` |
|
||||
| `image.tag` | etcd image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | etcd image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug values should be set | `false` |
|
||||
| `nameOverride` | String to partially override etcd.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override etcd.fullname template with a string | `nil` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `statefulset.updateStrategy` | Update strategy for the stateful set | `RollingUpdate` |
|
||||
| `statefulset.rollingUpdatePartition` | Partition for Rolling Update strategy | `nil` |
|
||||
| `statefulset.podManagementPolicy` | Pod management policy for the stateful set | `OrderedReady` |
|
||||
| `statefulset.replicaCount` | Number of etcd nodes | `1` |
|
||||
| `configFileConfigMap` | ConfigMap that contains a etcd.conf.yaml to be mounted | `nil` |
|
||||
| `envVarsConfigMap` | ConfigMap that contains environment variables to be set in the container | `nil` |
|
||||
| `allowNoneAuthentication` | Allow to use etcd without configuring RBAC authentication | `true` |
|
||||
| `maxProcs` | Set GOMAXPROCS environment variable to limit the number of CPUs | `nil` |
|
||||
| `auth.rbac.enabled` | Switch to enable the etcd authentication. | `true` |
|
||||
| `auth.rbac.rootPassword` | Password for the root user | `nil` |
|
||||
| `auth.rbac.existingSecret` | Name of the existing secret containing the root password | `nil` |
|
||||
| `auth.client.secureTransport` | Switch to encrypt client communication using TLS certificates | `false` |
|
||||
| `auth.client.useAutoTLS` | Switch to automatically create the TLS certificates | `false` |
|
||||
| `auth.client.enableAuthentication` | Switch to enable host authentication using TLS certificates. Requires existing secret. | `secret` |
|
||||
| `auth.client.existingSecret` | Name of the existing secret containing cert files for client communication. | `nil` |
|
||||
| `auth.peer.secureTransport` | Switch to encrypt peer communication using TLS certificates | `false` |
|
||||
| `auth.peer.useAutoTLS` | Switch to automatically create the TLS certificates | `false` |
|
||||
| `auth.peer.enableAuthentication` | Switch to enable host authentication using TLS certificates. Requires existing secret. | `false` |
|
||||
| `auth.peer.existingSecret` | Name of the existing secret containing cert files for peer communication. | `nil` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `service.dnsBase` | Kubernetes service cluster dns base name | `svc.cluster.local` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.port` | etcd client port | `2379` |
|
||||
| `service.nodePort` | Port to bind to for NodePort service type (client port) | `nil` |
|
||||
| `service.peerPort` | etcd peer port | `2380` |
|
||||
| `service.peerNodePort` | Port to bind to for NodePort service type (peer port) | `nil` |
|
||||
| `service.annotations` | Annotations for etcd service | `{}` |
|
||||
| `service.loadBalancerIP` | loadBalancerIP if etcd service type is `LoadBalancer` | `nil` |
|
||||
| `persistence.enabled` | Enable persistence using PVC | `true` |
|
||||
| `persistence.storageClass` | PVC Storage Class for etcd volume | `nil` |
|
||||
| `persistence.accessMode` | PVC Access Mode for etcd volume | `ReadWriteOnce` |
|
||||
| `persistence.size` | PVC Storage Request for etcd volume | `8Gi` |
|
||||
| `persistence.annotations` | Annotations for the PVC | `{}` |
|
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `250m` |
|
||||
| `livenessProbe.enabled` | Turn on and off liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `10` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `2` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `readinessProbe.enabled` | Turn on and off readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `15` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | `1` |
|
||||
| `podAnnotations` | Annotations to be added to pods | `{}` |
|
||||
| `nodeAffinity` | Node Affinity rules for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `podAffinity` | Affinity rules for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `podAntiAffinity` | Anti-Affinity rules for pod assignment. Allowed values: `soft` and `hard` | `soft` |
|
||||
| `nodeSelector` | Node labels for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `tolerations` | Tolerations for pod assignment. The value is evaluated as a template. | `{}` |
|
||||
| `metrics.enabled` | Enable Prometheus exporter to expose etcd metrics | `false` |
|
||||
| `metrics.podAnnotations` | Annotations for enabling prometheus to access the metrics endpoint | {`prometheus.io/scrape: "true",prometheus.io/port: "2379"`} |
|
||||
| `startFromSnapshot.enabled` | Initialize new cluster recovering an existing snapshot | `false` |
|
||||
| `startFromSnapshot.existingClaim` | PVC containing the existing snapshot | `nil` |
|
||||
| `startFromSnapshot.snapshotFilename` | Snapshot filename | `nil` |
|
||||
| `disasterRecovery.enabled` | Enable auto disaster recovery by periodically snapshotting the keyspace | `false` |
|
||||
| `disasterRecovery.cronjob.schedule` | Schedule in Cron format to save snapshots | `*/30 * * * *` |
|
||||
| `disasterRecovery.cronjob.historyLimit` | Number of successful finished jobs to retain | `1` |
|
||||
| `disasterRecovery.cronjob.podAnnotations` | Pod annotations for cronjob pods | `{}` |
|
||||
| `disasterRecovery.pvc.existingClaim` | Provide an existing `PersistentVolumeClaim`, the value is evaluated as a template. | `nil` |
|
||||
| `disasterRecovery.pvc.size` | PVC Storage Request | `2Gi` |
|
||||
| `disasterRecovery.pvc.storageClassName` | Storage Class for snapshots volume | `nfs` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -296,6 +302,15 @@ $ helm install --name my-release bitnami/etcd \
|
||||
--set persistence.size=8Gi
|
||||
```
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
### Disaster recovery
|
||||
|
||||
You can enable auto disaster recovery by periodically snapshotting the keyspace. If the cluster permanently loses more than (N-1)/2 members, it tries to recover the cluster from a previous snapshot.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "etcd.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
@@ -146,17 +146,23 @@ imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if .Values.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if .Values.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -212,3 +218,26 @@ etcd: mode
|
||||
"hard". Please set a valid mode (--set podAntiAffinity="xxxx")
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "etcd.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -94,7 +94,7 @@ data:
|
||||
## Check wether the member was succesfully removed from the cluster
|
||||
should_add_new_member() {
|
||||
return_value=0
|
||||
if (grep -E "^Member [a-z0-9]+ removed from cluster [a-z0-9]+$" "$(dirname "$ETCD_DATA_DIR")/member_removal.log" > /dev/null) || \
|
||||
if (grep -E "^Member[[:space:]]+[a-z0-9]+ removed from cluster [a-z0-9]+$" "$(dirname "$ETCD_DATA_DIR")/member_removal.log" > /dev/null) || \
|
||||
! ([[ -d "$ETCD_DATA_DIR/member/snap" ]] && [[ -f "$ETCD_DATA_DIR/member_id" ]]); then
|
||||
rm -rf $ETCD_DATA_DIR/*
|
||||
else
|
||||
@@ -193,9 +193,6 @@ data:
|
||||
|
||||
# Constants
|
||||
AUTH_OPTIONS="{{ $etcdAuthOptions }}"
|
||||
ETCDCTL_ENDPOINTS="{{range $i, $e := until $replicaCount }}{{ $etcdClientProtocol }}://{{ $etcdFullname }}-{{ $e }}.{{ $etcdHeadlessServiceName }}.{{ $releaseNamespace }}.{{ $dnsBase }}:{{ $clientPort }},{{ end }}"
|
||||
# Remove the last comma "," introduced in the string
|
||||
export ETCDCTL_ENDPOINTS="$(sed 's/,/ /g' <<< $ETCDCTL_ENDPOINTS | awk '{$1=$1};1' | sed 's/ /,/g')"
|
||||
|
||||
etcdctl $AUTH_OPTIONS endpoint health >/dev/null 2>&1
|
||||
{{- if .Values.disasterRecovery.enabled }}
|
||||
|
||||
@@ -79,6 +79,19 @@ spec:
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations: {{ tpl (toYaml .) $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "etcd.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "/bitnami/etcd"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: "/bitnami/etcd"
|
||||
{{- end }}
|
||||
containers:
|
||||
# Variables to populate static cluster
|
||||
{{- $replicaCount := int .Values.statefulset.replicaCount }}
|
||||
|
||||
@@ -31,11 +31,39 @@ image:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override etcd.fullname template (will maintain the release name)
|
||||
# nameOverride:
|
||||
## String to partially override etcd.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override etcd.fullname template
|
||||
# fullnameOverride:
|
||||
## String to fully override etcd.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## String to partially override etcd.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override etcd.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
statefulset:
|
||||
## Update strategy, can be set to RollingUpdate or OnDelete by default.
|
||||
@@ -49,7 +77,7 @@ statefulset:
|
||||
## Pod management policy
|
||||
## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
|
||||
##
|
||||
podManagementPolicy: OrderedReady
|
||||
podManagementPolicy: Parallel
|
||||
## Number od replicas
|
||||
##
|
||||
replicaCount: 3
|
||||
|
||||
@@ -31,11 +31,31 @@ image:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override etcd.fullname template (will maintain the release name)
|
||||
# nameOverride:
|
||||
## String to partially override etcd.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override etcd.fullname template
|
||||
# fullnameOverride:
|
||||
## String to fully override etcd.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
statefulset:
|
||||
## Update strategy, can be set to RollingUpdate or OnDelete by default.
|
||||
@@ -49,7 +69,7 @@ statefulset:
|
||||
## Pod management policy
|
||||
## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
|
||||
##
|
||||
podManagementPolicy: OrderedReady
|
||||
podManagementPolicy: Parallel
|
||||
## Number od replicas
|
||||
##
|
||||
replicaCount: 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: harbor
|
||||
version: 0.0.5
|
||||
version: 2.1.1
|
||||
appVersion: 1.8.1
|
||||
description: Harbor is an an open source trusted cloud native registry project that stores, signs, and scans content
|
||||
keywords:
|
||||
|
||||
@@ -100,6 +100,15 @@ If Harbor is deployed behind the proxy, set it as the URL of proxy.
|
||||
|
||||
Secrets and certificates must be setup to avoid changes on every Helm upgrade (see: [#107](https://github.com/goharbor/harbor-helm/issues/107)).
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the images run as non-root by default, it is necessary to adjust the ownership of the persistent volumes so that the containers can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
### Configure the deployment options:
|
||||
|
||||
The following table lists the configurable parameters of the Harbor chart and the default values. They can be configured in `values.yaml` or set via `--set` flag during installation.
|
||||
@@ -109,7 +118,7 @@ The following table lists the configurable parameters of the Harbor chart and th
|
||||
| **Expose** |
|
||||
| `service.type` | The way how to expose the service: `Ingress`, `ClusterIP`, `NodePort` or `LoadBalancer` | `ingress` |
|
||||
| `service.tls.enabled` | Enable the tls or not | `true` |
|
||||
| `service.ingress.controller` | The ingress controller type. Currently supports `default` and `gce` | `default` |
|
||||
| `service.ingress.controller` | The ingress controller type. Currently supports `default`, `gce` and `ncp` | `default` |
|
||||
| `service.tls.secretName` | Fill the name of secret if you want to use your own TLS certificate and private key. The secret must contain two keys named `tls.crt` and `tls.key` that contain the certificate and private key to use for TLS. Will be generated automatically if not set | `nil` |
|
||||
| `service.tls.notarySecretName` | By default, the Notary service will use the same cert and key as described above. Fill the name of secret if you want to use a separated one. Only needed when the `service.type` is `ingress`. | `nil` |
|
||||
| `service.tls.commonName` | The common name used to generate the certificate, it's necessary when the `service.type` is `ClusterIP` or `NodePort` and `service.tls.secretName` is null | `nil` |
|
||||
@@ -131,6 +140,8 @@ The following table lists the configurable parameters of the Harbor chart and th
|
||||
| `service.loadBalancer.ports.httpPort` | The service port Harbor listens on when serving with HTTP | `80` |
|
||||
| `service.loadBalancer.ports.httpsPort` | The service port Harbor listens on when serving with HTTP | `30002` |
|
||||
| `service.loadBalancer.ports.notaryPort` | The service port Notary listens on. Only needed when `notary.enabled` is set to `true` | `nil` |
|
||||
| `service.loadBalancer.annotations` | The annotations attached to the loadBalancer service | {} |
|
||||
| `service.loadBalancer.sourceRanges` | List of IP address ranges to assign to loadBalancerSourceRanges | [] |
|
||||
| **Persistence** |
|
||||
| `persistence.enabled` | Enable the data persistence or not | `true` |
|
||||
| `persistence.resourcePolicy` | Setting it to `keep` to avoid removing PVCs during a helm delete operation. Leaving it empty will delete PVCs after the chart deleted | `keep` |
|
||||
@@ -147,11 +158,19 @@ The following table lists the configurable parameters of the Harbor chart and th
|
||||
| `persistence.imageChartStorage.disableredirect` | The configuration for managing redirects from content backends. For backends which do not supported it (such as using minio for `s3` storage type), please set it to `true` to disable redirects. Refer to the [guide](https://github.com/docker/distribution/blob/master/docs/configuration.md#redirect) for more information about the detail | `false` |
|
||||
| `persistence.imageChartStorage.type` | The type of storage for images and charts: `filesystem`, `azure`, `gcs`, `s3`, `swift` or `oss`. The type must be `filesystem` if you want to use persistent volumes for registry and chartmuseum. Refer to the [guide](https://github.com/docker/distribution/blob/master/docs/configuration.md#storage) for more information about the detail | `filesystem` |
|
||||
| **General** |
|
||||
| `nameOverride` | String to partially override harbor.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override harbor.fullname template with a string | `nil` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `externalURL` | The external URL for Harbor core service | `https://core.harbor.domain` |
|
||||
| `imagePullPolicy` | The image pull policy | `IfNotPresent` |
|
||||
| `logLevel` | The log level | `debug` |
|
||||
| `forcePassword` | Option to ensure all passwords and keys are set by the user | `false` |
|
||||
| `harborAdminPassword` | The initial password of Harbor admin. Change it from portal after launching Harbor | `Harbor12345` |
|
||||
| `harborAdminPassword` | The initial password of Harbor admin. Change it from portal after launching Harbor | _random 10 character long alphanumeric string_ |
|
||||
| `secretkey` | The key used for encryption. Must be a string of 16 chars | `not-a-secure-key` |
|
||||
| **Nginx** (if expose the service via `ingress`, the Nginx will not be used) |
|
||||
| `nginxImage.registry` | Registry for Nginx image | `docker.io` |
|
||||
@@ -344,4 +363,40 @@ This chart includes a `values-production.yaml` file where you can find some para
|
||||
|
||||
It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.
|
||||
|
||||
Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.
|
||||
Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.
|
||||
|
||||
## Upgrade
|
||||
|
||||
## 2.0.0
|
||||
|
||||
In this version, two major changes were performed:
|
||||
|
||||
- This **chart depends on the Redis 5 chart instead of Redis 4**. There is a breaking change that will affect releases with `metrics.enabled: true`, since the default tag for the exporter image is now `v1.x.x`. This introduces many changes including metrics names. You'll want to use [this dashboard](https://github.com/oliver006/redis_exporter/blob/master/contrib/grafana_prometheus_redis_dashboard.json) now. Please see the [redis_exporter github page](https://github.com/oliver006/redis_exporter#upgrading-from-0x-to-1x) for more details.
|
||||
- This **chart depends on the PostgreSQL 11 chart instead of PostgreSQL 10**. You can find the main difference and notable changes in the following links: [https://www.postgresql.org/about/news/1894/](https://www.postgresql.org/about/news/1894/) and [https://www.postgresql.org/about/featurematrix/](https://www.postgresql.org/about/featurematrix/).
|
||||
|
||||
For major releases of PostgreSQL, the internal data storage format is subject to change, thus complicating upgrades, you can see some errors like the following one in the logs:
|
||||
|
||||
```bash
|
||||
Welcome to the Bitnami postgresql container
|
||||
Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-postgresql
|
||||
Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-postgresql/issues
|
||||
Send us your feedback at containers@bitnami.com
|
||||
|
||||
INFO ==> ** Starting PostgreSQL setup **
|
||||
NFO ==> Validating settings in POSTGRESQL_* env vars..
|
||||
INFO ==> Initializing PostgreSQL database...
|
||||
INFO ==> postgresql.conf file not detected. Generating it...
|
||||
INFO ==> pg_hba.conf file not detected. Generating it...
|
||||
INFO ==> Deploying PostgreSQL with persisted data...
|
||||
INFO ==> Configuring replication parameters
|
||||
INFO ==> Loading custom scripts...
|
||||
INFO ==> Enabling remote connections
|
||||
INFO ==> Stopping PostgreSQL...
|
||||
INFO ==> ** PostgreSQL setup finished! **
|
||||
|
||||
INFO ==> ** Starting PostgreSQL **
|
||||
[1] FATAL: database files are incompatible with server
|
||||
[1] DETAIL: The data directory was initialized by PostgreSQL version 10, which is not compatible with this version 11.3.
|
||||
```
|
||||
|
||||
In this case, you should migrate the data from the old PostgreSQL chart to the new one following an approach similar to that described in [this section](https://www.postgresql.org/docs/current/upgrading.html#UPGRADING-VIA-PGDUMPALL) from the official documentation. Basically, create a database dump in the old chart, move and restore it in the new one.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dependencies:
|
||||
- name: postgresql
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 4.2.2
|
||||
version: 6.0.0
|
||||
- name: redis
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 7.1.1
|
||||
digest: sha256:df803216464c2e9422e4a97214aad873cc91214543ab8eb399da8005db862a95
|
||||
generated: 2019-05-28T18:02:33.507059362+02:00
|
||||
version: 8.1.5
|
||||
digest: sha256:ede675b32be35e162fd579435285659a802d0dbf0c79827200cbc621f7414e64
|
||||
generated: "2019-07-23T13:39:31.954606+02:00"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dependencies:
|
||||
- name: postgresql
|
||||
version: 4.x.x
|
||||
version: 6.x.x
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
condition: postgresql.enabled
|
||||
- name: redis
|
||||
version: 7.x.x
|
||||
version: 8.x.x
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
condition: redis.enabled
|
||||
|
||||
@@ -19,9 +19,17 @@ Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "harbor.fullname" -}}
|
||||
{{- $name := default "harbor" .Values.nameOverride -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Helm required labels */}}
|
||||
{{- define "harbor.labels" -}}
|
||||
@@ -534,7 +542,7 @@ imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if or .Values.harbor.coreImage.pullSecrets .Values.portalImage.pullSecrets .Values.jobserviceImage.pullSecrets .Values.registryImage.pullSecrets .Values.registryctlImage.pullSecrets .Values.nginxImage.pullSecrets}}
|
||||
{{- else if or .Values.harbor.coreImage.pullSecrets .Values.portalImage.pullSecrets .Values.jobserviceImage.pullSecrets .Values.registryImage.pullSecrets .Values.registryctlImage.pullSecrets .Values.nginxImage.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.harbor.coreImage.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -554,8 +562,11 @@ imagePullSecrets:
|
||||
{{- range .Values.nginxImage.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if or .Values.harbor.coreImage.pullSecrets .Values.portalImage.pullSecrets .Values.jobserviceImage.pullSecrets .Values.registryImage.pullSecrets .Values.registryctlImage.pullSecrets .Values.nginxImage.pullSecrets}}
|
||||
{{- else if or .Values.harbor.coreImage.pullSecrets .Values.portalImage.pullSecrets .Values.jobserviceImage.pullSecrets .Values.registryImage.pullSecrets .Values.registryctlImage.pullSecrets .Values.nginxImage.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.harbor.coreImage.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -575,6 +586,9 @@ imagePullSecrets:
|
||||
{{- range .Values.nginxImage.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -636,3 +650,26 @@ harbor: External PostgreSQL password
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "harbor.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -1,6 +1,28 @@
|
||||
{{- if eq .Values.service.type "Ingress" }}
|
||||
{{- $ingress := .Values.service.ingress -}}
|
||||
{{- $tls := .Values.service.tls -}}
|
||||
{{- if eq .Values.service.ingress.controller "gce" }}
|
||||
{{- $_ := set . "portal_path" "/*" -}}
|
||||
{{- $_ := set . "api_path" "/api/*" -}}
|
||||
{{- $_ := set . "service_path" "/service/*" -}}
|
||||
{{- $_ := set . "v2_path" "/v2/*" -}}
|
||||
{{- $_ := set . "chartrepo_path" "/chartrepo/*" -}}
|
||||
{{- $_ := set . "controller_path" "/c/*" -}}
|
||||
{{- else if eq .Values.service.ingress.controller "ncp" }}
|
||||
{{- $_ := set . "portal_path" "/" -}}
|
||||
{{- $_ := set . "api_path" "/api/.*" -}}
|
||||
{{- $_ := set . "service_path" "/service/.*" -}}
|
||||
{{- $_ := set . "v2_path" "/v2/.*" -}}
|
||||
{{- $_ := set . "chartrepo_path" "/chartrepo/.*" -}}
|
||||
{{- $_ := set . "controller_path" "/c/.*" -}}
|
||||
{{- else }}
|
||||
{{- $_ := set . "portal_path" "/" -}}
|
||||
{{- $_ := set . "api_path" "/api/" -}}
|
||||
{{- $_ := set . "service_path" "/service/" -}}
|
||||
{{- $_ := set . "v2_path" "/v2/" -}}
|
||||
{{- $_ := set . "chartrepo_path" "/chartrepo/" -}}
|
||||
{{- $_ := set . "controller_path" "/c/" -}}
|
||||
{{- end }}
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
@@ -34,73 +56,35 @@ spec:
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if eq .Values.service.ingress.controller "gce" }}
|
||||
rules:
|
||||
- http:
|
||||
paths:
|
||||
- path: /*
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.portal" . }}"
|
||||
servicePort: http
|
||||
- path: /api/*
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /service/*
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /v2/*
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /chartrepo/*
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /c/*
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
{{- if $ingress.hosts.core }}
|
||||
host: {{ $ingress.hosts.core }}
|
||||
{{- end }}
|
||||
{{- if .Values.notary.enabled }}
|
||||
- http:
|
||||
paths:
|
||||
- path: /
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.notary-server" . }}"
|
||||
servicePort: notary-server
|
||||
{{- if $ingress.hosts.notary }}
|
||||
host: {{ $ingress.hosts.notary }}
|
||||
{{- end }}
|
||||
{{- if eq .Values.service.ingress.controller "ncp" }}
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.portal" . }}"
|
||||
servicePort: http
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
rules:
|
||||
- http:
|
||||
paths:
|
||||
- path: /
|
||||
- path: {{ .portal_path }}
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.portal" . }}"
|
||||
servicePort: http
|
||||
- path: /api/
|
||||
- path: {{ .api_path }}
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /service/
|
||||
- path: {{ .service_path }}
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /v2/
|
||||
- path: {{ .v2_path }}
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /chartrepo/
|
||||
- path: {{ .chartrepo_path }}
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
- path: /c/
|
||||
- path: {{ .controller_path }}
|
||||
backend:
|
||||
serviceName: "{{ template "harbor.core" . }}"
|
||||
servicePort: http
|
||||
@@ -119,4 +103,3 @@ spec:
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -28,6 +28,20 @@ spec:
|
||||
fsGroup: {{ .Values.securityContext.fsGroup }}
|
||||
runAsUser: {{ .Values.securityContext.runAsUser }}
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "harbor.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "/var/log/jobs"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: job-logs
|
||||
mountPath: /var/log/jobs
|
||||
subPath: {{ .Values.persistence.persistentVolumeClaim.jobservice.subPath }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: jobservice
|
||||
image: "{{ template "harbor.jobserviceImage" . }}"
|
||||
|
||||
@@ -7,7 +7,7 @@ metadata:
|
||||
{{- include "harbor.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: nginx
|
||||
spec:
|
||||
replicas: 1
|
||||
replicas: {{ .Values.nginx.replicas }}
|
||||
selector:
|
||||
matchLabels: {{ include "harbor.matchLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: nginx
|
||||
@@ -109,4 +109,4 @@ spec:
|
||||
{{- with .Values.nginx.tolerations }}
|
||||
tolerations: {{ tpl (toYaml .) $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -55,8 +55,16 @@ spec:
|
||||
{{- $loadBalancer := .Values.service.loadBalancer }}
|
||||
name: {{ $loadBalancer.name }}
|
||||
labels: {{ include "harbor.labels" . | nindent 4 }}
|
||||
{{- with $loadBalancer.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
{{- with $loadBalancer.sourceRanges }}
|
||||
loadBalancerSourceRanges:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
port: {{ $loadBalancer.ports.httpPort }}
|
||||
@@ -75,4 +83,4 @@ spec:
|
||||
selector:
|
||||
{{- include "harbor.matchLabels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: nginx
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -10,6 +10,7 @@ spec:
|
||||
{{- end }}
|
||||
ports:
|
||||
- port: 4443
|
||||
targetPort: notary-server
|
||||
selector:
|
||||
{{ include "harbor.matchLabels" . | nindent 4 }}
|
||||
component: notary-server
|
||||
|
||||
@@ -29,6 +29,20 @@ spec:
|
||||
fsGroup: {{ .Values.securityContext.fsGroup }}
|
||||
runAsUser: {{ .Values.securityContext.runAsUser }}
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "harbor.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.imageChartStorage.filesystem.rootdirectory }}"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: registry-data
|
||||
mountPath: {{ .Values.persistence.imageChartStorage.filesystem.rootdirectory }}
|
||||
subPath: {{ .Values.persistence.persistentVolumeClaim.registry.subPath }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: registry
|
||||
image: "{{ template "harbor.registryImage" . }}"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
coreImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-core
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -37,7 +37,7 @@ coreImage:
|
||||
portalImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-portal
|
||||
tag: 1.8.1-debian-9-r0
|
||||
tag: 1.8.1-debian-9-r10
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -61,7 +61,7 @@ portalImage:
|
||||
jobserviceImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-jobservice
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -85,7 +85,7 @@ jobserviceImage:
|
||||
registryImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-registry
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -109,7 +109,7 @@ registryImage:
|
||||
registryctlImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-registryctl
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -133,7 +133,7 @@ registryctlImage:
|
||||
clairImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-clair
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -157,7 +157,7 @@ clairImage:
|
||||
notaryServerImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-notary-server
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -181,7 +181,7 @@ notaryServerImage:
|
||||
notarySignerImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-notary-signer
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -223,6 +223,32 @@ nginxImage:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override harbor.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override harbor.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
service:
|
||||
# Set the way how to expose the service. Set the type as "Ingress",
|
||||
# "ClusterIP", "NodePort" or "LoadBalancer" and fill the information
|
||||
@@ -245,7 +271,7 @@ service:
|
||||
# described above. Fill the name of secret if you want to use a
|
||||
# separated one. Only needed when the type is "ingress".
|
||||
notarySecretName: ""
|
||||
# The commmon name used to generate the certificate, it's necessary
|
||||
# The common name used to generate the certificate, it's necessary
|
||||
# when the type isn't "ingress" and "secretName" is null
|
||||
commonName: ""
|
||||
ingress:
|
||||
@@ -255,6 +281,7 @@ service:
|
||||
# set to the type of ingress controller if it has specific requirements.
|
||||
# leave as `default` for most ingress controllers.
|
||||
# set to `gce` if using the GCE ingress controller
|
||||
# set to `ncp` if using the NCP (NSX-T Container Plugin) ingress controller
|
||||
controller: default
|
||||
annotations:
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
@@ -303,6 +330,8 @@ service:
|
||||
# The service port Notary listens on. Only needed when notary.enabled
|
||||
# is set to true
|
||||
notaryPort: 4443
|
||||
annotations: {}
|
||||
sourceRanges: []
|
||||
|
||||
# The external URL for Harbor core service. It is used to
|
||||
# 1) populate the docker/helm commands showed on portal
|
||||
@@ -319,6 +348,13 @@ service:
|
||||
# If Harbor is deployed behind the proxy, set it as the URL of proxy
|
||||
externalURL: https://core.harbor.domain
|
||||
|
||||
## UAA Authentication Options
|
||||
# If you're using UAA for authentication behind a self-signed
|
||||
# certificate you will need to provide the CA Cert.
|
||||
# Set uaaSecretName below to provide a pre-created secret that
|
||||
# contains a base64 encoded CA Certificate named `ca.crt`.
|
||||
# uaaSecretName:
|
||||
|
||||
## Kubernetes Security Context
|
||||
## https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
|
||||
##
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
coreImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-core
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -37,7 +37,7 @@ coreImage:
|
||||
portalImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-portal
|
||||
tag: 1.8.1-debian-9-r0
|
||||
tag: 1.8.1-debian-9-r10
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -61,7 +61,7 @@ portalImage:
|
||||
jobserviceImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-jobservice
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -85,7 +85,7 @@ jobserviceImage:
|
||||
registryImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-registry
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -109,7 +109,7 @@ registryImage:
|
||||
registryctlImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-registryctl
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -133,7 +133,7 @@ registryctlImage:
|
||||
clairImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-clair
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -157,7 +157,7 @@ clairImage:
|
||||
notaryServerImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-notary-server
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -181,7 +181,7 @@ notaryServerImage:
|
||||
notarySignerImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/harbor-notary-signer
|
||||
tag: 1.8.1-debian-9-r3
|
||||
tag: 1.8.1-debian-9-r12
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -223,6 +223,32 @@ nginxImage:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override harbor.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override harbor.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
service:
|
||||
# Set the way how to expose the service. Set the type as "Ingress",
|
||||
# "ClusterIP", "NodePort" or "LoadBalancer" and fill the information
|
||||
@@ -245,7 +271,7 @@ service:
|
||||
# described above. Fill the name of secret if you want to use a
|
||||
# separated one. Only needed when the type is "ingress".
|
||||
notarySecretName: ""
|
||||
# The commmon name used to generate the certificate, it's necessary
|
||||
# The common name used to generate the certificate, it's necessary
|
||||
# when the type isn't "ingress" and "secretName" is null
|
||||
commonName: ""
|
||||
ingress:
|
||||
@@ -255,6 +281,7 @@ service:
|
||||
# set to the type of ingress controller if it has specific requirements.
|
||||
# leave as `default` for most ingress controllers.
|
||||
# set to `gce` if using the GCE ingress controller
|
||||
# set to `ncp` if using the NCP (NSX-T Container Plugin) ingress controller
|
||||
controller: default
|
||||
annotations:
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
@@ -303,6 +330,8 @@ service:
|
||||
# The service port Notary listens on. Only needed when notary.enabled
|
||||
# is set to true
|
||||
notaryPort: 4443
|
||||
annotations: {}
|
||||
sourceRanges: []
|
||||
|
||||
# The external URL for Harbor core service. It is used to
|
||||
# 1) populate the docker/helm commands showed on portal
|
||||
@@ -319,6 +348,13 @@ service:
|
||||
# If Harbor is deployed behind the proxy, set it as the URL of proxy
|
||||
externalURL: https://core.harbor.domain
|
||||
|
||||
## UAA Authentication Options
|
||||
# If you're using UAA for authentication behind a self-signed
|
||||
# certificate you will need to provide the CA Cert.
|
||||
# Set uaaSecretName below to provide a pre-created secret that
|
||||
# contains a base64 encoded CA Certificate named `ca.crt`.
|
||||
# uaaSecretName:
|
||||
|
||||
## Kubernetes Security Context
|
||||
## https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
|
||||
##
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apiVersion: v1
|
||||
name: jenkins
|
||||
version: 2.3.9
|
||||
appVersion: 2.176.1
|
||||
version: 3.0.1
|
||||
appVersion: 2.176.2
|
||||
description: The leading open source automation server
|
||||
keywords:
|
||||
- jenkins
|
||||
|
||||
+48
-46
@@ -45,52 +45,54 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following tables lists the configurable parameters of the Jenkins chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|----------------------------|----------------------------------------|---------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Jenkins image registry | `docker.io` |
|
||||
| `image.repository` | Jenkins Image name | `bitnami/jenkins` |
|
||||
| `image.tag` | Jenkins Image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Jenkins image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `jenkinsUser` | User of the application | `user` |
|
||||
| `jenkinsPassword` | Application password | _random 10 character alphanumeric string_ |
|
||||
| `jenkinsHome` | Jenkins home directory | `/opt/bitnami/jenkins/jenkins_home` |
|
||||
| `disableInitialization` | Allows to disable the initial Bitnami configuration for Jenkins | `no` |
|
||||
| `javaOpts` | Customize JVM parameters | `nil` |
|
||||
| `service.type` | Kubernetes Service type | `LoadBalancer` |
|
||||
| `service.port` | Service HTTP port | `80` |
|
||||
| `service.httpsPort` | Service HTTPS port | `443` |
|
||||
| `service.nodePorts.http` | Kubernetes http node port | `""` |
|
||||
| `service.nodePorts.https` | Kubernetes https node port | `""` |
|
||||
| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` |
|
||||
| `service.loadBalancerIP` | LoadBalancer service IP address | `""` |
|
||||
| `ingress.enabled` | Enable ingress controller resource | `false` |
|
||||
| `ingress.annotations` | Ingress annotations | `[]` |
|
||||
| `ingress.certManager` | Add annotations for cert-manager | `false` |
|
||||
| `ingress.hosts[0].name` | Hostname to your jenkins installation | `jenkins.local` |
|
||||
| `ingress.hosts[0].path` | Path within the url structure | `/` |
|
||||
| `ingress.hosts[0].tls` | Utilize TLS backend in ingress | `false` |
|
||||
| `ingress.hosts[0].tlsHosts` | Array of TLS hosts for ingress record (defaults to `ingress.hosts[0].name` if `nil`) | `nil` |
|
||||
| `ingress.hosts[0].tlsSecret` | TLS Secret (certificates) | `jenkins.local-tls-secret` |
|
||||
| `ingress.secrets[0].name` | TLS Secret Name | `nil` |
|
||||
| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` |
|
||||
| `ingress.secrets[0].key` | TLS Secret Key | `nil` |
|
||||
| `persistence.enabled` | Enable persistence using PVC | `true` |
|
||||
| `persistence.storageClass` | PVC Storage Class for Jenkins volume | `nil` (uses alpha storage class annotation) |
|
||||
| `persistence.accessMode` | PVC Access Mode for Jenkins volume | `ReadWriteOnce` |
|
||||
| `persistence.size` | PVC Storage Request for Jenkins volume | `8Gi` |
|
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
|
||||
| `podAnnotations` | Pod annotations | `{}` |
|
||||
| `metrics.enabled` | Start a side-car Jenkins prometheus exporter | `false` |
|
||||
| `metrics.image.registry` | Jenkins exporter image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Jenkins exporter image name | `tolleiv/jenkins_exporter` |
|
||||
| `metrics.image.tag` | Jenkins exporter image tag | `latest` |
|
||||
| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | `{prometheus.io/scrape: "true", prometheus.io/port: "9118"}` |
|
||||
| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` |
|
||||
Parameter | Description | Default
|
||||
--- | --- | ---
|
||||
`global.imageRegistry` | Global Docker image registry | `nil`
|
||||
`global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods)
|
||||
`image.registry` | Jenkins image registry | `docker.io`
|
||||
`image.repository` | Jenkins Image name | `bitnami/jenkins`
|
||||
`image.tag` | Jenkins Image tag | `{TAG_NAME}`
|
||||
`image.pullPolicy` | Jenkins image pull policy | `IfNotPresent`
|
||||
`image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods)
|
||||
`nameOverride` | String to partially override jenkins.fullname template with a string (will prepend the release name) | `nil`
|
||||
`fullnameOverride` | String to fully override jenkins.fullname template with a string | `nil`
|
||||
`jenkinsUser` | User of the application | `user`
|
||||
`jenkinsPassword` | Application password | _random 10 character alphanumeric string_
|
||||
`jenkinsHome` | Jenkins home directory | `/opt/bitnami/jenkins/jenkins_home`
|
||||
`disableInitialization` | Allows to disable the initial Bitnami configuration for Jenkins | `no`
|
||||
`javaOpts` | Customize JVM parameters | `nil`
|
||||
`service.type` | Kubernetes Service type | `LoadBalancer`
|
||||
`service.port` | Service HTTP port | `80`
|
||||
`service.httpsPort` | Service HTTPS port | `443`
|
||||
`service.nodePorts.http` | Kubernetes http node port | `""`
|
||||
`service.nodePorts.https` | Kubernetes https node port | `""`
|
||||
`service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster`
|
||||
`service.loadBalancerIP` | LoadBalancer service IP address | `""`
|
||||
`ingress.enabled` | Enable ingress controller resource | `false`
|
||||
`ingress.annotations` | Ingress annotations | `[]`
|
||||
`ingress.certManager` | Add annotations for cert-manager | `false`
|
||||
`ingress.hosts[0].name` | Hostname to your jenkins installation | `jenkins.local`
|
||||
`ingress.hosts[0].path` | Path within the url structure | `/`
|
||||
`ingress.hosts[0].tls`| Utilize TLS backend in ingress | `false`
|
||||
`ingress.hosts[0].tlsHosts` | Array of TLS hosts for ingress record (defaults to `ingress.hosts[0].name` if `nil`) | `nil`
|
||||
`ingress.hosts[0].tlsSecret` | TLS Secret (certificates) | `jenkins.local-tls-secret`
|
||||
`ingress.secrets[0].name`| TLS Secret Name | `nil`
|
||||
`ingress.secrets[0].certificate` | TLS Secret Certificate | `nil`
|
||||
`ingress.secrets[0].key` | TLS Secret Key | `nil`
|
||||
`persistence.enabled` | Enable persistence using PVC | `true`
|
||||
`persistence.storageClass`| PVC Storage Class for Jenkins volume | `nil` (uses alpha storage class annotation)
|
||||
`persistence.accessMode` | PVC Access Mode for Jenkins volume | `ReadWriteOnce`
|
||||
`persistence.size` | PVC Storage Request for Jenkins volume | `8Gi`
|
||||
`resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m`
|
||||
`podAnnotations` | Pod annotations | `{}`
|
||||
`metrics.enabled` | Start a side-car Jenkins prometheus exporter | `false`
|
||||
`metrics.image.registry` | Jenkins exporter image registry | `docker.io`
|
||||
`metrics.image.repository` | Jenkins exporter image name | `tolleiv/jenkins_exporter`
|
||||
`metrics.image.tag` | Jenkins exporter image tag | `latest`
|
||||
`metrics.image.pullPolicy` | Image pull policy | `IfNotPresent`
|
||||
`metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods)
|
||||
`metrics.podAnnotations` | Additional annotations for Metrics exporter pod | `{prometheus.io/scrape: "true", prometheus.io/port: "9118"}`
|
||||
`metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m`
|
||||
|
||||
|
||||
The above parameters map to the env variables defined in [bitnami/jenkins](http://github.com/bitnami/bitnami-docker-jenkins). For more information please refer to the [bitnami/jenkins](http://github.com/bitnami/bitnami-docker-jenkins) image documentation.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "name" -}}
|
||||
{{- define "jenkins.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -18,9 +18,17 @@ Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "jenkins.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper Jenkins image name
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/jenkins
|
||||
tag: 2.176.1-debian-9-r13
|
||||
tag: 2.176.2-debian-9-r0
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -26,6 +26,14 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override jenkins.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override jenkins.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## User of the application
|
||||
## ref: https://github.com/bitnami/bitnami-docker-jenkins#configuration
|
||||
##
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: kafka
|
||||
version: 3.0.13
|
||||
version: 4.1.0
|
||||
appVersion: 2.3.0
|
||||
description: Apache Kafka is a distributed streaming platform.
|
||||
keywords:
|
||||
|
||||
+130
-115
@@ -45,121 +45,127 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following tables lists the configurable parameters of the Kafka chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| --------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Kafka image registry | `docker.io` |
|
||||
| `image.repository` | Kafka Image name | `bitnami/kafka` |
|
||||
| `image.tag` | Kafka Image tag | `{VERSION}` |
|
||||
| `image.pullPolicy` | Kafka image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug values should be set | `false` |
|
||||
| `nameOverride` | String to partially override kafka.fullname template with a string (will append the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override kafka.fullname template with a string | `nil` |
|
||||
| `updateStrategy` | Update strategy for the stateful set | `RollingUpdate` |
|
||||
| `rollingUpdatePartition` | Partition update strategy | `nil` |
|
||||
| `podDisruptionBudget.maxUnavailable` | Max number of pods down simultaneously | `1` |
|
||||
| `replicaCount` | Number of Kafka nodes | `1` |
|
||||
| `config` | Configuration file for Kafka | `nil` |
|
||||
| `allowPlaintextListener` | Allow to use the PLAINTEXT listener | `true` |
|
||||
| `listeners` | The address the socket server listens on. | `nil` |
|
||||
| `advertisedListeners` | Hostname and port the broker will advertise to producers and consumers. | `nil` |
|
||||
| `listenerSecurityProtocolMap` | The protocol->listener mapping. | `nil` |
|
||||
| `interBrokerListenerName` | The listener that the brokers should communicate on. | `nil` |
|
||||
| `brokerId` | ID of the Kafka node | `-1` |
|
||||
| `deleteTopicEnable` | Switch to enable topic deletion or not. | `false` |
|
||||
| `heapOpts` | Kafka's Java Heap size. | `-Xmx1024m -Xms1024m` |
|
||||
| `logFlushIntervalMessages` | The number of messages to accept before forcing a flush of data to disk. | `10000` |
|
||||
| `logFlushIntervalMs` | The maximum amount of time a message can sit in a log before we force a flush. | `1000` |
|
||||
| `logRetentionBytes` | A size-based retention policy for logs. | `_1073741824` |
|
||||
| `logRetentionCheckIntervalMs` | The interval at which log segments are checked to see if they can be deleted. | `300000` |
|
||||
| `logRetentionHours` | The minimum age of a log file to be eligible for deletion due to age. | `168` |
|
||||
| `logSegmentBytes` | The maximum size of a log segment file. When this size is reached a new log segment will be created. | `_1073741824` |
|
||||
| `logMessageFormatVersion` | Logging message format version. | `` |
|
||||
| `logsDirs` | A comma separated list of directories under which to store log files. | `/opt/bitnami/kafka/data` |
|
||||
| `maxMessageBytes` | The largest record batch size allowed by Kafka. | `1000012` |
|
||||
| `defaultReplicationFactor` | Default replication factors for automatically created topics | `1` |
|
||||
| `offsetsTopicReplicationFactor` | The replication factor for the offsets topic | `1` |
|
||||
| `transactionStateLogReplicationFactor ` | The replication factor for the transaction topic | `1` |
|
||||
| `transactionStateLogMinIsr ` | Overridden min.insync.replicas config for the transaction topic | `1` |
|
||||
| `numIoThreads` | The number of threads doing disk I/O. | `8` |
|
||||
| `numNetworkThreads` | The number of threads handling network requests. | `3` |
|
||||
| `numPartitions` | The default number of log partitions per topic. | `1` |
|
||||
| `numRecoveryThreadsPerDataDir` | The number of threads per data directory to be used for log recovery at startup and flushing at shutdown. | `1` |
|
||||
| `socketReceiveBufferBytes` | The receive buffer (SO_RCVBUF) used by the socket server. | `102400` |
|
||||
| `socketRequestMaxBytes` | The maximum size of a request that the socket server will accept (protection against OOM). | `_104857600` |
|
||||
| `socketSendBufferBytes` | The send buffer (SO_SNDBUF) used by the socket server. | `102400` |
|
||||
| `zookeeperConnectionTimeoutMs` | Timeout in ms for connecting to Zookeeper. | `6000` |
|
||||
| `extraEnvVars` | Extra environment variables to add to kafka pods | `nil` |
|
||||
| `sslEndpointIdentificationAlgorithm` | The endpoint identification algorithm to validate server hostname using server certificate. | `https` |
|
||||
| `auth.enabled` | Switch to enable the kafka authentication. | `false` |
|
||||
| `auth.existingSecret` | Name of the existing secret containing credentials for brokerUser, interBrokerUser and zookeeperUser. | `nil` |
|
||||
| `auth.certificatesSecret` | Name of the existing secret containing the certificate files that will be used by Kafka. | `nil` |
|
||||
| `auth.certificatesPassword` | Password for the above certificates if they are password protected. | `nil` |
|
||||
| `auth.brokerUser` | Kafka client user. | `user` |
|
||||
| `auth.brokerPassword` | Kafka client password. | `nil` |
|
||||
| `auth.interBrokerUser` | Kafka inter broker communication user | `admin` |
|
||||
| `auth.interBrokerPassword` | Kafka inter broker communication password. | `nil` |
|
||||
| `auth.zookeeperUser` | Kafka Zookeeper user. | `nil` |
|
||||
| `auth.zookeeperPassword` | Kafka Zookeeper password. | `nil` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.port` | Kafka port | `9092` |
|
||||
| `service.nodePort` | Kubernetes Service nodePort | `nil` |
|
||||
| `service.loadBalancerIP` | loadBalancerIP for Kafka Service | `nil` |
|
||||
| `service.annotations` | Service annotations | `` |
|
||||
| `persistence.enabled` | Enable Kafka persistence using PVC, note that Zookeeper perisstency is unaffected | `true` |
|
||||
| `persistence.existingClaim` | Provide an existing `PersistentVolumeClaim`, the value is evaluated as a template. | `nil` |
|
||||
| `persistence.storageClass` | PVC Storage Class for Kafka volume | `nil` |
|
||||
| `persistence.accessMode` | PVC Access Mode for Kafka volume | `ReadWriteOnce` |
|
||||
| `persistence.size` | PVC Storage Request for Kafka volume | `8Gi` |
|
||||
| `persistence.annotations` | Annotations for the PVC | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment | `[]` |
|
||||
| `affinity` | Map of node/pod affinities | `{}` |
|
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `250m` |
|
||||
| `livenessProbe.enabled` | would you like a livessProbed to be enabled | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 30 |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | 1 |
|
||||
| `readinessProbe.enabled` | would you like a readinessProbe to be enabled | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 5 |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | 1 |
|
||||
| `metrics.kafka.enabled` | Whether or not to create a separate Kafka exporter | `false` |
|
||||
| `metrics.kafka.image.registry` | Kafka exporter image registry | `docker.io` |
|
||||
| `metrics.kafka.image.repository` | Kafka exporter image name | `danielqsj/kafka-exporter` |
|
||||
| `metrics.kafka.image.tag` | Kafka exporter image tag | `v1.0.1` |
|
||||
| `metrics.kafka.image.pullPolicy` | Kafka exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.kafka.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.kafka.interval` | Interval that Prometheus scrapes Kafka metrics when using Prometheus Operator | `10s` |
|
||||
| `metrics.kafka.port` | Kafka Exporter Port which exposes metrics in Prometheus format for scraping | `9308` |
|
||||
| `metrics.kafka.resources` | Allows setting resource limits for kafka-exporter pod | `{}` |
|
||||
| `metrics.jmx.resources` | Allows setting resource limits for jmx sidecar container | `{}` |
|
||||
| `metrics.jmx.enabled` | Whether or not to expose JMX metrics to Prometheus | `false` |
|
||||
| `metrics.jmx.image.registry` | JMX exporter image registry | `docker.io` |
|
||||
| `metrics.jmx.image.repository` | JMX exporter image name | `solsson/kafka-prometheus-jmx-exporter@sha256` |
|
||||
| `metrics.jmx.image.tag` | JMX exporter image tag | `a23062396cd5af1acdf76512632c20ea6be76885dfc20cd9ff40fb23846557e8` |
|
||||
| `metrics.jmx.image.pullPolicy` | JMX exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.jmx.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.jmx.interval` | Interval that Prometheus scrapes JMX metrics when using Prometheus Operator | `10s` |
|
||||
| `metrics.jmx.exporterPort` | JMX Exporter Port which exposes metrics in Prometheus format for scraping | `5556` |
|
||||
| `metrics.jmx.configMap.enabled` | Enable the default ConfigMap for JMX | `true` |
|
||||
| `metrics.jmx.configMap.overrideConfig` | Allows config file to be generated by passing values to ConfigMap | `{}` |
|
||||
| `metrics.jmx.configMap.overrideName` | Allows setting the name of the ConfigMap to be used | `""` |
|
||||
| `metrics.jmx.jmxPort` | The jmx port which JMX style metrics are exposed (note: these are not scrapeable by Prometheus) | `5555` |
|
||||
| `metrics.jmx.whitelistObjectNames` | Allows setting which JMX objects you want to expose to via JMX stats to JMX Exporter | (see `values.yaml`) |
|
||||
| `zookeeper.enabled` | Switch to enable or disable the Zookeeper helm chart | `true` |
|
||||
| `zookeeper.persistence.enabled` | Enable Zookeeper persistence using PVC | `true` |
|
||||
| `externalZookeeper.servers` | Server or list of external Zookeeper servers to use. | `nil` |
|
||||
| Parameter | Description | Default |
|
||||
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Kafka image registry | `docker.io` |
|
||||
| `image.repository` | Kafka Image name | `bitnami/kafka` |
|
||||
| `image.tag` | Kafka Image tag | `{VERSION}` |
|
||||
| `image.pullPolicy` | Kafka image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug values should be set | `false` |
|
||||
| `nameOverride` | String to partially override kafka.fullname template with a string (will append the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override kafka.fullname template with a string | `nil` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `updateStrategy` | Update strategy for the stateful set | `RollingUpdate` |
|
||||
| `rollingUpdatePartition` | Partition update strategy | `nil` |
|
||||
| `podDisruptionBudget.maxUnavailable` | Max number of pods down simultaneously | `1` |
|
||||
| `replicaCount` | Number of Kafka nodes | `1` |
|
||||
| `config` | Configuration file for Kafka | `nil` |
|
||||
| `allowPlaintextListener` | Allow to use the PLAINTEXT listener | `true` |
|
||||
| `listeners` | The address the socket server listens on. | `nil` |
|
||||
| `advertisedListeners` | Hostname and port the broker will advertise to producers and consumers. | `nil` |
|
||||
| `listenerSecurityProtocolMap` | The protocol->listener mapping. | `nil` |
|
||||
| `interBrokerListenerName` | The listener that the brokers should communicate on. | `nil` |
|
||||
| `brokerId` | ID of the Kafka node | `-1` |
|
||||
| `deleteTopicEnable` | Switch to enable topic deletion or not. | `false` |
|
||||
| `heapOpts` | Kafka's Java Heap size. | `-Xmx1024m -Xms1024m` |
|
||||
| `logFlushIntervalMessages` | The number of messages to accept before forcing a flush of data to disk. | `10000` |
|
||||
| `logFlushIntervalMs` | The maximum amount of time a message can sit in a log before we force a flush. | `1000` |
|
||||
| `logRetentionBytes` | A size-based retention policy for logs. | `_1073741824` |
|
||||
| `logRetentionCheckIntervalMs` | The interval at which log segments are checked to see if they can be deleted. | `300000` |
|
||||
| `logRetentionHours` | The minimum age of a log file to be eligible for deletion due to age. | `168` |
|
||||
| `logSegmentBytes` | The maximum size of a log segment file. When this size is reached a new log segment will be created. | `_1073741824` |
|
||||
| `logMessageFormatVersion` | Logging message format version. | `` |
|
||||
| `logsDirs` | A comma separated list of directories under which to store log files. | `/opt/bitnami/kafka/data` |
|
||||
| `maxMessageBytes` | The largest record batch size allowed by Kafka. | `1000012` |
|
||||
| `defaultReplicationFactor` | Default replication factors for automatically created topics | `1` |
|
||||
| `offsetsTopicReplicationFactor` | The replication factor for the offsets topic | `1` |
|
||||
| `transactionStateLogReplicationFactor ` | The replication factor for the transaction topic | `1` |
|
||||
| `transactionStateLogMinIsr ` | Overridden min.insync.replicas config for the transaction topic | `1` |
|
||||
| `numIoThreads` | The number of threads doing disk I/O. | `8` |
|
||||
| `numNetworkThreads` | The number of threads handling network requests. | `3` |
|
||||
| `numPartitions` | The default number of log partitions per topic. | `1` |
|
||||
| `numRecoveryThreadsPerDataDir` | The number of threads per data directory to be used for log recovery at startup and flushing at shutdown. | `1` |
|
||||
| `socketReceiveBufferBytes` | The receive buffer (SO_RCVBUF) used by the socket server. | `102400` |
|
||||
| `socketRequestMaxBytes` | The maximum size of a request that the socket server will accept (protection against OOM). | `_104857600` |
|
||||
| `socketSendBufferBytes` | The send buffer (SO_SNDBUF) used by the socket server. | `102400` |
|
||||
| `zookeeperConnectionTimeoutMs` | Timeout in ms for connecting to Zookeeper. | `6000` |
|
||||
| `extraEnvVars` | Extra environment variables to add to kafka pods | `nil` |
|
||||
| `sslEndpointIdentificationAlgorithm` | The endpoint identification algorithm to validate server hostname using server certificate. | `https` |
|
||||
| `auth.enabled` | Switch to enable the kafka authentication. | `false` |
|
||||
| `auth.existingSecret` | Name of the existing secret containing credentials for brokerUser, interBrokerUser and zookeeperUser. | `nil` |
|
||||
| `auth.certificatesSecret` | Name of the existing secret containing the certificate files that will be used by Kafka. | `nil` |
|
||||
| `auth.certificatesPassword` | Password for the above certificates if they are password protected. | `nil` |
|
||||
| `auth.brokerUser` | Kafka client user. | `user` |
|
||||
| `auth.brokerPassword` | Kafka client password. | `nil` |
|
||||
| `auth.interBrokerUser` | Kafka inter broker communication user | `admin` |
|
||||
| `auth.interBrokerPassword` | Kafka inter broker communication password. | `nil` |
|
||||
| `auth.zookeeperUser` | Kafka Zookeeper user. | `nil` |
|
||||
| `auth.zookeeperPassword` | Kafka Zookeeper password. | `nil` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.port` | Kafka port | `9092` |
|
||||
| `service.nodePort` | Kubernetes Service nodePort | `nil` |
|
||||
| `service.loadBalancerIP` | loadBalancerIP for Kafka Service | `nil` |
|
||||
| `service.annotations` | Service annotations | `` |
|
||||
| `persistence.enabled` | Enable Kafka persistence using PVC, note that Zookeeper perisstency is unaffected | `true` |
|
||||
| `persistence.existingClaim` | Provide an existing `PersistentVolumeClaim`, the value is evaluated as a template. | `nil` |
|
||||
| `persistence.storageClass` | PVC Storage Class for Kafka volume | `nil` |
|
||||
| `persistence.accessMode` | PVC Access Mode for Kafka volume | `ReadWriteOnce` |
|
||||
| `persistence.size` | PVC Storage Request for Kafka volume | `8Gi` |
|
||||
| `persistence.annotations` | Annotations for the PVC | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment | `[]` |
|
||||
| `affinity` | Map of node/pod affinities | `{}` |
|
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `250m` |
|
||||
| `livenessProbe.enabled` | would you like a livessProbed to be enabled | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 30 |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | 1 |
|
||||
| `readinessProbe.enabled` | would you like a readinessProbe to be enabled | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 5 |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | 10 |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | 5 |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 6 |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed | 1 |
|
||||
| `metrics.kafka.enabled` | Whether or not to create a separate Kafka exporter | `false` |
|
||||
| `metrics.kafka.image.registry` | Kafka exporter image registry | `docker.io` |
|
||||
| `metrics.kafka.image.repository` | Kafka exporter image name | `danielqsj/kafka-exporter` |
|
||||
| `metrics.kafka.image.tag` | Kafka exporter image tag | `v1.0.1` |
|
||||
| `metrics.kafka.image.pullPolicy` | Kafka exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.kafka.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.kafka.interval` | Interval that Prometheus scrapes Kafka metrics when using Prometheus Operator | `10s` |
|
||||
| `metrics.kafka.port` | Kafka Exporter Port which exposes metrics in Prometheus format for scraping | `9308` |
|
||||
| `metrics.kafka.resources` | Allows setting resource limits for kafka-exporter pod | `{}` |
|
||||
| `metrics.jmx.resources` | Allows setting resource limits for jmx sidecar container | `{}` |
|
||||
| `metrics.jmx.enabled` | Whether or not to expose JMX metrics to Prometheus | `false` |
|
||||
| `metrics.jmx.image.registry` | JMX exporter image registry | `docker.io` |
|
||||
| `metrics.jmx.image.repository` | JMX exporter image name | `solsson/kafka-prometheus-jmx-exporter@sha256` |
|
||||
| `metrics.jmx.image.tag` | JMX exporter image tag | `a23062396cd5af1acdf76512632c20ea6be76885dfc20cd9ff40fb23846557e8` |
|
||||
| `metrics.jmx.image.pullPolicy` | JMX exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.jmx.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.jmx.interval` | Interval that Prometheus scrapes JMX metrics when using Prometheus Operator | `10s` |
|
||||
| `metrics.jmx.exporterPort` | JMX Exporter Port which exposes metrics in Prometheus format for scraping | `5556` |
|
||||
| `metrics.jmx.configMap.enabled` | Enable the default ConfigMap for JMX | `true` |
|
||||
| `metrics.jmx.configMap.overrideConfig` | Allows config file to be generated by passing values to ConfigMap | `{}` |
|
||||
| `metrics.jmx.configMap.overrideName` | Allows setting the name of the ConfigMap to be used | `""` |
|
||||
| `metrics.jmx.jmxPort` | The jmx port which JMX style metrics are exposed (note: these are not scrapeable by Prometheus) | `5555` |
|
||||
| `metrics.jmx.whitelistObjectNames` | Allows setting which JMX objects you want to expose to via JMX stats to JMX Exporter | (see `values.yaml`) |
|
||||
| `zookeeper.enabled` | Switch to enable or disable the Zookeeper helm chart | `true` |
|
||||
| `zookeeper.persistence.enabled` | Enable Zookeeper persistence using PVC | `true` |
|
||||
| `externalZookeeper.servers` | Server or list of external Zookeeper servers to use. | `nil` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -301,6 +307,15 @@ The [Bitnami Kafka](https://github.com/bitnami/bitnami-docker-kafka) image store
|
||||
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
|
||||
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
## Upgrading
|
||||
|
||||
### To 2.0.0
|
||||
|
||||
@@ -23,29 +23,29 @@ Kafka can be accessed via port 9092 on the following DNS name from within your c
|
||||
To create a topic run the following command:
|
||||
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "kafka.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=kafka" -o jsonpath="{.items[0].metadata.name}")
|
||||
kubectl exec -it $POD_NAME -- kafka-topics.sh --create --zookeeper {{ template "kafka.zookeeper.fullname" . }}:2181 --replication-factor 1 --partitions 1 --topic test
|
||||
kubectl --namespace {{ .Release.Namespace }} exec -it $POD_NAME -- kafka-topics.sh --create --zookeeper {{ template "kafka.zookeeper.fullname" . }}:2181 --replication-factor 1 --partitions 1 --topic test
|
||||
|
||||
To list all the topics run the following command:
|
||||
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "kafka.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=kafka" -o jsonpath="{.items[0].metadata.name}")
|
||||
kubectl exec -it $POD_NAME -- kafka-topics.sh --list --zookeeper {{ template "kafka.zookeeper.fullname" . }}:2181
|
||||
kubectl --namespace {{ .Release.Namespace }} exec -it $POD_NAME -- kafka-topics.sh --list --zookeeper {{ template "kafka.zookeeper.fullname" . }}:2181
|
||||
|
||||
To start a kafka producer run the following command:
|
||||
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "kafka.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=kafka" -o jsonpath="{.items[0].metadata.name}")
|
||||
{{- if .Values.auth.enabled }}
|
||||
kubectl exec -it $POD_NAME -- kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test --producer.config /opt/bitnami/kafka/conf/producer.properties
|
||||
kubectl --namespace {{ .Release.Namespace }} exec -it $POD_NAME -- kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test --producer.config /opt/bitnami/kafka/conf/producer.properties
|
||||
{{- else }}
|
||||
kubectl exec -it $POD_NAME -- kafka-console-producer.sh --broker-list localhost:9092 --topic test
|
||||
kubectl --namespace {{ .Release.Namespace }} exec -it $POD_NAME -- kafka-console-producer.sh --broker-list localhost:9092 --topic test
|
||||
{{- end }}
|
||||
|
||||
To start a kafka consumer run the following command:
|
||||
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "kafka.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=kafka" -o jsonpath="{.items[0].metadata.name}")
|
||||
{{- if .Values.auth.enabled }}
|
||||
kubectl exec -it $POD_NAME -- kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --consumer.config /opt/bitnami/kafka/conf/consumer.properties
|
||||
kubectl --namespace {{ .Release.Namespace }} exec -it $POD_NAME -- kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --consumer.config /opt/bitnami/kafka/conf/consumer.properties
|
||||
{{- else }}
|
||||
kubectl exec -it $POD_NAME -- kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
|
||||
kubectl --namespace {{ .Release.Namespace }} exec -it $POD_NAME -- kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
|
||||
{{- end }}
|
||||
|
||||
To connect to your Kafka server from outside the cluster execute the following commands:
|
||||
@@ -80,7 +80,7 @@ To connect to your Kafka server from outside the cluster execute the following c
|
||||
You should get the content of that file and write it in your host machine:
|
||||
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "kafka.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=kafka" -o jsonpath="{.items[0].metadata.name}")
|
||||
kubectl exec -it $POD_NAME -- cat /opt/bitnami/kafka/conf/kafka_jaas.conf >> kafka_jaas.conf
|
||||
kubectl --namespace {{ .Release.Namespace }} exec -it $POD_NAME -- cat /opt/bitnami/kafka/conf/kafka_jaas.conf >> kafka_jaas.conf
|
||||
|
||||
Finally, before using your client you need to export the following env var:
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "kafka.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 24 -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
@@ -100,13 +100,18 @@ Also, we can't use a single if because lazy evaluation is not an option
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified zookeeper name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
We truncate at 24 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "kafka.zookeeper.fullname" -}}
|
||||
{{- if .Values.zookeeper.fullnameOverride -}}
|
||||
{{- .Values.zookeeper.fullnameOverride | trunc 24 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default "zookeeper" .Values.zookeeper.nameOverride -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 24 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper Docker Image Registry Secret Names
|
||||
@@ -123,7 +128,7 @@ imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.kafka.image.pullSecrets .Values.metrics.jmx.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.kafka.image.pullSecrets .Values.metrics.jmx.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -134,8 +139,11 @@ imagePullSecrets:
|
||||
{{- range .Values.metrics.jmx.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.kafka.image.pullSecrets .Values.metrics.jmx.image.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.metrics.kafka.image.pullSecrets .Values.metrics.jmx.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -146,5 +154,31 @@ imagePullSecrets:
|
||||
{{- range .Values.metrics.jmx.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "kafka.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -58,8 +58,21 @@ spec:
|
||||
affinity:
|
||||
{{ toYaml .Values.affinity | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "kafka.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "/bitnami/kafka"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: "/bitnami/kafka"
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: "{{ template "kafka.fullname" . }}"
|
||||
- name: kafka
|
||||
image: "{{ template "kafka.image" . }}"
|
||||
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||
resources:
|
||||
|
||||
@@ -37,6 +37,24 @@ image:
|
||||
## String to fully override kafka.fullname template
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## StatefulSet controller supports automated updates. There are two valid update strategies: RollingUpdate and OnDelete
|
||||
## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets
|
||||
##
|
||||
@@ -282,7 +300,7 @@ affinity: {}
|
||||
## Configure resource requests and limits
|
||||
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||
##
|
||||
resources:
|
||||
resources: {}
|
||||
# limits:
|
||||
# cpu: 200m
|
||||
# memory: 1Gi
|
||||
|
||||
@@ -37,6 +37,24 @@ image:
|
||||
## String to fully override kafka.fullname template
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## StatefulSet controller supports automated updates. There are two valid update strategies: RollingUpdate and OnDelete
|
||||
## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets
|
||||
##
|
||||
@@ -282,7 +300,7 @@ affinity: {}
|
||||
## Configure resource requests and limits
|
||||
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||
##
|
||||
resources:
|
||||
resources: {}
|
||||
# limits:
|
||||
# cpu: 200m
|
||||
# memory: 1Gi
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: kubeapps
|
||||
version: 2.0.0
|
||||
version: 2.0.1
|
||||
appVersion: v1.4.1
|
||||
description: Kubeapps is a dashboard for your Kubernetes cluster that makes it easy to deploy and manage applications in your cluster using Helm
|
||||
icon: https://raw.githubusercontent.com/kubeapps/kubeapps/master/docs/img/logo.png
|
||||
|
||||
@@ -25,12 +25,24 @@ metadata:
|
||||
spec:
|
||||
type: helm
|
||||
url: {{ .url }}
|
||||
{{- if $.Values.securityContext.enabled }}
|
||||
{{- if or $.Values.securityContext.enabled $.Values.apprepository.initialReposProxy.enabled}}
|
||||
syncJobPodTemplate:
|
||||
spec:
|
||||
securityContext:
|
||||
{{- if $.Values.apprepository.initialReposProxy.enabled }}
|
||||
containers:
|
||||
- env:
|
||||
- name: https_proxy
|
||||
value: {{ $.Values.apprepository.initialReposProxy.https_proxy }}
|
||||
- name: http_proxy
|
||||
value: {{ $.Values.apprepository.initialReposProxy.http_proxy }}
|
||||
- name: no_proxy
|
||||
value: {{ $.Values.apprepository.initialReposProxy.no_proxy }}
|
||||
{{- end }}
|
||||
{{- if $.Values.securityContext.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ $.Values.securityContext.runAsUser }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if or .caCert .authorizationHeader }}
|
||||
auth:
|
||||
{{- if .caCert }}
|
||||
|
||||
@@ -105,6 +105,11 @@ apprepository:
|
||||
registry: docker.io
|
||||
repository: bitnami/kubeapps-chart-repo
|
||||
tag: 1.8.0-r0
|
||||
initialReposProxy:
|
||||
enabled: false
|
||||
# http_proxy: "http://yourproxy:3128"
|
||||
# https_proxy: "http://yourproxy:3128"
|
||||
# no_proxy: "0.0.0.0/0"
|
||||
initialRepos:
|
||||
- name: stable
|
||||
url: https://kubernetes-charts.storage.googleapis.com
|
||||
|
||||
@@ -57,6 +57,8 @@ The following table lists the configurable parameters of the Magento chart and t
|
||||
| `image.debug` | Specify if debug values should be set | `false` |
|
||||
| `image.pullPolicy` | Image pull policy | `Always` if `imageTag` is `latest`, else `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `nameOverride` | String to partially override magento.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override magento.fullname template with a string | `nil` |
|
||||
| `magentoHost` | Magento host to create application URLs | `nil` |
|
||||
| `magentoLoadBalancerIP` | `loadBalancerIP` for the magento Service | `nil` |
|
||||
| `magentoUsername` | User of the application | `user` |
|
||||
@@ -91,6 +93,9 @@ The following table lists the configurable parameters of the Magento chart and t
|
||||
| `mariadb.db.user` | Database user to create | `bn_magento` |
|
||||
| `mariadb.db.password` | Password for the database | _random 10 character long alphanumeric string_ |
|
||||
| `elasticsearch.enabled` | Use the Elasticsearch chart as search engine | `true` |
|
||||
| `elasticsearch.image.registry` | Elasticsearch image registry | `docker.io` |
|
||||
| `elasticsearch.image.repository` | Elasticsearch image name | `bitnami/elasticsearch` |
|
||||
| `elasticsearch.image.tag` | Elasticsearch image tag | `{TAG_NAME}` |
|
||||
| `elasticsearch.sysctlImage.enabled` | Enable kernel settings modifier image for Elasticsearch | `false` |
|
||||
| `elasticsearch.master.replicas` | Desired number of Elasticsearch master-eligible nodes | `1` |
|
||||
| `elasticsearch.coordinating.replicas` | Desired number of Elasticsearch coordinating-only nodes | `1` |
|
||||
@@ -126,8 +131,8 @@ The following table lists the configurable parameters of the Magento chart and t
|
||||
| `podAnnotations` | Pod annotations | `{}` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image.registry` | Apache exporter image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Apache exporter image name | `lusotycoon/apache-exporter` |
|
||||
| `metrics.image.tag` | Apache exporter image tag | `v0.5.0` |
|
||||
| `metrics.image.repository` | Apache exporter image name | `bitnami/apache-exporter` |
|
||||
| `metrics.image.tag` | Apache exporter image tag | `{TAG_NAME}` |
|
||||
| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | `{prometheus.io/scrape: "true", prometheus.io/port: "9117"}` |
|
||||
|
||||
@@ -11,9 +11,17 @@ Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "magento.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a random alphanumeric password string.
|
||||
|
||||
@@ -31,6 +31,14 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override magento.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override magento.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Magento host to create application URLs
|
||||
## ref: https://github.com/bitnami/bitnami-docker-magento#configuration
|
||||
##
|
||||
@@ -164,6 +172,12 @@ elasticsearch:
|
||||
## Whether to deploy a elasticsearch server to use as magento's search engine
|
||||
## To use an external server set this to false and configure the externalElasticsearch parameters
|
||||
enabled: true
|
||||
## Tag for the Bitnami Elasticsearch image to use
|
||||
## ref: https://github.com/bitnami/bitnami-docker-elasticsearch
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/elasticsearch
|
||||
tag: 6.8.1-debian-9-r23
|
||||
## Enable to perform the sysctl operation
|
||||
sysctlImage:
|
||||
enabled: false
|
||||
@@ -318,8 +332,8 @@ metrics:
|
||||
enabled: true
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: lusotycoon/apache-exporter
|
||||
tag: v0.5.0
|
||||
repository: bitnami/apache-exporter
|
||||
tag: 0.7.0-debian-9-r2
|
||||
pullPolicy: IfNotPresent
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
|
||||
@@ -31,6 +31,14 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override magento.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override magento.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Magento host to create application URLs
|
||||
## ref: https://github.com/bitnami/bitnami-docker-magento#configuration
|
||||
##
|
||||
@@ -164,6 +172,12 @@ elasticsearch:
|
||||
## Whether to deploy a elasticsearch server to use as magento's search engine
|
||||
## To use an external server set this to false and configure the externalElasticsearch parameters
|
||||
enabled: true
|
||||
## Tag for the Bitnami Elasticsearch image to use
|
||||
## ref: https://github.com/bitnami/bitnami-docker-elasticsearch
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/elasticsearch
|
||||
tag: 6.8.1-debian-9-r23
|
||||
## Enable to perform the sysctl operation
|
||||
sysctlImage:
|
||||
enabled: false
|
||||
@@ -318,8 +332,8 @@ metrics:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: lusotycoon/apache-exporter
|
||||
tag: v0.5.0
|
||||
repository: bitnami/apache-exporter
|
||||
tag: 0.7.0-debian-9-r2
|
||||
pullPolicy: IfNotPresent
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: memcached
|
||||
version: 1.5.11
|
||||
version: 2.1.0
|
||||
appVersion: 1.5.16
|
||||
description: Chart for Memcached
|
||||
keywords:
|
||||
|
||||
+27
-25
@@ -45,31 +45,33 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following tables lists the configurable parameters of the Memcached chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|-----------------------------|-------------------------------------|---------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Memcached image registry | `docker.io` |
|
||||
| `image.repository` | Memcached Image name | `bitnami/memcached` |
|
||||
| `image.tag` | Memcached Image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Memcached image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `memcachedUsername` | Memcached admin user | `nil` |
|
||||
| `memcachedPassword` | Memcached admin password | `nil` |
|
||||
| `serviceType` | Kubernetes Service type | `ClusterIP` |
|
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `250m` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image.registry` | MongoDB exporter image registry | `docker.io` |
|
||||
| `metrics.image.repository` | MongoDB exporter image name | `prom/memcached-exporter` |
|
||||
| `metrics.image.tag` | MongoDB exporter image tag | `v0.4.1` |
|
||||
| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | {} |
|
||||
| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` |
|
||||
| Parameter | Description | Default |
|
||||
|-----------------------------|--------------------------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | Memcached image registry | `docker.io` |
|
||||
| `image.repository` | Memcached Image name | `bitnami/memcached` |
|
||||
| `image.tag` | Memcached Image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Memcached image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `nameOverride` | String to partially override memcached.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override memcached.fullname template with a string | `nil` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `memcachedUsername` | Memcached admin user | `nil` |
|
||||
| `memcachedPassword` | Memcached admin password | `nil` |
|
||||
| `serviceType` | Kubernetes Service type | `ClusterIP` |
|
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `250m` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image.registry` | Memcached exporter image registry | `docker.io` |
|
||||
| `metrics.image.repository` | Memcached exporter image name | `bitnami/memcached-exporter` |
|
||||
| `metrics.image.tag` | Memcached exporter image tag | `{TAG_NAME}` |
|
||||
| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | {} |
|
||||
| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` |
|
||||
|
||||
|
||||
The above parameters map to the env variables defined in [bitnami/memcached](http://github.com/bitnami/bitnami-docker-memcached). For more information please refer to the [bitnami/memcached](http://github.com/bitnami/bitnami-docker-memcached) image documentation.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
** Please be patient while the chart is being deployed **
|
||||
|
||||
Memcached can be accessed on port 11211 on the following DNS name from within your cluster: {{ template "fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}
|
||||
Memcached can be accessed on port 11211 on the following DNS name from within your cluster: {{ template "memcached.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}
|
||||
|
||||
{{- if and (contains "bitnami/" .Values.image.repository) (not (.Values.image.tag | toString | regexFind "-r\\d+$|sha256:")) }}
|
||||
|
||||
|
||||
@@ -2,17 +2,25 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 24 -}}
|
||||
{{- define "memcached.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 24 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "fullname" -}}
|
||||
{{- define "memcached.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 24 -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
name: {{ template "memcached.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "memcached.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "memcached.fullname" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "memcached.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
{{- if or .Values.podAnnotations .Values.metrics.enabled }}
|
||||
@@ -35,7 +35,7 @@ spec:
|
||||
{{- end }}
|
||||
{{- include "memcached.imagePullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: {{ template "fullname" . }}
|
||||
- name: memcached
|
||||
image: "{{ template "memcached.image" . }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
|
||||
env:
|
||||
@@ -44,7 +44,7 @@ spec:
|
||||
- name: MEMCACHED_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "fullname" . }}
|
||||
name: {{ template "memcached.fullname" . }}
|
||||
key: memcached-password
|
||||
ports:
|
||||
- name: memcache
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
name: {{ template "memcached.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "memcached.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
name: {{ template "memcached.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "memcached.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
@@ -14,4 +14,4 @@ spec:
|
||||
port: 11211
|
||||
targetPort: memcache
|
||||
selector:
|
||||
app: {{ template "fullname" . }}
|
||||
app: {{ template "memcached.fullname" . }}
|
||||
|
||||
@@ -26,6 +26,14 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override memcached.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override memcached.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Pod Security Context
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
|
||||
##
|
||||
@@ -76,8 +84,8 @@ metrics:
|
||||
enabled: true
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: prom/memcached-exporter
|
||||
tag: v0.4.1
|
||||
repository: bitnami/memcached-exporter
|
||||
tag: 0.5.0-debian-9-r1
|
||||
pullPolicy: IfNotPresent
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
|
||||
@@ -26,6 +26,14 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override memcached.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override memcached.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Pod Security Context
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
|
||||
##
|
||||
@@ -76,8 +84,8 @@ metrics:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: prom/memcached-exporter
|
||||
tag: v0.4.1
|
||||
repository: bitnami/memcached-exporter
|
||||
tag: 0.5.0-debian-9-r1
|
||||
pullPolicy: IfNotPresent
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
name: metrics-server
|
||||
version: 2.3.8
|
||||
version: 3.0.0
|
||||
appVersion: 0.3.3
|
||||
description: Metrics Server is a cluster-wide aggregator of resource usage data. Metrics Server collects metrics from the Summary API, exposed by Kubelet on each node.
|
||||
keywords:
|
||||
|
||||
@@ -53,6 +53,8 @@ The following tables lists the configurable parameters of the Metrics Server cha
|
||||
| `image.repository` | Metrics Server image name | `bitnami/metrics-server` |
|
||||
| `image.tag` | Metrics Server image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Metrics Server image pull policy | `IfNotPresent` |
|
||||
| `nameOverride` | String to partially override metrics-server.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override metrics-server.fullname template with a string | `nil` |
|
||||
| `securePort` | Port where metrics-server will be running | `8443` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.port` | Kubernetes Service port | `443` |
|
||||
|
||||
@@ -3,17 +3,24 @@
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "metrics-server.name" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride | replace "-" "" -}}
|
||||
{{- default $name | trunc 24 -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 24 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "metrics-server.fullname" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride | replace "-" "" -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 24 -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
|
||||
@@ -26,6 +26,14 @@ image:
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
|
||||
## String to partially override metrics-server.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override metrics-server.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
rbac:
|
||||
# Specifies whether RBAC resources should be created
|
||||
create: true
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
apiVersion: v1
|
||||
version: 0.1.18
|
||||
appVersion: 2019.7.5
|
||||
version: 1.1.2
|
||||
appVersion: 2019.7.24
|
||||
description: MinIO is an object storage server, compatible with Amazon S3 cloud storage service, mainly used for storing unstructured data (such as photos, videos, log files, etc.)
|
||||
keywords:
|
||||
- minio
|
||||
|
||||
+89
-72
@@ -45,78 +45,86 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following table lists the configurable parameters of the MinIO chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ---------------------------------------| -------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `global.minio.existingSecret` | Name of existing secret to use for MinIO credentials (overrides `existingSecret`) | `nil` |
|
||||
| `global.minio.accessKey` | MinIO Access Key (overrides `accessKey.password`) | `nil` |
|
||||
| `global.minio.secretKey` | MinIO Secret Key (overrides `secretKey.password`) | `nil` |
|
||||
| `image.registry` | MinIO image registry | `docker.io` |
|
||||
| `image.repository` | MinIO image name | `bitnami/minio` |
|
||||
| `image.tag` | MinIO image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug logs should be enabled | `false` |
|
||||
| `clientImage.registry` | MinIO Client image registry | `docker.io` |
|
||||
| `clientImage.repository` | MinIO Client image name | `bitnami/minio-client` |
|
||||
| `clientImage.tag` | MinIO Client image tag | `{TAG_NAME}` |
|
||||
| `mode` | MinIO server mode (`standalone` or `distributed`) | `standalone` |
|
||||
| `statefulset.replicaCount` | Number of pods (only for Minio distributed mode). Should be 4 <= x <= 32 | `4` |
|
||||
| `statefulset.updateStrategy` | Statefulset update strategy policy | `RollingUpdate` |
|
||||
| `statefulset.podManagementpolicy` | Statefulset pods management policy | `Parallel` |
|
||||
| `existingSecret` | Existing secret with MinIO credentials | `nil` |
|
||||
| `useCredentialsFile` | Have the secret mounted as a file instead of env vars | `false` |
|
||||
| `accessKey.password` | MinIO Access Key. Ignored if existing secret is provided. | _random 10 character alphanumeric string_ |
|
||||
| `accessKey.forcePassword` | Force users to specify an Access Key | `false` |
|
||||
| `secretKey.password` | MinIO Secret Key. Ignored if existing secret is provided. | _random 40 character alphanumeric string_ |
|
||||
| `secretKey.forcePassword` | Force users to specify an Secret Key | `false` |
|
||||
| `defaultBuckets` | Comma, semi-colon or space separated list of buckets to create (only in standalone mode) | `nil` |
|
||||
| `disableWebUI` | Disable MinIO Web UI | `false` |
|
||||
| `extraEnv` | Any extra environment variables you would like to pass to the pods | `{}` |
|
||||
| `podAnnotations` | Annotations to be added to pods | `{}` |
|
||||
| `antiAffinity` | Pod anti-affinity policy | `soft` |
|
||||
| `nodeAffinity` | Node affinity policy | `nil` |
|
||||
| `resources` | Pod resources | `{}` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `livenessProbe.enabled` | Enable/disable the Liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `60` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` |
|
||||
| `readinessProbe.enabled` | Enable/disable the Readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `persistence.enabled` | Use a PVC to persist data | `true` |
|
||||
| `persistence.mountPath` | Path to mount the volume at | `/data` |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` |
|
||||
| `persistence.size` | Size of data volume | `8Gi` |
|
||||
| `persistence.annotations` | Persistent Volume annotations | `{}` |
|
||||
| `persistence.existingClaim` | Name of an existing PVC to use (only in "standalone" mode) | `nil` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.port` | MinIO service port | `9000` |
|
||||
| `service.nodePort` | Port to bind to for NodePort service type | `nil` |
|
||||
| `service.loadBalancerIP` | Static IP Address to use for LoadBalancer service type | `nil` |
|
||||
| `service.annotations` | Kubernetes service annotations | `{}` |
|
||||
| `ingress.certManager` | Add annotations for cert-manager | `false` |
|
||||
| `ingress.annotations` | Ingress annotations | `[]` |
|
||||
| `ingress.hosts[0].name` | Hostname to your MinIO installation | `minio.local` |
|
||||
| `ingress.hosts[0].path` | Path within the url structure | `/` |
|
||||
| `ingress.tls[0].hosts[0]` | TLS hosts | `minio.local` |
|
||||
| `ingress.tls[0].secretName` | TLS Secret (certificates) | `minio.local-tls` |
|
||||
| `ingress.secrets[0].name` | TLS Secret Name | `nil` |
|
||||
| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` |
|
||||
| `ingress.secrets[0].key` | TLS Secret Key | `nil` |
|
||||
| `networkPolicy.enabled` | Enable NetworkPolicy | `false` |
|
||||
| `networkPolicy.allowExternal` | Don't require client label for connections | `true` |
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `global.minio.existingSecret` | Name of existing secret to use for MinIO credentials (overrides `existingSecret`) | `nil` |
|
||||
| `global.minio.accessKey` | MinIO Access Key (overrides `accessKey.password`) | `nil` |
|
||||
| `global.minio.secretKey` | MinIO Secret Key (overrides `secretKey.password`) | `nil` |
|
||||
| `image.registry` | MinIO image registry | `docker.io` |
|
||||
| `image.repository` | MinIO image name | `bitnami/minio` |
|
||||
| `image.tag` | MinIO image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug logs should be enabled | `false` |
|
||||
| `nameOverride` | String to partially override minio.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override minio.fullname template with a string | `nil` |
|
||||
| `clientImage.registry` | MinIO Client image registry | `docker.io` |
|
||||
| `clientImage.repository` | MinIO Client image name | `bitnami/minio-client` |
|
||||
| `clientImage.tag` | MinIO Client image tag | `{TAG_NAME}` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `mode` | MinIO server mode (`standalone` or `distributed`) | `standalone` |
|
||||
| `statefulset.replicaCount` | Number of pods (only for Minio distributed mode). Should be 4 <= x <= 32 | `4` |
|
||||
| `statefulset.updateStrategy` | Statefulset update strategy policy | `RollingUpdate` |
|
||||
| `statefulset.podManagementpolicy` | Statefulset pods management policy | `Parallel` |
|
||||
| `existingSecret` | Existing secret with MinIO credentials | `nil` |
|
||||
| `useCredentialsFile` | Have the secret mounted as a file instead of env vars | `false` |
|
||||
| `accessKey.password` | MinIO Access Key. Ignored if existing secret is provided. | _random 10 character alphanumeric string_ |
|
||||
| `accessKey.forcePassword` | Force users to specify an Access Key | `false` |
|
||||
| `secretKey.password` | MinIO Secret Key. Ignored if existing secret is provided. | _random 40 character alphanumeric string_ |
|
||||
| `secretKey.forcePassword` | Force users to specify an Secret Key | `false` |
|
||||
| `defaultBuckets` | Comma, semi-colon or space separated list of buckets to create (only in standalone mode) | `nil` |
|
||||
| `disableWebUI` | Disable MinIO Web UI | `false` |
|
||||
| `extraEnv` | Any extra environment variables you would like to pass to the pods | `{}` |
|
||||
| `podAnnotations` | Annotations to be added to pods | `{}` |
|
||||
| `antiAffinity` | Pod anti-affinity policy | `soft` |
|
||||
| `nodeAffinity` | Node affinity policy | `nil` |
|
||||
| `resources` | Pod resources | `{}` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `livenessProbe.enabled` | Enable/disable the Liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `60` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` |
|
||||
| `readinessProbe.enabled` | Enable/disable the Readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `10` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `6` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `persistence.enabled` | Use a PVC to persist data | `true` |
|
||||
| `persistence.mountPath` | Path to mount the volume at | `/data` |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` |
|
||||
| `persistence.size` | Size of data volume | `8Gi` |
|
||||
| `persistence.annotations` | Persistent Volume annotations | `{}` |
|
||||
| `persistence.existingClaim` | Name of an existing PVC to use (only in "standalone" mode) | `nil` |
|
||||
| `service.type` | Kubernetes Service type | `ClusterIP` |
|
||||
| `service.port` | MinIO service port | `9000` |
|
||||
| `service.nodePort` | Port to bind to for NodePort service type | `nil` |
|
||||
| `service.loadBalancerIP` | Static IP Address to use for LoadBalancer service type | `nil` |
|
||||
| `service.annotations` | Kubernetes service annotations | `{}` |
|
||||
| `ingress.certManager` | Add annotations for cert-manager | `false` |
|
||||
| `ingress.annotations` | Ingress annotations | `[]` |
|
||||
| `ingress.hosts[0].name` | Hostname to your MinIO installation | `minio.local` |
|
||||
| `ingress.hosts[0].path` | Path within the url structure | `/` |
|
||||
| `ingress.tls[0].hosts[0]` | TLS hosts | `minio.local` |
|
||||
| `ingress.tls[0].secretName` | TLS Secret (certificates) | `minio.local-tls` |
|
||||
| `ingress.secrets[0].name` | TLS Secret Name | `nil` |
|
||||
| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` |
|
||||
| `ingress.secrets[0].key` | TLS Secret Key | `nil` |
|
||||
| `networkPolicy.enabled` | Enable NetworkPolicy | `false` |
|
||||
| `networkPolicy.allowExternal` | Don't require client label for connections | `true` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -228,3 +236,12 @@ MinIO exports Prometheus metrics at `/minio/prometheus/metrics`. To allow Promet
|
||||
The [Bitnami MinIO](https://github.com/bitnami/bitnami-docker-minio) image stores data at the `/data` path of the container.
|
||||
|
||||
The chart mounts a [Persistent Volume](http://kubernetes.io/docs/user-guide/persistent-volumes/) at this location. The volume is created using dynamic volume provisioning.
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "minio.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 24 -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
@@ -12,8 +12,16 @@ Create a default fully qualified app name.
|
||||
We truncate at 24 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "minio.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 24 -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
@@ -47,8 +55,9 @@ Return the proper MinIO Client image name
|
||||
Return the proper Docker Image Registry Secret Names
|
||||
*/}}
|
||||
{{- define "minio.imagePullSecrets" -}}
|
||||
{{- $imagePullSecrets := coalesce .Values.global.imagePullSecrets .Values.image.pullSecrets -}}
|
||||
{{- $imagePullSecrets := coalesce .Values.global.imagePullSecrets .Values.image.pullSecrets .Values.volumePermissions.image.pullSecrets -}}
|
||||
{{- if $imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range $imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end -}}
|
||||
@@ -152,3 +161,26 @@ WARNING: Rolling tag detected ({{ .Values.clientImage.repository }}:{{ .Values.c
|
||||
+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "minio.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -51,6 +51,19 @@ spec:
|
||||
securityContext:
|
||||
fsGroup: {{ .Values.securityContext.fsGroup }}
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "minio.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: {{ .Values.persistence.mountPath }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: "minio"
|
||||
image: {{ include "minio.image" . }}
|
||||
|
||||
@@ -61,6 +61,19 @@ spec:
|
||||
securityContext:
|
||||
fsGroup: {{ .Values.securityContext.fsGroup }}
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
initContainers:
|
||||
- name: volume-permissions
|
||||
image: "{{ template "minio.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: {{ .Values.persistence.mountPath }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: "minio"
|
||||
image: {{ include "minio.image" . }}
|
||||
|
||||
@@ -18,7 +18,7 @@ global:
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minio
|
||||
tag: 2019.7.3-debian-9-r2
|
||||
tag: 2019.7.24-debian-9-r0
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -36,13 +36,39 @@ image:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override minio.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override minio.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Bitnami MinIO Client image version
|
||||
## ref: https://hub.docker.com/r/bitnami/minio-client/tags/
|
||||
##
|
||||
clientImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/minio-client
|
||||
tag: 2019.7.3-debian-9-r2
|
||||
tag: 2019.7.24-debian-9-r0
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## MinIO server mode. Allowed values: standalone or distributed.
|
||||
## Distributed Minio ref: https://docs.minio.io/docs/distributed-minio-quickstart-guide
|
||||
|
||||
@@ -18,7 +18,7 @@ global:
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minio
|
||||
tag: 2019.7.3-debian-9-r2
|
||||
tag: 2019.7.24-debian-9-r0
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -36,13 +36,39 @@ image:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override minio.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override minio.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Bitnami MinIO Client image version
|
||||
## ref: https://hub.docker.com/r/bitnami/minio-client/tags/
|
||||
##
|
||||
clientImage:
|
||||
registry: docker.io
|
||||
repository: bitnami/minio-client
|
||||
tag: 2019.7.3-debian-9-r2
|
||||
tag: 2019.7.24-debian-9-r0
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## MinIO server mode. Allowed values: standalone or distributed.
|
||||
## Distributed Minio ref: https://docs.minio.io/docs/distributed-minio-quickstart-guide
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apiVersion: v1
|
||||
name: mxnet
|
||||
version: 0.0.4
|
||||
appVersion: 1.4.1
|
||||
version: 1.1.0
|
||||
appVersion: 1.5.0
|
||||
description: A flexible and efficient library for deep learning
|
||||
keywords:
|
||||
- mxnet
|
||||
|
||||
+78
-61
@@ -45,66 +45,74 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following table lists the configurable parameters of the MinIO chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|--------------------------------------|----------------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | MXNet image registry | `docker.io` |
|
||||
| `image.repository` | MXNet image name | `bitnami/MXNet` |
|
||||
| `image.tag` | MXNet image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug logs should be enabled | `false` |
|
||||
| `git.registry` | Git image registry | `docker.io` |
|
||||
| `git.repository` | Git image name | `bitnami/git` |
|
||||
| `git.tag` | Git image tag | `{TAG_NAME}` |
|
||||
| `git.pullPolicy` | Git image pull policy | `IfNotPresent` |
|
||||
| `git.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `service.type` | Kubernetes service type | `ClusterIP` |
|
||||
| `entrypoint.file` | Main entrypoint to your application. If not speficied, it will be a `sleep infinity` command | `''` |
|
||||
| `entrypoint.args` | Args required by your entrypoint | `nil` |
|
||||
| `entrypoint.workDir` | Working directory for launching the entrypoint | `'/app'` |
|
||||
| `podManagementPolicy` | StatefulSet (worker and server nodes) pod management policy | `Parallel` |
|
||||
| `mode` | Run MXNet in standalone or distributed mode (possible values: `standalone`, `distributed`) | `standalone` |
|
||||
| `serverCount` | Number of server nodes that will execute your code | `1` |
|
||||
| `workerCount` | Number of worker nodes that will execute your code | `1` |
|
||||
| `schedulerPort` | MXNet scheduler port (only for distributed mode) | `49875` |
|
||||
| `configMap` | Config map that contains the files you want to load in MXNet | `nil` |
|
||||
| `cloneFilesFromGit.enabled` | Enable in order to download files from git repository | `false` |
|
||||
| `cloneFilesFromGit.repository` | Repository that holds the files | `nil` |
|
||||
| `cloneFilesFromGit.revision` | Revision from the repository to checkout | `master` |
|
||||
| `commonExtraEnvVars` | Extra environment variables to add to server, scheduler and worker nodes | `nil` |
|
||||
| `workerExtraEnvVars` | Extra environment variables to add to the worker nodes | `nil` |
|
||||
| `serverExtraEnvVars` | Extra environment variables to add to the server nodes | `nil` |
|
||||
| `schedulerExtraEnvVars` | Extra environment variables to add to the scheduler node | `nil` |
|
||||
| `sidecars` | Attach additional containers to the pods (scheduler, worker and server nodes) | `nil` |
|
||||
| `initContainers` | Attach additional init containers to the pods (scheduler, worker and server nodes) | `nil` |
|
||||
| `existingSecret` | Name of a secret with sensitive data to mount in the pods | `nil` |
|
||||
| `nodeSelector` | Node labels for pod assignment (this value is evaluated as a template) | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment (this value is evaluated as a template) | `[]` |
|
||||
| `affinity` | Map of node/pod affinities (this value is evaluated as a template) | `{}` |
|
||||
| `resources` | Pod resources | `{}` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `livenessProbe.enabled` | Enable/disable the Liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `5` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `5` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `readinessProbe.enabled` | Enable/disable the Readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `5` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `1` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `persistence.enabled` | Use a PVC to persist data | `false` |
|
||||
| `persistence.mountPath` | Path to mount the volume at | `/bitnami/mxnet` |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` |
|
||||
| `persistence.size` | Size of data volume | `8Gi` |
|
||||
| `persistence.annotations` | Persistent Volume annotations | `{}` |
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | MXNet image registry | `docker.io` |
|
||||
| `image.repository` | MXNet image name | `bitnami/MXNet` |
|
||||
| `image.tag` | MXNet image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug logs should be enabled | `false` |
|
||||
| `nameOverride` | String to partially override mxnet.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override mxnet.fullname template with a string | `nil` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `git.registry` | Git image registry | `docker.io` |
|
||||
| `git.repository` | Git image name | `bitnami/git` |
|
||||
| `git.tag` | Git image tag | `{TAG_NAME}` |
|
||||
| `git.pullPolicy` | Git image pull policy | `IfNotPresent` |
|
||||
| `git.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `service.type` | Kubernetes service type | `ClusterIP` |
|
||||
| `entrypoint.file` | Main entrypoint to your application. If not speficied, it will be a `sleep infinity` command | `''` |
|
||||
| `entrypoint.args` | Args required by your entrypoint | `nil` |
|
||||
| `entrypoint.workDir` | Working directory for launching the entrypoint | `'/app'` |
|
||||
| `podManagementPolicy` | StatefulSet (worker and server nodes) pod management policy | `Parallel` |
|
||||
| `mode` | Run MXNet in standalone or distributed mode (possible values: `standalone`, `distributed`) | `standalone` |
|
||||
| `serverCount` | Number of server nodes that will execute your code | `1` |
|
||||
| `workerCount` | Number of worker nodes that will execute your code | `1` |
|
||||
| `schedulerPort` | MXNet scheduler port (only for distributed mode) | `49875` |
|
||||
| `configMap` | Config map that contains the files you want to load in MXNet | `nil` |
|
||||
| `cloneFilesFromGit.enabled` | Enable in order to download files from git repository | `false` |
|
||||
| `cloneFilesFromGit.repository` | Repository that holds the files | `nil` |
|
||||
| `cloneFilesFromGit.revision` | Revision from the repository to checkout | `master` |
|
||||
| `commonExtraEnvVars` | Extra environment variables to add to server, scheduler and worker nodes | `nil` |
|
||||
| `workerExtraEnvVars` | Extra environment variables to add to the worker nodes | `nil` |
|
||||
| `serverExtraEnvVars` | Extra environment variables to add to the server nodes | `nil` |
|
||||
| `schedulerExtraEnvVars` | Extra environment variables to add to the scheduler node | `nil` |
|
||||
| `sidecars` | Attach additional containers to the pods (scheduler, worker and server nodes) | `nil` |
|
||||
| `initContainers` | Attach additional init containers to the pods (scheduler, worker and server nodes) | `nil` |
|
||||
| `existingSecret` | Name of a secret with sensitive data to mount in the pods | `nil` |
|
||||
| `nodeSelector` | Node labels for pod assignment (this value is evaluated as a template) | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment (this value is evaluated as a template) | `[]` |
|
||||
| `affinity` | Map of node/pod affinities (this value is evaluated as a template) | `{}` |
|
||||
| `resources` | Pod resources | `{}` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `livenessProbe.enabled` | Enable/disable the Liveness probe | `true` |
|
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `5` |
|
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | `5` |
|
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | `5` |
|
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `readinessProbe.enabled` | Enable/disable the Readiness probe | `true` |
|
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `5` |
|
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | `5` |
|
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | `1` |
|
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | `1` |
|
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | `5` |
|
||||
| `persistence.enabled` | Use a PVC to persist data | `false` |
|
||||
| `persistence.mountPath` | Path to mount the volume at | `/bitnami/mxnet` |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `persistence.accessMode` | Use volume as ReadOnly or ReadWrite | `ReadWriteOnce` |
|
||||
| `persistence.size` | Size of data volume | `8Gi` |
|
||||
| `persistence.annotations` | Persistent Volume annotations | `{}` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -193,7 +201,7 @@ $ helm install --name my-release \
|
||||
bitnami/mxnet
|
||||
```
|
||||
|
||||
In case you want to add a file that includes sensitive information, pass a secret object using the `existingSecret` parameter. All the files in the secret will be mounted in the `/secrets` folder.
|
||||
In case you want to add a file that includes sensitive information, pass a secret object using the `existingSecret` parameter. All the files in the secret will be mounted in the `/secrets` folder.
|
||||
|
||||
### Distributed training example
|
||||
|
||||
@@ -267,6 +275,15 @@ The [Bitnami MXNet](https://github.com/bitnami/bitnami-docker-mxnet) image can p
|
||||
|
||||
The chart mounts a [Persistent Volume](http://kubernetes.io/docs/user-guide/persistent-volumes/) at this location. The volume is created using dynamic volume provisioning.
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
## Sidecars and Init Containers
|
||||
|
||||
If you have a need for additional containers to run within the same pod as MXNet (e.g. an additional metrics or logging exporter), you can do so via the `sidecars` config parameter. Simply define your container according to the Kubernetes container spec.
|
||||
|
||||
@@ -105,7 +105,7 @@ imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.git.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.git.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -113,8 +113,11 @@ imagePullSecrets:
|
||||
{{- range .Values.git.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if or .Values.image.pullSecrets .Values.git.pullSecrets }}
|
||||
{{- else if or .Values.image.pullSecrets .Values.git.pullSecrets .Values.volumePermissions.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
@@ -122,6 +125,9 @@ imagePullSecrets:
|
||||
{{- range .Values.git.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- range .Values.volumePermissions.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -185,3 +191,26 @@ mxnet: serverCount
|
||||
Please set a valid worker count size (--set serverCount=X)
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper image name (for the init container volume-permissions image)
|
||||
*/}}
|
||||
{{- define "mxnet.volumePermissions.image" -}}
|
||||
{{- $registryName := .Values.volumePermissions.image.registry -}}
|
||||
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
|
||||
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
|
||||
Also, we can't use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imageRegistry }}
|
||||
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -41,8 +41,8 @@ spec:
|
||||
{{- with .Values.affinity }}
|
||||
affinity: {{ tpl (toYaml .) $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.cloneFilesFromGit.enabled }}
|
||||
initContainers:
|
||||
{{- if .Values.cloneFilesFromGit.enabled }}
|
||||
- name: git-clone-repository
|
||||
image: {{ include "git.image" . }}
|
||||
imagePullPolicy: {{ .Values.git.pullPolicy | quote }}
|
||||
@@ -55,6 +55,18 @@ spec:
|
||||
- name: git-cloned-files
|
||||
mountPath: /app
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
- name: volume-permissions
|
||||
image: "{{ template "mxnet.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: {{ .Values.persistence.mountPath }}
|
||||
{{- end }}
|
||||
{{- if .Values.initContainers }}
|
||||
{{- toYaml .Values.initContainers | nindent 6 }}
|
||||
{{- end }}
|
||||
@@ -63,7 +75,7 @@ spec:
|
||||
workingDir: {{ .Values.entrypoint.workDir }}
|
||||
image: {{ include "mxnet.image" . }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command:
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
@@ -88,7 +100,7 @@ spec:
|
||||
value: {{ .Values.schedulerPort | quote }}
|
||||
{{- if .Values.commonExtraEnvVars }}
|
||||
{{- include "mxnet.parseEnvVars" .Values.commonExtraEnvVars | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.serverExtraEnvVars }}
|
||||
{{- include "mxnet.parseEnvVars" .Values.serverExtraVars | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -183,4 +195,4 @@ spec:
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -40,8 +40,8 @@ spec:
|
||||
{{- with .Values.affinity }}
|
||||
affinity: {{ tpl (toYaml .) $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.cloneFilesFromGit.enabled }}
|
||||
initContainers:
|
||||
{{- if .Values.cloneFilesFromGit.enabled }}
|
||||
- name: git-clone-repository
|
||||
image: {{ include "git.image" . }}
|
||||
imagePullPolicy: {{ .Values.git.pullPolicy | quote }}
|
||||
@@ -54,6 +54,18 @@ spec:
|
||||
- name: git-cloned-files
|
||||
mountPath: /app
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
- name: volume-permissions
|
||||
image: "{{ template "mxnet.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: {{ .Values.persistence.mountPath }}
|
||||
{{- end }}
|
||||
{{- if .Values.initContainers }}
|
||||
{{- toYaml .Values.initContainers | nindent 6 }}
|
||||
{{- end }}
|
||||
@@ -62,7 +74,7 @@ spec:
|
||||
workingDir: {{ .Values.entrypoint.workDir }}
|
||||
image: {{ include "mxnet.image" . }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command:
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
@@ -70,7 +82,7 @@ spec:
|
||||
env:
|
||||
{{- if .Values.commonExtraEnvVars }}
|
||||
{{- include "mxnet.parseEnvVars" .Values.commonExtraEnvVars | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: mxnet
|
||||
containerPort: {{ .Values.schedulerPort }}
|
||||
|
||||
@@ -41,8 +41,8 @@ spec:
|
||||
{{- with .Values.affinity }}
|
||||
affinity: {{ tpl (toYaml .) $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.cloneFilesFromGit.enabled }}
|
||||
initContainers:
|
||||
{{- if .Values.cloneFilesFromGit.enabled }}
|
||||
- name: git-clone-repository
|
||||
image: {{ include "git.image" . }}
|
||||
imagePullPolicy: {{ .Values.git.pullPolicy | quote }}
|
||||
@@ -55,6 +55,18 @@ spec:
|
||||
- name: git-cloned-files
|
||||
mountPath: /app
|
||||
{{- end }}
|
||||
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
|
||||
- name: volume-permissions
|
||||
image: "{{ template "mxnet.volumePermissions.image" . }}"
|
||||
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
|
||||
command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: {{ .Values.persistence.mountPath }}
|
||||
{{- end }}
|
||||
{{- if .Values.initContainers }}
|
||||
{{- toYaml .Values.initContainers | nindent 6 }}
|
||||
{{- end }}
|
||||
@@ -63,7 +75,7 @@ spec:
|
||||
workingDir: {{ .Values.entrypoint.workDir }}
|
||||
image: {{ include "mxnet.image" . }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command:
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
@@ -88,7 +100,7 @@ spec:
|
||||
value: {{ .Values.schedulerPort | quote }}
|
||||
{{- if .Values.commonExtraEnvVars }}
|
||||
{{- include "mxnet.parseEnvVars" .Values.commonExtraEnvVars | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.workerExtraEnvVars }}
|
||||
{{- include "mxnet.parseEnvVars" .Values.workerExtraVars | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -183,4 +195,4 @@ spec:
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/mxnet
|
||||
tag: 1.4.1-debian-9-r9
|
||||
tag: 1.5.0-debian-9-r0
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -31,6 +31,32 @@ image:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override mxnet.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override mxnet.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## Bitnami git image version
|
||||
## ref: https://hub.docker.com/r/bitnami/git/tags/
|
||||
##
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/mxnet
|
||||
tag: 1.4.1-debian-9-r9
|
||||
tag: 1.5.0-debian-9-r0
|
||||
## Specify a imagePullPolicy
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
@@ -31,6 +31,32 @@ image:
|
||||
## ref: https://github.com/bitnami/minideb-extras/#turn-on-bash-debugging
|
||||
debug: false
|
||||
|
||||
## String to partially override mxnet.fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
|
||||
## String to fully override mxnet.fullname template
|
||||
##
|
||||
# fullnameOverride:
|
||||
|
||||
## Init containers parameters:
|
||||
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
|
||||
##
|
||||
volumePermissions:
|
||||
enabled: false
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/minideb
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myRegistryKeySecretName
|
||||
resources: {}
|
||||
|
||||
## Bitnami git image version
|
||||
## ref: https://hub.docker.com/r/bitnami/git/tags/
|
||||
##
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apiVersion: v1
|
||||
name: mysql
|
||||
version: 5.0.7
|
||||
appVersion: 8.0.16
|
||||
version: 6.2.1
|
||||
appVersion: 8.0.17
|
||||
description: Chart to create a Highly available MySQL cluster
|
||||
keywords:
|
||||
- mysql
|
||||
|
||||
+93
-76
@@ -45,82 +45,90 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following tables lists the configurable parameters of the MySQL chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|-------------------------------------------|----------------------------------------------------------------------------|-------------------------------------------------------------------|
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | MySQL image registry | `docker.io` |
|
||||
| `image.repository` | MySQL Image name | `bitnami/mysql` |
|
||||
| `image.tag` | MySQL Image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | MySQL image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `service.type` | Kubernetes service type | `ClusterIP` |
|
||||
| `service.port` | MySQL service port | `3306` |
|
||||
| `root.password` | Password for the `root` user | _random 10 character alphanumeric string_ |
|
||||
| `root.forcePassword` | Force users to specify a password. That is required for 'helm upgrade' to work properly | `false` |
|
||||
| `db.user` | Username of new user to create (should be different from replication.user) | `nil` |
|
||||
| `db.password` | Password for the new user | _random 10 character alphanumeric string if `db.user` is defined_ |
|
||||
| `db.name` | Name for new database to create | `my_database` |
|
||||
| `db.forcePassword` | Force users to specify a password. That is required for 'helm upgrade' to work properly | `false` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `replication.enabled` | MySQL replication enabled | `true` |
|
||||
| `replication.user` | MySQL replication user (should be different from db.user) | `replicator` |
|
||||
| `replication.password` | MySQL replication user password | _random 10 character alphanumeric string_ |
|
||||
| `replication.forcePassword` | Force users to specify a password. That is required for 'helm upgrade' to work properly | `false` |
|
||||
| `master.antiAffinity` | Master pod anti-affinity policy | `soft` |
|
||||
| `master.updateStrategy.type` | Master statefulset update strategy policy | `RollingUpdate` |
|
||||
| `master.persistence.enabled` | Enable persistence using a `PersistentVolumeClaim` | `true` |
|
||||
| `master.persistence.existingClaim` | Provide an existing `PersistentVolumeClaim` | `nil` |
|
||||
| `master.persistence.mountPath` | Configure `PersistentVolumeClaim` mount path | `/bitnami/mysql` |
|
||||
| `master.persistence.annotations` | Persistent Volume Claim annotations | `{}` |
|
||||
| `master.persistence.storageClass` | Persistent Volume Storage Class | `` |
|
||||
| `master.persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `master.persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `master.config` | Config file for the MySQL Master server | `_default values in the values.yaml file_` |
|
||||
| `master.resources` | CPU/Memory resource requests/limits for master node | `{}` |
|
||||
| `master.livenessProbe.enabled` | Turn on and off liveness probe (master) | `true` |
|
||||
| `master.livenessProbe.initialDelaySeconds`| Delay before liveness probe is initiated (master) | `120` |
|
||||
| `master.livenessProbe.periodSeconds` | How often to perform the probe (master) | `10` |
|
||||
| `master.livenessProbe.timeoutSeconds` | When the probe times out (master) | `1` |
|
||||
| `master.livenessProbe.successThreshold` | Minimum consecutive successes for the probe (master) | `1` |
|
||||
| `master.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe (master) | `3` |
|
||||
| `master.readinessProbe.enabled` | Turn on and off readiness probe (master) | `true` |
|
||||
| `master.readinessProbe.initialDelaySeconds`| Delay before readiness probe is initiated (master) | `30` |
|
||||
| `master.readinessProbe.periodSeconds` | How often to perform the probe (master) | `10` |
|
||||
| `master.readinessProbe.timeoutSeconds` | When the probe times out (master) | `1` |
|
||||
| `master.readinessProbe.successThreshold` | Minimum consecutive successes for the probe (master) | `1` |
|
||||
| `master.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe (master) | `3` |
|
||||
| `slave.replicas` | Desired number of slave replicas | `1` |
|
||||
| `slave.antiAffinity` | Slave pod anti-affinity policy | `soft` |
|
||||
| `slave.updateStrategy.type` | Slave statefulset update strategy policy | `RollingUpdate` |
|
||||
| `slave.persistence.enabled` | Enable persistence using a `PersistentVolumeClaim` | `true` |
|
||||
| `slave.persistence.mountPath` | Configure `PersistentVolumeClaim` mount path | `/bitnami/mysql` |
|
||||
| `slave.persistence.annotations` | Persistent Volume Claim annotations | `{}` |
|
||||
| `slave.persistence.storageClass` | Persistent Volume Storage Class | `` |
|
||||
| `slave.persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `slave.persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `slave.config` | Config file for the MySQL Slave replicas | `_default values in the values.yaml file_` |
|
||||
| `slave.resources` | CPU/Memory resource requests/limits for slave node | `{}` |
|
||||
| `slave.livenessProbe.enabled` | Turn on and off liveness probe (slave) | `true` |
|
||||
| `slave.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (slave) | `120` |
|
||||
| `slave.livenessProbe.periodSeconds` | How often to perform the probe (slave) | `10` |
|
||||
| `slave.livenessProbe.timeoutSeconds` | When the probe times out (slave) | `1` |
|
||||
| `slave.livenessProbe.successThreshold` | Minimum consecutive successes for the probe (slave) | `1` |
|
||||
| `slave.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe (slave) | `3` |
|
||||
| `slave.readinessProbe.enabled` | Turn on and off readiness probe (slave) | `true` |
|
||||
| `slave.readinessProbe.initialDelaySeconds`| Delay before readiness probe is initiated (slave) | `30` |
|
||||
| `slave.readinessProbe.periodSeconds` | How often to perform the probe (slave) | `10` |
|
||||
| `slave.readinessProbe.timeoutSeconds` | When the probe times out (slave) | `1` |
|
||||
| `slave.readinessProbe.successThreshold` | Minimum consecutive successes for the probe (slave) | `1` |
|
||||
| `slave.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe (slave) | `3` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image` | Exporter image name | `prom/mysqld-exporter` |
|
||||
| `metrics.imageTag` | Exporter image tag | `v0.10.0` |
|
||||
| `metrics.imagePullPolicy` | Exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.resources` | Exporter resource requests/limit | `nil` |
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
|
||||
| `global.imageRegistry` | Global Docker image registry | `nil` |
|
||||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.registry` | MySQL image registry | `docker.io` |
|
||||
| `image.repository` | MySQL Image name | `bitnami/mysql` |
|
||||
| `image.tag` | MySQL Image tag | `{TAG_NAME}` |
|
||||
| `image.pullPolicy` | MySQL image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `nameOverride` | String to partially override mysql.fullname template with a string (will prepend the release name) | `nil` |
|
||||
| `fullnameOverride` | String to fully override mysql.fullname template with a string | `nil` |
|
||||
| `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` |
|
||||
| `volumePermissions.image.tag` | Init container volume-permissions image tag | `latest` |
|
||||
| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `Always` |
|
||||
| `volumePermissions.resources` | Init container resource requests/limit | `nil` |
|
||||
| `service.type` | Kubernetes service type | `ClusterIP` |
|
||||
| `service.port` | MySQL service port | `3306` |
|
||||
| `root.password` | Password for the `root` user | _random 10 character alphanumeric string_ |
|
||||
| `root.forcePassword` | Force users to specify a password. That is required for 'helm upgrade' to work properly | `false` |
|
||||
| `db.user` | Username of new user to create (should be different from replication.user) | `nil` |
|
||||
| `db.password` | Password for the new user | _random 10 character alphanumeric string if `db.user` is defined_ |
|
||||
| `db.name` | Name for new database to create | `my_database` |
|
||||
| `db.forcePassword` | Force users to specify a password. That is required for 'helm upgrade' to work properly | `false` |
|
||||
| `securityContext.enabled` | Enable security context | `true` |
|
||||
| `securityContext.fsGroup` | Group ID for the container | `1001` |
|
||||
| `securityContext.runAsUser` | User ID for the container | `1001` |
|
||||
| `clusterDomain` | Kubernetes cluster domain | `cluster.local` |
|
||||
| `replication.enabled` | MySQL replication enabled | `true` |
|
||||
| `replication.user` | MySQL replication user (should be different from db.user) | `replicator` |
|
||||
| `replication.password` | MySQL replication user password | _random 10 character alphanumeric string_ |
|
||||
| `replication.forcePassword` | Force users to specify a password. That is required for 'helm upgrade' to work properly | `false` |
|
||||
| `master.antiAffinity` | Master pod anti-affinity policy | `soft` |
|
||||
| `master.updateStrategy.type` | Master statefulset update strategy policy | `RollingUpdate` |
|
||||
| `master.persistence.enabled` | Enable persistence using a `PersistentVolumeClaim` | `true` |
|
||||
| `master.persistence.existingClaim` | Provide an existing `PersistentVolumeClaim` | `nil` |
|
||||
| `master.persistence.mountPath` | Configure `PersistentVolumeClaim` mount path | `/bitnami/mysql` |
|
||||
| `master.persistence.annotations` | Persistent Volume Claim annotations | `{}` |
|
||||
| `master.persistence.storageClass` | Persistent Volume Storage Class | `` |
|
||||
| `master.persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `master.persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `master.config` | Config file for the MySQL Master server | `_default values in the values.yaml file_` |
|
||||
| `master.resources` | CPU/Memory resource requests/limits for master node | `{}` |
|
||||
| `master.livenessProbe.enabled` | Turn on and off liveness probe (master) | `true` |
|
||||
| `master.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (master) | `120` |
|
||||
| `master.livenessProbe.periodSeconds` | How often to perform the probe (master) | `10` |
|
||||
| `master.livenessProbe.timeoutSeconds` | When the probe times out (master) | `1` |
|
||||
| `master.livenessProbe.successThreshold` | Minimum consecutive successes for the probe (master) | `1` |
|
||||
| `master.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe (master) | `3` |
|
||||
| `master.readinessProbe.enabled` | Turn on and off readiness probe (master) | `true` |
|
||||
| `master.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (master) | `30` |
|
||||
| `master.readinessProbe.periodSeconds` | How often to perform the probe (master) | `10` |
|
||||
| `master.readinessProbe.timeoutSeconds` | When the probe times out (master) | `1` |
|
||||
| `master.readinessProbe.successThreshold` | Minimum consecutive successes for the probe (master) | `1` |
|
||||
| `master.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe (master) | `3` |
|
||||
| `slave.replicas` | Desired number of slave replicas | `1` |
|
||||
| `slave.antiAffinity` | Slave pod anti-affinity policy | `soft` |
|
||||
| `slave.updateStrategy.type` | Slave statefulset update strategy policy | `RollingUpdate` |
|
||||
| `slave.persistence.enabled` | Enable persistence using a `PersistentVolumeClaim` | `true` |
|
||||
| `slave.persistence.mountPath` | Configure `PersistentVolumeClaim` mount path | `/bitnami/mysql` |
|
||||
| `slave.persistence.annotations` | Persistent Volume Claim annotations | `{}` |
|
||||
| `slave.persistence.storageClass` | Persistent Volume Storage Class | `` |
|
||||
| `slave.persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` |
|
||||
| `slave.persistence.size` | Persistent Volume Size | `8Gi` |
|
||||
| `slave.config` | Config file for the MySQL Slave replicas | `_default values in the values.yaml file_` |
|
||||
| `slave.resources` | CPU/Memory resource requests/limits for slave node | `{}` |
|
||||
| `slave.livenessProbe.enabled` | Turn on and off liveness probe (slave) | `true` |
|
||||
| `slave.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated (slave) | `120` |
|
||||
| `slave.livenessProbe.periodSeconds` | How often to perform the probe (slave) | `10` |
|
||||
| `slave.livenessProbe.timeoutSeconds` | When the probe times out (slave) | `1` |
|
||||
| `slave.livenessProbe.successThreshold` | Minimum consecutive successes for the probe (slave) | `1` |
|
||||
| `slave.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe (slave) | `3` |
|
||||
| `slave.readinessProbe.enabled` | Turn on and off readiness probe (slave) | `true` |
|
||||
| `slave.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated (slave) | `30` |
|
||||
| `slave.readinessProbe.periodSeconds` | How often to perform the probe (slave) | `10` |
|
||||
| `slave.readinessProbe.timeoutSeconds` | When the probe times out (slave) | `1` |
|
||||
| `slave.readinessProbe.successThreshold` | Minimum consecutive successes for the probe (slave) | `1` |
|
||||
| `slave.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe (slave) | `3` |
|
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
|
||||
| `metrics.image` | Exporter image name | `bitnami/mysqld-exporter` |
|
||||
| `metrics.imageTag` | Exporter image tag | `{TAG_NAME}` |
|
||||
| `metrics.imagePullPolicy` | Exporter image pull policy | `IfNotPresent` |
|
||||
| `metrics.resources` | Exporter resource requests/limit | `nil` |
|
||||
|
||||
The above parameters map to the env variables defined in [bitnami/mysql](http://github.com/bitnami/bitnami-docker-mysql). For more information please refer to the [bitnami/mysql](http://github.com/bitnami/bitnami-docker-mysql) image documentation.
|
||||
|
||||
@@ -192,6 +200,15 @@ The [Bitnami MySQL](https://github.com/bitnami/bitnami-docker-mysql) image store
|
||||
|
||||
The chart mounts a [Persistent Volume](kubernetes.io/docs/user-guide/persistent-volumes/) volume at this location. The volume is created using dynamic volume provisioning by default. An existing PersistentVolumeClaim can be defined.
|
||||
|
||||
### Adjust permissions of persistent volume mountpoint
|
||||
|
||||
As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it.
|
||||
|
||||
By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions.
|
||||
As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination.
|
||||
|
||||
You can enable this initContainer by setting `volumePermissions.enabled` to `true`.
|
||||
|
||||
## Upgrading
|
||||
|
||||
It's necessary to set the `root.password` parameter when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Administrator credentials' section. Please note down the password and run the command below to upgrade your chart:
|
||||
|
||||
@@ -7,7 +7,7 @@ Tip:
|
||||
|
||||
Services:
|
||||
|
||||
echo Master: {{ template "fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ .Values.service.port }}
|
||||
echo Master: {{ template "mysql.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ .Values.service.port }}
|
||||
{{- if .Values.replication.enabled }}
|
||||
echo Slave: {{ template "mysql.slave.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ .Values.service.port }}
|
||||
{{- end }}
|
||||
@@ -15,17 +15,17 @@ Services:
|
||||
Administrator credentials:
|
||||
|
||||
echo Username: root
|
||||
echo Password : $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "fullname" . }} -o jsonpath="{.data.mysql-root-password}" | base64 --decode)
|
||||
echo Password : $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath="{.data.mysql-root-password}" | base64 --decode)
|
||||
|
||||
To connect to your database:
|
||||
|
||||
1. Run a pod that you can use as a client:
|
||||
|
||||
kubectl run {{ template "fullname" . }}-client --rm --tty -i --restart='Never' --image {{ template "mysql.image" . }} --namespace {{ .Release.Namespace }} --command -- bash
|
||||
kubectl run {{ template "mysql.fullname" . }}-client --rm --tty -i --restart='Never' --image {{ template "mysql.image" . }} --namespace {{ .Release.Namespace }} --command -- bash
|
||||
|
||||
2. To connect to master service (read/write):
|
||||
|
||||
mysql -h {{ template "fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.db.name }}
|
||||
mysql -h {{ template "mysql.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.db.name }}
|
||||
|
||||
{{- if .Values.replication.enabled }}
|
||||
|
||||
@@ -38,7 +38,7 @@ To upgrade this helm chart:
|
||||
|
||||
1. Obtain the password as described on the 'Administrator credentials' section and set the 'root.password' parameter as shown below:
|
||||
|
||||
ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "fullname" . }} -o jsonpath="{.data.mysql-root-password}" | base64 --decode)
|
||||
ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath="{.data.mysql-root-password}" | base64 --decode)
|
||||
helm upgrade {{ .Release.Name }} bitnami/mysql --set root.password=$ROOT_PASSWORD
|
||||
|
||||
{{- if and (contains "bitnami/" .Values.image.repository) (not (.Values.image.tag | toString | regexFind "-r\\d+$|sha256:")) }}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user