From f955a75c9cc81449defc010177c73a88cee327d6 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Sun, 24 Sep 2023 01:58:56 +0530 Subject: [PATCH 1/7] fix operator chart Signed-off-by: Shubham Gupta --- charts/redis-operator/Chart.lock | 4 ++-- charts/redis-operator/Chart.yaml | 4 ++-- charts/redis-operator/readme.md | 24 ++++++++++++++++--- .../templates/cert-manager.yaml | 3 ++- .../templates/operator-deployment.yaml | 15 +++++++++--- charts/redis-operator/values.yaml | 23 +++++++++++------- 6 files changed, 53 insertions(+), 20 deletions(-) diff --git a/charts/redis-operator/Chart.lock b/charts/redis-operator/Chart.lock index da0c6637..397ae976 100644 --- a/charts/redis-operator/Chart.lock +++ b/charts/redis-operator/Chart.lock @@ -2,5 +2,5 @@ dependencies: - name: cert-manager repository: https://charts.jetstack.io version: v1.12.4 -digest: sha256:59620acecec8286044638610b9aeeb0df7282987a8d5251dfa52c9742df41198 -generated: "2023-09-09T00:52:20.011999198+05:30" +digest: sha256:57ad8d5904a051cc36bf28bc3f6bf874224a79f462cd67dba56c7c7cc55a044f +generated: "2023-09-24T01:13:17.136034495+05:30" diff --git a/charts/redis-operator/Chart.yaml b/charts/redis-operator/Chart.yaml index e39156bd..351ea278 100644 --- a/charts/redis-operator/Chart.yaml +++ b/charts/redis-operator/Chart.yaml @@ -24,5 +24,5 @@ dependencies: - name: cert-manager version: v1.12.4 repository: https://charts.jetstack.io - alias: cert-manager - condition: cert-manager.enabled \ No newline at end of file + alias: certManager + condition: certManager.enabled \ No newline at end of file diff --git a/charts/redis-operator/readme.md b/charts/redis-operator/readme.md index 7bf61784..ae0e58b2 100644 --- a/charts/redis-operator/readme.md +++ b/charts/redis-operator/readme.md @@ -31,10 +31,12 @@ kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/ Replace `` and `` with your specific values. ```bash -helm install ot-helm/redis-operator --version=0.15.4 --appVersion=0.15.1 --set certificate.secretName= --set cert-manager=true --namespace --create-namespace +helm install ot-helm/redis-operator --version=0.15.5 --appVersion=0.15.1 --set certificate.secretName= --set certManager.enabled=true --namespace --create-namespace ``` > Note: If `certificate.secretName` is not provided, the operator will generate a self-signed certificate and use it for webhook server. +--- +> Note : If you want to disable the webhook you have to pass the `--set webhook=false` while installing the redis-operator. ### 4. Patch the CA Bundle (if using cert-manager) @@ -74,8 +76,14 @@ kubectl create secret tls --key tls.key --cert tls.crt -n |-------------------------------------|------------------------------------|--------------------------------------------------------------| | `redisOperator.name` | Operator name | `redis-operator` | | `redisOperator.imageName` | Image repository | `quay.io/opstree/redis-operator` | -| `redisOperator.imageTag` | Image tag | | +| `redisOperator.imageTag` | Image tag | `{{appVersion}}` | | `redisOperator.imagePullPolicy` | Image pull policy | `Always` | +| `redisOperator.podAnnotations` | Additional pod annotations | `{}` | +| `redisOperator.podLabels` | Additional Pod labels | `{}` | +| `redisOperator.extraArgs` | Additional arguments for the operator | `{}` | +| `redisOperator.watch_namespace` | Namespace for the operator to watch | `""` | +| `redisOperator.env` | Environment variables for the operator | `{}` | +| `redisOperator.webhook` | Enable webhook | `true` | | `resources.limits.cpu` | CPU limit | `500m` | | `resources.limits.memory` | Memory limit | `500Mi` | | `resources.requests.cpu` | CPU request | `500m` | @@ -89,4 +97,14 @@ kubectl create secret tls --key tls.key --cert tls.crt -n | `issuer.email` | Issuer email | `shubham.gupta@opstree.com` | | `issuer.server` | Issuer server URL | `https://acme-v02.api.letsencrypt.org/directory` | | `issuer.privateKeySecretName` | Private key secret name | `letsencrypt-prod` | -| `cert-manager.enabled` | Enable cert-manager | `true` | +| `certManager.enabled` | Enable cert-manager | `true` | + +## Scheduling Parameters + +| Parameter | Description | Default | +|-------------------------|--------------------------------------------|----------| +| `priorityClassName` | Priority class name for the pods | `""` | +| `nodeSelector` | Labels for pod assignment | `{}` | +| `tolerateAllTaints` | Whether to tolerate all node taints | `false` | +| `tolerations` | Taints to tolerate | `[]` | +| `affinity` | Affinity rules for pod assignment | `{}` | diff --git a/charts/redis-operator/templates/cert-manager.yaml b/charts/redis-operator/templates/cert-manager.yaml index 9ba7f771..223efff3 100644 --- a/charts/redis-operator/templates/cert-manager.yaml +++ b/charts/redis-operator/templates/cert-manager.yaml @@ -1,4 +1,5 @@ -{{ if ".Values.cert-manager.enabled" }} +{{ if .Values.certManager.enabled }} + apiVersion: cert-manager.io/v1 kind: Issuer metadata: diff --git a/charts/redis-operator/templates/operator-deployment.yaml b/charts/redis-operator/templates/operator-deployment.yaml index 006fac2d..1e9dd117 100644 --- a/charts/redis-operator/templates/operator-deployment.yaml +++ b/charts/redis-operator/templates/operator-deployment.yaml @@ -49,11 +49,20 @@ spec: {{- range $arg := .Values.redisOperator.extraArgs }} - {{ $arg }} {{- end }} -{{- if .Values.watch_namespace }} +{{- if and .Values.redisOperator.watch_namespace (ne .Values.redisOperator.watch_namespace "") }} env: - - name: NAMESPACE - value: {{ .Values.watch_namespace }} + - name: WATCH_NAMESPACE + value: {{ .Values.redisOperator.watch_namespace }} {{- end }} +{{- if .Values.redisOperator.env}} + env: + - name: ENABLE_WEBHOOKS + value: "true" +{{- end }} + {{- range $env := .Values.redisOperator.env }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{- end }} {{- if .Values.resources }} resources: {{ toYaml .Values.resources | indent 10 }} diff --git a/charts/redis-operator/values.yaml b/charts/redis-operator/values.yaml index 9035503a..c14dad74 100644 --- a/charts/redis-operator/values.yaml +++ b/charts/redis-operator/values.yaml @@ -15,8 +15,13 @@ redisOperator: extraArgs: [] # - -zap-log-level=error + watch_namespace: "" + env: [] + webhook: true -# watch_namespace: ot-operators + +webhook: + enabled: true resources: limits: @@ -30,12 +35,6 @@ replicas: 1 serviceAccountName: redis-operator -priorityClassName: "" -nodeSelector: {} -tolerateAllTaints: false -tolerations: [] -affinity: {} - service: name: webhook-service namespace: redis-operator @@ -54,5 +53,11 @@ issuer: enabled: true ingressClass: nginx -cert-manager: - enabled: true \ No newline at end of file +certManager: + enabled: true + +priorityClassName: "" +nodeSelector: {} +tolerateAllTaints: false +tolerations: [] +affinity: {} From c953c67b95e59ec9d610e4e070aaaa165cebeb9e Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Mon, 25 Sep 2023 02:25:21 +0530 Subject: [PATCH 2/7] release v0.15.1 charts Signed-off-by: Shubham Gupta --- charts/redis-cluster/Chart.yaml | 4 +- charts/redis-cluster/README.md | 198 ++++++++++++++--- .../redis-cluster/templates/extra-config.yaml | 3 +- .../templates/redis-cluster.yaml | 201 +++++++++++++++--- charts/redis-cluster/values.yaml | 129 +++++++---- charts/redis-operator/Chart.yaml | 2 +- charts/redis-replication/Chart.yaml | 7 +- .../templates/redis-replication.yaml | 163 ++++++++++---- charts/redis-replication/values.yaml | 118 ++++++---- charts/redis-sentinel/Chart.yaml | 4 +- .../templates/redis-sentinel.yaml | 150 ++++++++++--- charts/redis-sentinel/values.yaml | 119 +++++++---- charts/redis/Chart.yaml | 4 +- charts/redis/README.md | 173 ++++++++++++--- charts/redis/templates/redis-standalone.yaml | 162 ++++++++++---- charts/redis/values.yaml | 109 +++++++--- 16 files changed, 1182 insertions(+), 364 deletions(-) diff --git a/charts/redis-cluster/Chart.yaml b/charts/redis-cluster/Chart.yaml index 85c25456..8c935c9b 100644 --- a/charts/redis-cluster/Chart.yaml +++ b/charts/redis-cluster/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 name: redis-cluster description: Provides easy redis setup definitions for Kubernetes services, and deployment. -version: 0.15.3 -appVersion: "0.15.0" +version: 0.15.5 +appVersion: "0.15.1" home: https://github.com/ot-container-kit/redis-operator sources: - https://github.com/ot-container-kit/redis-operator diff --git a/charts/redis-cluster/README.md b/charts/redis-cluster/README.md index a74dc34f..21284448 100644 --- a/charts/redis-cluster/README.md +++ b/charts/redis-cluster/README.md @@ -6,7 +6,7 @@ Redis is a key-value based distributed database, this helm chart is for redis cl helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/ helm install ot-helm/redis-cluster \ - --set redisCluster.clusterSize=3 --namespace + --set redisCluster.clusterSize=3 --namespace --create-namespace ``` Redis setup can be upgraded by using `helm upgrade` command:- @@ -30,36 +30,166 @@ helm delete --namespace ## Parameters -| **Name** | **Default Value** | **Description** | -|------------------------------------|--------------------------------|-----------------------------------------------------------------------------------------------| -| `imagePullSecrets` | [] | List of image pull secrets, in case redis image is getting pull from private registry | -| `redisCluster.clusterSize` | 3 | Size of the redis cluster leader and follower nodes | -| `redisCluster.clusterVersion` | v7 | Major version of Redis setup, values can be v6 or v7 | -| `redisCluster.persistenceEnabled` | true | Persistence should be enabled or not in the Redis cluster setup | -| `redisCluster.secretName` | redis-secret | Name of the existing secret in Kubernetes | -| `redisCluster.secretKey` | password | Name of the existing secret key in Kubernetes | -| `redisCluster.image` | quay.io/opstree/redis | Name of the redis image | -| `redisCluster.tag` | v6.2 | Tag of the redis image | -| `redisCluster.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis image | -| `redisCluster.leaderServiceType` | ClusterIP | Kubernetes service type for Redis Leader | -| `redisCluster.followerServiceType` | ClusterIP | Kubernetes service type for Redis Follower | -| `externalService.enabled` | false | If redis service needs to be exposed using LoadBalancer or NodePort | -| `externalService.annotations` | {} | Kubernetes service related annotations | -| `externalService.serviceType` | NodePort | Kubernetes service type for exposing service, values - ClusterIP, NodePort, and LoadBalancer | -| `externalService.port` | 6379 | Port number on which redis external service should be exposed | -| `serviceMonitor.enabled` | false | Servicemonitor to monitor redis with Prometheus | -| `serviceMonitor.interval` | 30s | Interval at which metrics should be scraped. | -| `serviceMonitor.scrapeTimeout` | 10s | Timeout after which the scrape is ended | -| `serviceMonitor.namespace` | monitoring | Namespace in which Prometheus operator is running | -| `redisExporter.enabled` | true | Redis exporter should be deployed or not | -| `redisExporter.image` | quay.io/opstree/redis-exporter | Name of the redis exporter image | -| `redisExporter.tag` | v6.2 | Tag of the redis exporter image | -| `redisExporter.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis exporter image | -| `redisExporter.env` | [] | Extra environment variables which needs to be added in redis exporter | -| `sidecars` | [] | Sidecar for redis pods | -| `nodeSelector` | {} | NodeSelector for redis statefulset | -| `priorityClassName` | "" | Priority class name for the redis statefulset | -| `storageSpec` | {} | Storage configuration for redis setup | -| `securityContext` | {} | Security Context for redis pods for changing system or kernel level parameters | -| `affinity` | {} | Affinity for node and pods for redis statefulset | -| `tolerations` | [] | Tolerations for redis statefulset | +The following table lists the configurable parameters of the chart and their default values. + +| Parameter | Description | Default | +|--------------------------------------------------------|---------------------------------------------|--------------------------| +| `redisCluster.clusterSize` | Cluster size | `3` | +| `redisCluster.clusterVersion` | Redis cluster version | `v7` | +| `redisCluster.persistenceEnabled` | Persistence switch | `true` | +| `redisCluster.image` | Redis image | `quay.io/opstree/redis` | +| `redisCluster.tag` | Image tag | `v7.0.12` | +| `redisCluster.imagePullPolicy` | Image pull policy | `Always` | +| `redisCluster.redisSecret.secretName` | Redis secret name | `""` | +| `redisCluster.redisSecret.secretKey` | Redis secret key | `""` | +| `redisCluster.resources` | Resource limits and requests for Redis | `{}` | +| `redisCluster.leader.replicas` | Number of leader replicas | `3` | +| `redisCluster.leader.serviceType` | Leader service type | `ClusterIP` | +| `redisCluster.leader.affinity` | Leader pod affinity | `{}` | +| `redisCluster.leader.tolerations` | Leader pod tolerations | `[]` | +| `redisCluster.leader.nodeSelector` | Node selector for leader | `{}` | +| `redisCluster.leader.securityContext` | Leader pod security context | `{}` | +| `redisCluster.leader.terminationGracePeriodSeconds` | Grace period for leader termination | `0` | +| `redisCluster.follower.replicas` | Number of follower replicas | `3` | +| `redisCluster.follower.serviceType` | Follower service type | `ClusterIP` | +| `redisCluster.follower.affinity` | Follower pod affinity | `{}` | +| `redisCluster.follower.tolerations` | Follower pod tolerations | `[]` | +| `redisCluster.follower.nodeSelector` | Node selector for follower | `{}` | +| `redisCluster.follower.securityContext` | Follower pod security context | `{}` | +| `redisCluster.follower.terminationGracePeriodSeconds` | Grace period for follower termination | `0` | +| `labels` | Custom labels | `{}` | +| `annotations` | Custom annotations | `{}` | +| `pdb.enabled` | PDB enablement | `false` | +| `pdb.maxUnavailable` | Maximum unavailable PDBs | `1` | +| `pdb.minAvailable` | Minimum available PDBs | `1` | +| `externalConfig.enabled` | External configuration enablement | `false` | +| `externalConfig.data` | External configuration data | (provided data) | +| `readinessProbe`... | Readiness probe configurations | (provided configurations)| +| `livenessProbe`... | Liveness probe configurations | (provided configurations)| +| `externalService`... | External service configurations | (provided configurations)| +| `serviceMonitor`... | Service monitor configurations | (provided configurations)| +| `redisExporter`... | Redis exporter configurations | (provided configurations)| +| `sidecars` | Additional sidecar configurations | `[]` | +| `storageSpec`... | Storage specifications | (provided configurations)| +| `podSecurityContext.runAsUser` | User ID for the pod | `1000` | +| `podSecurityContext.fsGroup` | File system group ID for the pod | `1000` | +| `priorityClassName` | Name of the priority class | `""` | +| `serviceAccountName` | Name of the service account | `""` (Release Name) | +| `TLS`... | TLS configurations | (provided configurations)| +| `acl`... | ACL configurations | (provided configurations)| +| `initContainer`... | Init container configurations | (provided configurations)| +| `env`... | List of environment variables | `[]` | + +Note: Replace the "..." with specific details or additional rows as required. + +### Detailed Configurations + +#### Readiness Probe + +| Parameter | Description | Default | +|-------------------------------------|--------------------------------------|-------------------------| +| `readinessProbe.enabled` | Enable the readiness probe | `false` | +| `readinessProbe.initialDelaySeconds`| Delay before probe starts | `15` | +| `readinessProbe.timeoutSeconds` | Probe timeout | `5` | +| `readinessProbe.periodSeconds` | Interval between each probe | `10` | +| `readinessProbe.successThreshold` | Threshold to consider the probe successful | `1` | +| `readinessProbe.failureThreshold` | Probe failure threshold | `3` | + +#### Liveness Probe + +| Parameter | Description | Default | +|-------------------------------------|--------------------------------------|-------------------------| +| `livenessProbe.enabled` | Enable the liveness probe | `false` | +| `livenessProbe.initialDelaySeconds` | Delay before probe starts | `15` | +| `livenessProbe.timeoutSeconds` | Probe timeout | `5` | +| `livenessProbe.periodSeconds` | Interval between each probe | `10` | +| `livenessProbe.successThreshold` | Threshold to consider the probe successful | `1` | +| `livenessProbe.failureThreshold` | Probe failure threshold | `3` | + +#### External Service + +| Parameter | Description | Default | +|---------------------------------|-----------------------------------|--------------------------| +| `externalService.enabled` | Enable external service | `false` | +| `externalService.serviceType` | Service type (e.g., LoadBalancer) | `LoadBalancer` | +| `externalService.port` | External service port | `6379` | +| `externalService.annotations` | Service annotations | `{}` | + +#### Service Monitor + +| Parameter | Description | Default | +|---------------------------------|-----------------------------------|--------------------------| +| `serviceMonitor.enabled` | Enable service monitor | `false` | +| `serviceMonitor.interval` | Scrape interval | `30s` | +| `serviceMonitor.scrapeTimeout` | Scrape timeout | `10s` | +| `serviceMonitor.namespace` | Namespace where monitor resides | `monitoring` | + +#### Redis Exporter + +| Parameter | Description | Default | +|--------------------------------------|-------------------------------------|--------------------------------| +| `redisExporter.enabled` | Enable Redis exporter | `true` | +| `redisExporter.image` | Redis exporter image | `quay.io/opstree/redis-exporter:"v1.44.0"` | +| `redisExporter.imagePullPolicy` | Image pull policy | `IfNotPresent` | +| `redisExporter.resources` | Resource limits and requests | `{}` | +| `redisExporter.env` | List of environment variables | `[]` | + +### Sidecars + +| Parameter | Description | Default | +|------------|---------------------------------------|---------| +| `sidecars` | Additional sidecar configurations | `[]` | + +Example: + +```yaml +sidecars: + - name: "sidecar1" + image: "image:1.0" + ... +``` + +#### Storage Specifications + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `storageSpec` |Volume claim template details | (provided configurations) | +| `storageSpec.volumeMount.volume` | Volume name for the volume mount | `[]` | +| `storageSpec.volumeMount.mountPath` | Mount paths | [] | +| `storageSpec.nodeConfVolume` | Node configuration volume | true | +| `storageSpec.nodeConfVolumeClaimTemplate` | Node volume claim template | (provided configurations) | + +#### TLS + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `TLS.enabled` | Enable TLS | `false` | +| `TLS.ca` | CA key | `ca.key` | +| `TLS.cert` | TLS certificate | `tls.crt` | +| `TLS.key` | TLS key | `tls.key` | +| `TLS.secret.secretName` | Secret name | `redis-tls-cert` | + +#### ACL + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `acl.enabled` | Enable ACL | `false` | +| `acl.secret` | Secret for ACL | `""` | + +#### Init Container + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `initContainer.enabled` | Enable init container | `false` | +| `initContainer.image` | Image for init container | `""` | +| `initContainer.imagePullPolicy` | Image pull policy | `IfNotPresent` | +| `initContainer.resources` | Resource configurations | `{}` | +| `initContainer.env` | Environment variables | `[]` | +| `initContainer.command` | Commands for init container | `[]` | +| `initContainer.args` | Arguments for the command | `[]` | + +#### Environment Variables + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `env` | List of environment variables | `[]` | diff --git a/charts/redis-cluster/templates/extra-config.yaml b/charts/redis-cluster/templates/extra-config.yaml index e751f561..4a98d4ae 100644 --- a/charts/redis-cluster/templates/extra-config.yaml +++ b/charts/redis-cluster/templates/extra-config.yaml @@ -1,5 +1,5 @@ {{- if eq .Values.externalConfig.enabled true }} ---- + apiVersion: v1 kind: ConfigMap metadata: @@ -11,6 +11,7 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/version: {{ .Chart.AppVersion }} app.kubernetes.io/component: middleware + app.kubernetes.io/part-of : {{ .Release.Name }} data: redis-additional.conf: | {{ .Values.externalConfig.data | nindent 4 }} diff --git a/charts/redis-cluster/templates/redis-cluster.yaml b/charts/redis-cluster/templates/redis-cluster.yaml index 6bd8e633..5c9e8de2 100644 --- a/charts/redis-cluster/templates/redis-cluster.yaml +++ b/charts/redis-cluster/templates/redis-cluster.yaml @@ -10,6 +10,7 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/version: {{ .Chart.AppVersion }} app.kubernetes.io/component: middleware + app.kubernetes.io/part-of : {{ .Release.Name }} {{- if .Values.labels }} {{- range $labelkey, $labelvalue := .Values.labels }} {{ $labelkey}}: {{ $labelvalue }} @@ -23,16 +24,17 @@ spec: clusterSize: {{ .Values.redisCluster.clusterSize }} persistenceEnabled: {{ .Values.redisCluster.persistenceEnabled }} clusterVersion: {{ .Values.redisCluster.clusterVersion }} +# Redis Leader Specs redisLeader: -{{- if .Values.redisCluster.leader.affinity }} - affinity: -{{ toYaml .Values.redisCluster.leader.affinity | nindent 6 }} -{{- end }} replicas: {{ .Values.redisCluster.leader.replicas }} {{- if eq .Values.externalConfig.enabled true }} redisConfig: additionalRedisConfig: {{ .Release.Name }}-ext-config {{- end }} +{{- if .Values.redisCluster.leader.affinity }} + affinity: +{{ toYaml .Values.redisCluster.leader.affinity | nindent 6 }} +{{- end }} {{- if eq .Values.pdb.enabled true }} pdb: enabled: {{ .Values.pdb.enabled }} @@ -43,16 +45,56 @@ spec: minAvailable: {{ .Values.pdb.minAvailable }} {{- end }} {{- end }} +{{- if eq .Values.readinessProbe.enabled true }} + readinessProbe: + initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.readinessProbe.failureThreshold }} +{{- end }} +{{- if eq .Values.livenessProbe.enabled true }} + livenessProbe: + initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.livenessProbe.failureThreshold }} +{{- end }} +{{- if .Values.redisCluster.leader.tolerations }} + tolerations: + {{- range .Values.redisCluster.leader.tolerations }} + - key: {{ .key | quote }} + operator: {{ .operator | quote }} + value: {{ .value | quote }} + effect: {{ .effect | quote }} + {{- end }} +{{- end }} +{{- if .Values.redisCluster.leader.nodeSelector }} + nodeSelector: + {{- range $key, $value := .Values.redisCluster.leader.nodeSelector }} + {{ $key | quote }}: {{ $value | quote }} + {{- end }} +{{- end }} +{{- if .Values.redisCluster.leader.securityContext }} +{{- if ne (len .Values.redisCluster.leader.securityContext) 0 }} + securityContext: {{- toYaml .Values.redisCluster.leader.securityContext | nindent 2 }} +{{- end }} +{{- end }} +{{- if ne .Values.redisCluster.leader.terminationGracePeriodSeconds 0 }} + terminationGracePeriodSeconds: {{ .Values.redisCluster.leader.terminationGracePeriodSeconds }} +{{- end }} +# Redis Follower Specs redisFollower: -{{- if .Values.redisCluster.follower.affinity }} - affinity: -{{ toYaml .Values.redisCluster.follower.affinity | nindent 6 }} -{{- end }} replicas: {{ .Values.redisCluster.follower.replicas }} {{- if eq .Values.externalConfig.enabled true }} redisConfig: additionalRedisConfig: {{ .Release.Name }}-ext-config {{- end }} +{{- if .Values.redisCluster.follower.affinity }} + affinity: +{{ toYaml .Values.redisCluster.follower.affinity | nindent 6 }} +{{- end }} {{- if eq .Values.pdb.enabled true }} pdb: enabled: {{ .Values.pdb.enabled }} @@ -63,49 +105,144 @@ spec: minAvailable: {{ .Values.pdb.minAvailable }} {{- end }} {{- end }} +{{- if eq .Values.readinessProbe.enabled true }} + readinessProbe: + initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.readinessProbe.failureThreshold }} +{{- end }} +{{- if eq .Values.livenessProbe.enabled true }} + livenessProbe: + initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.livenessProbe.failureThreshold }} +{{- end }} +{{- if .Values.redisCluster.follower.tolerations }} + tolerations: + {{- range .Values.redisCluster.follower.tolerations }} + - key: {{ .key | quote }} + operator: {{ .operator | quote }} + value: {{ .value | quote }} + effect: {{ .effect | quote }} + {{- end }} +{{- end }} +{{- if .Values.redisCluster.follower.nodeSelector }} + nodeSelector: + {{- range $key, $value := .Values.redisCluster.follower.nodeSelector }} + {{ $key | quote }}: {{ $value | quote }} + {{- end }} +{{- end }} +{{- if .Values.redisCluster.follower.securityContext }} +{{- if ne (len .Values.redisCluster.follower.securityContext) 0 }} + securityContext: {{- toYaml .Values.redisCluster.follower.securityContext | nindent 2 }} +{{- end }} +{{- end }} +{{- if ne .Values.redisCluster.follower.terminationGracePeriodSeconds 0 }} + terminationGracePeriodSeconds: {{ .Values.redisCluster.follower.terminationGracePeriodSeconds }} +{{- end }} +# Redis Exporter Specs redisExporter: enabled: {{ .Values.redisExporter.enabled }} - image: "{{ .Values.redisExporter.image }}:{{ .Values.redisExporter.tag }}" + image: "{{ .Values.redisExporter.image }}" imagePullPolicy: "{{ .Values.redisExporter.imagePullPolicy }}" resources: {{ toYaml .Values.redisExporter.resources | indent 6 }} + {{- with .Values.redisExporter.env }} + env: +{{ toYaml . | indent 6 }} + {{- end }} +# Kubernetes Config Specs kubernetesConfig: image: "{{ .Values.redisCluster.image }}:{{ .Values.redisCluster.tag }}" imagePullPolicy: "{{ .Values.redisCluster.imagePullPolicy }}" resources: {{ toYaml .Values.redisCluster.resources | indent 6 }} -{{- if .Values.redisCluster.redisSecret }} +{{- with .Values.redisCluster.redisSecret }} +{{- if and .secretName .secretKey }} redisSecret: - name: "{{ .Values.redisCluster.redisSecret.secretName }}" - key: "{{ .Values.redisCluster.redisSecret.secretKey }}" -{{- end }} -{{- if .Values.storageSpec }} - storage: -{{ toYaml .Values.storageSpec | indent 4 }} -{{- end }} -{{- if .Values.priorityClassName }} - priorityClassName: "{{ .Values.priorityClassName }}" -{{- end }} -{{- if .Values.nodeSelector }} - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 4 }} + name: "{{ .secretName | trim }}" + key: "{{ .secretKey | trim }}" +{{- end }} +{{- end }} +# Storage Specs +{{- with .Values.storageSpec }} +storage: + {{- if .volumeClaimTemplate }} + volumeClaimTemplate: +{{ toYaml .volumeClaimTemplate | indent 4 }} + {{- end }} + {{- if .volumeMount }} + volumeMount: +{{ toYaml .volumeMount | indent 4 }} + {{- end }} + {{- if .nodeConfVolume }} + nodeConfVolume: {{ .nodeConfVolume }} + {{- end }} + {{- if .nodeConfVolumeClaimTemplate }} + nodeConfVolumeClaimTemplate: +{{ toYaml .nodeConfVolumeClaimTemplate | indent 4 }} + {{- end }} {{- end }} {{- if .Values.podSecurityContext }} podSecurityContext: {{ toYaml .Values.podSecurityContext | indent 4 }} {{- end }} -{{- if .Values.tolerations }} - tolerations: -{{ toYaml .Values.tolerations | indent 4 }} +{{- if and .Values.priorityClassName (ne .Values.priorityClassName "") }} + priorityClassName: "{{ .Values.priorityClassName }}" {{- end }} -{{- if .Values.TLS }} - TLS: -{{ toYaml .Values.TLS | indent 4 }} -{{- end}} +# TLS Specs and acl specs +{{- if and .Values.TLS.enabled .Values.TLS.ca .Values.TLS.cert .Values.TLS.key .Values.TLS.secret.secretName }} +TLS: + ca: {{ .Values.TLS.ca | quote }} + cert: {{ .Values.TLS.cert | quote }} + key: {{ .Values.TLS.key | quote }} + secret: + secretName: {{ .Values.TLS.secret.secretName | quote }} +{{- end }} +{{- if and .Values.acl.enabled .Values.acl.secret }} +acl: + secret: {{ .Values.acl.secret | quote }} +{{- end }} +# Init Container Specs +{{- with .Values.initContainer }} +{{- if .enabled }} +initContainer: + image: {{ .image | quote }} + imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} + {{- with .resources }} + resources: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .env }} + env: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .command }} + command: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .args }} + args: +{{ toYaml . | indent 4 }} + {{- end }} +{{- end }} +{{- end }} +# Sidecar Specs {{- if .Values.sidecars }} sidecars: {{ toYaml .Values.sidecars | indent 4 }} {{- end }} -{{- if .Values.serviceAccountName }} - serviceAccountName: "{{ .Values.serviceAccountName }}" + + serviceAccountName: "{{ .Release.Name }}" + +# Additional Env Variables +{{- if .Values.env }} +{{- if gt (len .Values.env) 0 }} + env: + {{ toYaml .Values.env | indent 2 }} +{{- end }} {{- end }} diff --git a/charts/redis-cluster/values.yaml b/charts/redis-cluster/values.yaml index dd4d5b77..182cd1ef 100644 --- a/charts/redis-cluster/values.yaml +++ b/charts/redis-cluster/values.yaml @@ -4,11 +4,18 @@ redisCluster: clusterVersion: v7 persistenceEnabled: true image: quay.io/opstree/redis - tag: v7.0.5 - imagePullPolicy: IfNotPresent - # redisSecret: - # secretName: redis-secret - # secretKey: password + tag: v7.0.12 + imagePullPolicy: Always + redisSecret: + secretName: "" + secretKey: "" + resources: {} + # requests: + # cpu: 100m + # memory: 128Mi + # limits: + # cpu: 100m + # memory: 128Mi leader: replicas: 3 serviceType: ClusterIP @@ -21,6 +28,15 @@ redisCluster: # operator: In # values: # - ssd + tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + nodeSelector: {} + # memory: medium + securityContext : {} + terminationGracePeriodSeconds: 0 follower: replicas: 3 serviceType: ClusterIP @@ -33,21 +49,27 @@ redisCluster: # operator: In # values: # - ssd - resources: {} - # requests: - # cpu: 100m - # memory: 128Mi - # limits: - # cpu: 100m - # memory: 128Mi + tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + nodeSelector: {} + # memory: medium + securityContext : {} + terminationGracePeriodSeconds: 0 + +labels: {} + # app: redis-cluster + # release: redis-cluster -# labels: -# foo: bar -# test: echo +annotations: {} + # iam.amazonaws.com/role: role-arn pdb: enabled: false maxUnavailable: 1 + minAvailable: 1 externalConfig: enabled: false @@ -56,6 +78,22 @@ externalConfig: slowlog-max-len 158 stream-node-max-bytes 2048 +readinessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + +livenessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + externalService: enabled: false # annotations: @@ -71,8 +109,7 @@ serviceMonitor: redisExporter: enabled: true - image: quay.io/opstree/redis-exporter - tag: "v1.44.0" + image: quay.io/opstree/redis-exporter:"v1.44.0" imagePullPolicy: IfNotPresent resources: {} # requests: @@ -81,6 +118,7 @@ redisExporter: # limits: # cpu: 100m # memory: 128Mi + env : [] sidecars: [] # - name: "sidecar1" @@ -97,11 +135,6 @@ sidecars: [] # - name: VAR_NAME # value: "value1" -# priorityClassName: "-" - -nodeSelector: {} - # memory: medium - storageSpec: volumeClaimTemplate: spec: @@ -110,6 +143,10 @@ storageSpec: resources: requests: storage: 1Gi + volumeMount : + volume : [] + mountPath : [] + nodeConfVolume: true nodeConfVolumeClaimTemplate: spec: accessModes: ["ReadWriteOnce"] @@ -122,21 +159,39 @@ podSecurityContext: runAsUser: 1000 fsGroup: 1000 -affinity: {} - # nodeAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # nodeSelectorTerms: - # - matchExpressions: - # - key: disktype - # operator: In - # values: - # - ssd +priorityClassName: "" # serviceAccountName: redis-sa -# TLS: -# ca: ca.key -# cert: tls.crt -# key: tls.key -# secret: -# secretName: redis-tls-cert +TLS: + enabled: false + ca: ca.key + cert: tls.crt + key: tls.key + secret: + secretName: redis-tls-cert + +acl : + enabled: false + secret : "" + +initContainer: + enabled: false + image: "" + imagePullPolicy: "IfNotPresent" + resources: {} + # requests: + # memory: "64Mi" + # cpu: "250m" + # limits: + # memory: "128Mi" + # cpu: "500m" + env: [] + command: [] + args: [] + +serviceAccountName : "" # Default is Release Name + +env : [] + # - name: VAR_NAME + # value: "value1" \ No newline at end of file diff --git a/charts/redis-operator/Chart.yaml b/charts/redis-operator/Chart.yaml index 351ea278..3b28a778 100644 --- a/charts/redis-operator/Chart.yaml +++ b/charts/redis-operator/Chart.yaml @@ -1,6 +1,6 @@ --- apiVersion: v2 -version: 0.15.4 +version: 0.15.5 appVersion: "0.15.1" description: Provides easy redis setup definitions for Kubernetes services, and deployment. engine: gotpl diff --git a/charts/redis-replication/Chart.yaml b/charts/redis-replication/Chart.yaml index 13510e4b..babab424 100644 --- a/charts/redis-replication/Chart.yaml +++ b/charts/redis-replication/Chart.yaml @@ -1,9 +1,7 @@ apiVersion: v2 name: redis-replication description: Provides easy redis setup definitions for Kubernetes services, and deployment. - type: application - engine: gotpl maintainers: - name: iamabhishek-dubey @@ -11,9 +9,8 @@ maintainers: - name: shubham-cmyk sources: - https://github.com/ot-container-kit/redis-operator -version: 0.15.3 - -appVersion: "0.15.0" +version: 0.15.5 +appVersion: "0.15.1" home: https://github.com/ot-container-kit/redis-operator keywords: - operator diff --git a/charts/redis-replication/templates/redis-replication.yaml b/charts/redis-replication/templates/redis-replication.yaml index 4a2dda7a..278ee245 100644 --- a/charts/redis-replication/templates/redis-replication.yaml +++ b/charts/redis-replication/templates/redis-replication.yaml @@ -10,74 +10,159 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/version: {{ .Chart.AppVersion }} app.kubernetes.io/component: middleware + app.kubernetes.io/part-of : {{ .Release.Name }} {{- if .Values.labels }} {{- range $labelkey, $labelvalue := .Values.labels }} {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} +{{- with .Values.annotations }} + annotations: +{{- toYaml . | nindent 6 }} +{{- end }} spec: clusterSize: {{ .Values.redisReplication.clusterSize }} -{{- if eq .Values.externalConfig.enabled true }} - redisConfig: - additionalRedisConfig: {{ .Release.Name }}-ext-config + kubernetesConfig: + image: "{{ .Values.redisReplication.image }}:{{ .Values.redisReplication.tag }}" + imagePullPolicy: "{{ .Values.redisReplication.imagePullPolicy }}" + resources: +{{ toYaml .Values.redisReplication.resources | indent 6 }} +{{- with .Values.redisReplication.redisSecret }} +{{- if and .secretName .secretKey }} + redisSecret: + name: "{{ .secretName | trim }}" + key: "{{ .secretKey | trim }}" +{{- end }} {{- end }} +# Redis Exporter Specs redisExporter: enabled: {{ .Values.redisExporter.enabled }} - image: "{{ .Values.redisExporter.image }}:{{ .Values.redisExporter.tag }}" + image: "{{ .Values.redisExporter.image }}" imagePullPolicy: "{{ .Values.redisExporter.imagePullPolicy }}" resources: {{ toYaml .Values.redisExporter.resources | indent 6 }} -{{- if .Values.redisExporter.env }} + {{- with .Values.redisExporter.env }} env: -{{ toYaml .Values.redisExporter.env | indent 4 }} +{{ toYaml . | indent 6 }} + {{- end }} +{{- if eq .Values.externalConfig.enabled true }} +# Redis Config + redisConfig: + additionalRedisConfig: {{ .Release.Name }}-ext-config {{- end }} - kubernetesConfig: - image: "{{ .Values.redisReplication.image }}:{{ .Values.redisReplication.tag }}" - imagePullPolicy: "{{ .Values.redisReplication.imagePullPolicy }}" - resources: -{{ toYaml .Values.redisReplication.resources | indent 6 }} -{{- if .Values.redisReplication.redisSecret }} - redisSecret: - name: "{{ .Values.redisReplication.redisSecret.secretName }}" - key: "{{ .Values.redisReplication.redisSecret.secretKey }}" +# Storage Specs +{{- with .Values.storageSpec }} +storage: + {{- if .volumeClaimTemplate }} + volumeClaimTemplate: +{{ toYaml .volumeClaimTemplate | indent 4 }} + {{- end }} + {{- if .volumeMount }} + volumeMount: +{{ toYaml .volumeMount | indent 4 }} + {{- end }} +{{- end }} +# Node Selector +{{- if .Values.nodeSelector }} + nodeSelector: + {{- range $key, $value := .Values.nodeSelector }} + {{ $key | quote }}: {{ $value | quote }} + {{- end }} {{- end }} -{{- if .Values.imagePullSecrets }} - imagePullSecrets: -{{- range $imageSecrets := .Values.imagePullSecrets }} - - name: {{ $imageSecrets.name }} +# Pod Security Context and Security Context +{{- if .Values.podSecurityContext }} + podSecurityContext: +{{ toYaml .Values.podSecurityContext | indent 4 }} {{- end }} +{{- if .Values.securityContext }} +{{- if ne (len .Values.securityContext) 0 }} + securityContext: {{- toYaml .Values.securityContext | nindent 2 }} {{- end }} -{{- if .Values.storageSpec }} - storage: -{{ toYaml .Values.storageSpec | indent 4 }} {{- end }} -{{- if .Values.priorityClassName }} +{{- if and .Values.priorityClassName (ne .Values.priorityClassName "") }} priorityClassName: "{{ .Values.priorityClassName }}" {{- end }} -{{- if .Values.nodeSelector }} - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 4 }} -{{- end }} +# Affinity and Tolerations {{- if .Values.affinity }} affinity: {{ toYaml .Values.affinity | indent 4 }} {{- end }} -{{- if .Values.podSecurityContext }} - podSecurityContext: -{{ toYaml .Values.podSecurityContext | indent 4 }} -{{- end }} {{- if .Values.tolerations }} tolerations: -{{ toYaml .Values.tolerations | indent 4 }} + {{- range .Values.tolerations }} + - key: {{ .key | quote }} + operator: {{ .operator | quote }} + value: {{ .value | quote }} + effect: {{ .effect | quote }} + {{- end }} +{{- end }} +{{- if and .Values.TLS.enabled .Values.TLS.ca .Values.TLS.cert .Values.TLS.key .Values.TLS.secret.secretName }} +TLS: + ca: {{ .Values.TLS.ca | quote }} + cert: {{ .Values.TLS.cert | quote }} + key: {{ .Values.TLS.key | quote }} + secret: + secretName: {{ .Values.TLS.secret.secretName | quote }} +{{- end }} +{{- if and .Values.acl.enabled .Values.acl.secret }} +acl: + secret: {{ .Values.acl.secret | quote }} +{{- end }} +{{- if eq .Values.readinessProbe.enabled true }} + readinessProbe: + initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.readinessProbe.failureThreshold }} +{{- end }} +{{- if eq .Values.livenessProbe.enabled true }} + livenessProbe: + initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.livenessProbe.failureThreshold }} {{- end }} -{{- if .Values.TLS }} - TLS: -{{ toYaml .Values.TLS | indent 4 }} -{{- end}} +# Init Container Specs and Sidecar Specs +{{- with .Values.initContainer }} +{{- if .enabled }} +# Init Container Specs +initContainer: + image: {{ .image | quote }} + imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} + {{- with .resources }} + resources: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .env }} + env: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .command }} + command: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .args }} + args: +{{ toYaml . | indent 4 }} + {{- end }} +{{- end }} +{{- end }} +# Sidecar Specs {{- if .Values.sidecars }} sidecars: {{ toYaml .Values.sidecars | indent 4 }} {{- end }} -{{- if .Values.serviceAccountName }} - serviceAccountName: "{{ .Values.serviceAccountName }}" -{{- end }} \ No newline at end of file + serviceAccountName: "{{ .Release.Name }}" +{{- if ne .Values.redisCluster.leader.terminationGracePeriodSeconds 0 }} + terminationGracePeriodSeconds: {{ .Values.redisCluster.leader.terminationGracePeriodSeconds }} +{{- end }} +# Additional Env Variables +{{- if .Values.env }} +{{- if gt (len .Values.env) 0 }} + env: + {{ toYaml .Values.env | indent 2 }} +{{- end }} +{{- end }} +--- \ No newline at end of file diff --git a/charts/redis-replication/values.yaml b/charts/redis-replication/values.yaml index 54bb089c..af2d2b3e 100644 --- a/charts/redis-replication/values.yaml +++ b/charts/redis-replication/values.yaml @@ -2,11 +2,11 @@ redisReplication: clusterSize: 3 image: quay.io/opstree/redis - tag: v7.0.5 - imagePullPolicy: IfNotPresent - # redisSecret: - # secretName: redis-secret - # secretKey: password + tag: v7.0.12 + imagePullPolicy: Always + redisSecret: + secretName: "" + secretKey: "" serviceType: ClusterIP resources: {} # requests: @@ -16,9 +16,13 @@ redisReplication: # cpu: 100m # memory: 128Mi -# labels: -# foo: bar -# test: echo +labels: {} + # foo: bar + # test: echo + +annotations: {} + # foo: bar + # test: echo externalConfig: enabled: false @@ -41,9 +45,8 @@ serviceMonitor: namespace: monitoring redisExporter: - enabled: false - image: quay.io/opstree/redis-exporter - tag: "v1.44.0" + enabled: true + image: quay.io/opstree/redis-exporter:"v1.44.0" imagePullPolicy: IfNotPresent resources: {} # requests: @@ -52,19 +55,22 @@ redisExporter: # limits: # cpu: 100m # memory: 128Mi - # env: - # - name: REDIS_EXPORTER_INCL_SYSTEM_METRICS - # value: "true" - # - name: UI_PROPERTIES_FILE_NAME - # valueFrom: - # configMapKeyRef: - # name: game-demo - # key: ui_properties_file_name - # - name: SECRET_USERNAME - # valueFrom: - # secretKeyRef: - # name: mysecret - # key: username + env : [] + +initContainer: + enabled: false + image: "" + imagePullPolicy: "IfNotPresent" + resources: {} + # requests: + # memory: "64Mi" + # cpu: "250m" + # limits: + # memory: "128Mi" + # cpu: "500m" + env: [] + command: [] + args: [] sidecars: [] # - name: "sidecar1" @@ -81,7 +87,7 @@ sidecars: [] # - name: VAR_NAME # value: "value1" -# priorityClassName: "-" +priorityClassName: "" # imagePullSecrets: # - name: regcred @@ -97,21 +103,16 @@ storageSpec: resources: requests: storage: 1Gi - # volumemount: - # volume: - # - name: example-config - # configMap: - # name: example-configmap - # mount: - # - mountPath: /config - # name: example-config - - # selector: {} + volumeMount : + volume : [] + mountPath : [] podSecurityContext: runAsUser: 1000 fsGroup: 1000 +securityContext: {} + affinity: {} # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: @@ -122,11 +123,44 @@ affinity: {} # values: # - ssd -# serviceAccountName: redis-sa +tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + +TLS: + enabled: false + ca: ca.key + cert: tls.crt + key: tls.key + secret: + secretName: redis-tls-cert + +acl : + enabled: false + secret : "" + + +readinessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + +livenessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + + +terminationGracePeriodSeconds: 0 -# TLS: -# ca: ca.key -# cert: tls.crt -# key: tls.key -# secret: -# secretName: redis-tls-cert +env : [] + # - name: VAR_NAME + # value: "value1" diff --git a/charts/redis-sentinel/Chart.yaml b/charts/redis-sentinel/Chart.yaml index 0e02bec6..d12d373d 100644 --- a/charts/redis-sentinel/Chart.yaml +++ b/charts/redis-sentinel/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 name: redis-sentinel description: Provides easy redis setup definitions for Kubernetes services, and deployment. -version: 0.15.3 -appVersion: "0.15.0" +version: 0.15.5 +appVersion: "0.15.1" home: https://github.com/ot-container-kit/redis-operator sources: - https://github.com/ot-container-kit/redis-operator diff --git a/charts/redis-sentinel/templates/redis-sentinel.yaml b/charts/redis-sentinel/templates/redis-sentinel.yaml index 4ac3f041..1118dd75 100644 --- a/charts/redis-sentinel/templates/redis-sentinel.yaml +++ b/charts/redis-sentinel/templates/redis-sentinel.yaml @@ -10,11 +10,16 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/version: {{ .Chart.AppVersion }} app.kubernetes.io/component: middleware + app.kubernetes.io/part-of : {{ .Release.Name }} {{- if .Values.labels }} {{- range $labelkey, $labelvalue := .Values.labels }} {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} +{{- with .Values.annotations }} + annotations: +{{- toYaml . | nindent 6 }} +{{- end }} spec: clusterSize: {{ .Values.redisSentinel.clusterSize }} # Sentinel Config @@ -29,51 +34,142 @@ spec: {{- if eq .Values.externalConfig.enabled true }} additionalSentinelConfig: {{ .Release.Name }}-ext-config {{- end }} -# Kubernetes Config kubernetesConfig: - image: "{{ .Values.redisSentinel.image }}:{{ .Values.redisSentinel.tag }}" - imagePullPolicy: "{{ .Values.redisSentinel.imagePullPolicy }}" + image: "{{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }}" + imagePullPolicy: "{{ .Values.redisStandalone.imagePullPolicy }}" resources: -{{ toYaml .Values.redisSentinel.resources | indent 6 }} -{{- if .Values.redisSentinel.redisSecret }} +{{ toYaml .Values.redisStandalone.resources | indent 6 }} +{{- with .Values.redisStandalone.redisSecret }} +{{- if and .secretName .secretKey }} redisSecret: - name: "{{ .Values.redisSentinel.redisSecret.secretName }}" - key: "{{ .Values.redisSentinel.redisSecret.secretKey }}" -{{- end }} -{{- if .Values.imagePullSecrets }} - imagePullSecrets: -{{- range $imageSecrets := .Values.imagePullSecrets }} - - name: {{ $imageSecrets.name }} + name: "{{ .secretName | trim }}" + key: "{{ .secretKey | trim }}" {{- end }} {{- end }} - -{{- if .Values.priorityClassName }} - priorityClassName: "{{ .Values.priorityClassName }}" +# Redis Exporter Specs + redisExporter: + enabled: {{ .Values.redisExporter.enabled }} + image: "{{ .Values.redisExporter.image }}" + imagePullPolicy: "{{ .Values.redisExporter.imagePullPolicy }}" + resources: +{{ toYaml .Values.redisExporter.resources | indent 6 }} + {{- with .Values.redisExporter.env }} + env: +{{ toYaml . | indent 6 }} + {{- end }} +# Storage Specs +{{- with .Values.storageSpec }} +storage: + {{- if .volumeClaimTemplate }} + volumeClaimTemplate: +{{ toYaml .volumeClaimTemplate | indent 4 }} + {{- end }} + {{- if .volumeMount }} + volumeMount: +{{ toYaml .volumeMount | indent 4 }} + {{- end }} {{- end }} +# Node Selector {{- if .Values.nodeSelector }} nodeSelector: -{{ toYaml .Values.nodeSelector | indent 4 }} -{{- end }} -{{- if .Values.affinity }} - affinity: -{{ toYaml .Values.affinity | indent 4 }} + {{- range $key, $value := .Values.nodeSelector }} + {{ $key | quote }}: {{ $value | quote }} + {{- end }} {{- end }} +# Pod Security Context and Security Context {{- if .Values.podSecurityContext }} podSecurityContext: {{ toYaml .Values.podSecurityContext | indent 4 }} {{- end }} +{{- if .Values.securityContext }} +{{- if ne (len .Values.securityContext) 0 }} + securityContext: {{- toYaml .Values.securityContext | nindent 2 }} +{{- end }} +{{- end }} +{{- if and .Values.priorityClassName (ne .Values.priorityClassName "") }} + priorityClassName: "{{ .Values.priorityClassName }}" +{{- end }} +# Affinity and Tolerations +{{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 4 }} +{{- end }} {{- if .Values.tolerations }} tolerations: -{{ toYaml .Values.tolerations | indent 4 }} + {{- range .Values.tolerations }} + - key: {{ .key | quote }} + operator: {{ .operator | quote }} + value: {{ .value | quote }} + effect: {{ .effect | quote }} + {{- end }} +{{- end }} +# TLS Specs and acl specs +{{- if and .Values.TLS.enabled .Values.TLS.ca .Values.TLS.cert .Values.TLS.key .Values.TLS.secret.secretName }} +TLS: + ca: {{ .Values.TLS.ca | quote }} + cert: {{ .Values.TLS.cert | quote }} + key: {{ .Values.TLS.key | quote }} + secret: + secretName: {{ .Values.TLS.secret.secretName | quote }} +{{- end }} +{{- if and .Values.acl.enabled .Values.acl.secret }} +acl: + secret: {{ .Values.acl.secret | quote }} {{- end }} -{{- if .Values.TLS }} - TLS: -{{ toYaml .Values.TLS | indent 4 }} -{{- end}} +{{- if eq .Values.readinessProbe.enabled true }} + readinessProbe: + initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.readinessProbe.failureThreshold }} +{{- end }} +{{- if eq .Values.livenessProbe.enabled true }} + livenessProbe: + initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.livenessProbe.failureThreshold }} +{{- end }} +# Init Container Specs and Sidecar Specs +{{- with .Values.initContainer }} +{{- if .enabled }} +# Init Container Specs +initContainer: + image: {{ .image | quote }} + imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} + {{- with .resources }} + resources: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .env }} + env: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .command }} + command: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .args }} + args: +{{ toYaml . | indent 4 }} + {{- end }} +{{- end }} +{{- end }} +# Sidecar Specs {{- if .Values.sidecars }} sidecars: {{ toYaml .Values.sidecars | indent 4 }} {{- end }} -{{- if .Values.serviceAccountName }} - serviceAccountName: "{{ .Values.serviceAccountName }}" + serviceAccountName: "{{ .Release.Name }}" +{{- if ne .Values.redisCluster.leader.terminationGracePeriodSeconds 0 }} + terminationGracePeriodSeconds: {{ .Values.redisCluster.leader.terminationGracePeriodSeconds }} +{{- end }} +# Additional Env Variables +{{- if .Values.env }} +{{- if gt (len .Values.env) 0 }} + env: + {{ toYaml .Values.env | indent 2 }} {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/redis-sentinel/values.yaml b/charts/redis-sentinel/values.yaml index 8b10a1c5..d978572b 100644 --- a/charts/redis-sentinel/values.yaml +++ b/charts/redis-sentinel/values.yaml @@ -1,12 +1,12 @@ --- redisSentinel: clusterSize: 3 - image: quay.io/opstree/redis-sentinel - tag: v7.0.7 - imagePullPolicy: IfNotPresent - # redisSecret: - # secretName: redis-secret - # secretKey: password + image: quay.io/opstree/redis + tag: v7.0.12 + imagePullPolicy: Always + redisSecret: + secretName: "" + secretKey: "" serviceType: ClusterIP resources: {} # requests: @@ -16,9 +16,13 @@ redisSentinel: # cpu: 100m # memory: 128Mi -# labels: -# foo: bar -# test: echo +labels: {} + # foo: bar + # test: echo + +annotations: {} + # foo: bar + # test: echo redisSentinelConfig: redisReplicationName: "redis-replication" @@ -41,7 +45,7 @@ externalService: # annotations: # foo: bar serviceType: NodePort - port: 26379 + port: 6379 serviceMonitor: enabled: false @@ -49,31 +53,33 @@ serviceMonitor: scrapeTimeout: 10s namespace: monitoring -# redisExporter: -# enabled: false -# image: quay.io/opstree/redis-exporter -# tag: "v1.44.0" -# imagePullPolicy: IfNotPresent -# resources: {} +redisExporter: + enabled: true + image: quay.io/opstree/redis-exporter:"v1.44.0" + imagePullPolicy: IfNotPresent + resources: {} # requests: # cpu: 100m # memory: 128Mi # limits: # cpu: 100m # memory: 128Mi - # env: - # - name: REDIS_EXPORTER_INCL_SYSTEM_METRICS - # value: "true" - # - name: UI_PROPERTIES_FILE_NAME - # valueFrom: - # configMapKeyRef: - # name: game-demo - # key: ui_properties_file_name - # - name: SECRET_USERNAME - # valueFrom: - # secretKeyRef: - # name: mysecret - # key: username + env : [] + +initContainer: + enabled: false + image: "" + imagePullPolicy: "IfNotPresent" + resources: {} + # requests: + # memory: "64Mi" + # cpu: "250m" + # limits: + # memory: "128Mi" + # cpu: "500m" + env: [] + command: [] + args: [] sidecars: [] # - name: "sidecar1" @@ -90,7 +96,7 @@ sidecars: [] # - name: VAR_NAME # value: "value1" -# priorityClassName: "-" +priorityClassName: "" # imagePullSecrets: # - name: regcred @@ -106,12 +112,16 @@ storageSpec: resources: requests: storage: 1Gi - # selector: {} + volumeMount : + volume : [] + mountPath : [] podSecurityContext: runAsUser: 1000 fsGroup: 1000 +securityContext: {} + affinity: {} # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: @@ -122,11 +132,44 @@ affinity: {} # values: # - ssd -# serviceAccountName: redis-sa +tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + +TLS: + enabled: false + ca: ca.key + cert: tls.crt + key: tls.key + secret: + secretName: redis-tls-cert + +acl : + enabled: false + secret : "" + + +readinessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + +livenessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + + +terminationGracePeriodSeconds: 0 -# TLS: -# ca: ca.key -# cert: tls.crt -# key: tls.key -# secret: -# secretName: redis-tls-cert +env : [] + # - name: VAR_NAME + # value: "value1" \ No newline at end of file diff --git a/charts/redis/Chart.yaml b/charts/redis/Chart.yaml index 83e414f4..dc9dcbcc 100644 --- a/charts/redis/Chart.yaml +++ b/charts/redis/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: redis description: Provides easy redis setup definitions for Kubernetes services, and deployment. -version: 0.15.3 -appVersion: "0.15.0" +version: 0.15.5 +appVersion: "0.15.1" home: https://github.com/ot-container-kit/redis-operator sources: - https://github.com/ot-container-kit/redis-operator diff --git a/charts/redis/README.md b/charts/redis/README.md index 45485e8f..6e2d8069 100644 --- a/charts/redis/README.md +++ b/charts/redis/README.md @@ -27,33 +27,146 @@ helm delete --namespace ## Parameters -| **Name** | **Value** | **Description** | -|-----------------------------------|--------------------------------|-----------------------------------------------------------------------------------------------| -| `imagePullSecrets` | [] | List of image pull secrets, in case redis image is getting pull from private registry | -| `redisStandalone.secretName` | redis-secret | Name of the existing secret in Kubernetes | -| `redisStandalone.secretKey` | password | Name of the existing secret key in Kubernetes | -| `redisStandalone.image` | quay.io/opstree/redis | Name of the redis image | -| `redisStandalone.tag` | v6.2 | Tag of the redis image | -| `redisStandalone.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis image | -| `redisStandalone.serviceType` | ClusterIP | Kubernetes service type for Redis | -| `redisStandalone.resources` | {} | Request and limits for redis statefulset | -| `externalService.enabled` | false | If redis service needs to be exposed using LoadBalancer or NodePort | -| `externalService.annotations` | {} | Kubernetes service related annotations | -| `externalService.serviceType` | NodePort | Kubernetes service type for exposing service, values - ClusterIP, NodePort, and LoadBalancer | -| `externalService.port` | 6379 | Port number on which redis external service should be exposed | -| `serviceMonitor.enabled` | false | Servicemonitor to monitor redis with Prometheus | -| `serviceMonitor.interval` | 30s | Interval at which metrics should be scraped. | -| `serviceMonitor.scrapeTimeout` | 10s | Timeout after which the scrape is ended | -| `serviceMonitor.namespace` | monitoring | Namespace in which Prometheus operator is running | -| `redisExporter.enabled` | true | Redis exporter should be deployed or not | -| `redisExporter.image` | quay.io/opstree/redis-exporter | Name of the redis exporter image | -| `redisExporter.tag` | v6.2 | Tag of the redis exporter image | -| `redisExporter.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis exporter image | -| `redisExporter.env` | [] | Extra environment variables which needs to be added in redis exporter | -| `sidecars` | [] | Sidecar for redis pods | -| `nodeSelector` | {} | NodeSelector for redis statefulset | -| `priorityClassName` | "" | Priority class name for the redis statefulset | -| `storageSpec` | {} | Storage configuration for redis setup | -| `securityContext` | {} | Security Context for redis pods for changing system or kernel level parameters | -| `affinity` | {} | Affinity for node and pod for redis statefulset | -| `tolerations` | [] | Tolerations for redis statefulset | +The following table lists the configurable parameters of the chart and their default values. + +| Parameter | Description | Default | +|--------------------------------------------------------|---------------------------------------------|--------------------------| +| `redisStandalone.persistenceEnabled` | Persistence switch | `true` | +| `redisStandalone.image` | Redis image | `quay.io/opstree/redis` | +| `redisStandalone.tag` | Image tag | `v7.0.12` | +| `redisStandalone.imagePullPolicy` | Image pull policy | `Always` | +| `redisStandalone.redisSecret.secretName` | Redis secret name | `""` | +| `redisStandalone.redisSecret.secretKey` | Redis secret key | `""` | +| `redisStandalone.resources` | Resource limits and requests for Redis | `{}` | +| `labels` | Custom labels | `{}` | +| `annotations` | Custom annotations | `{}` | +| `externalConfig.enabled` | External configuration enablement | `false` | +| `externalConfig.data` | External configuration data | (provided data) | +| `readinessProbe`... | Readiness probe configurations | (provided configurations)| +| `livenessProbe`... | Liveness probe configurations | (provided configurations)| +| `redisExporter`... | Redis exporter configurations | (provided configurations)| +| `sidecars` | Additional sidecar configurations | `[]` | +| `storageSpec`... | Storage specifications | (provided configurations)| +| `podSecurityContext.runAsUser` | User ID for the pod | `1000` | +| `podSecurityContext.fsGroup` | File system group ID for the pod | `1000` | +| `priorityClassName` | Name of the priority class | `""` | +| `serviceAccountName` | Name of the service account | `""` (Release Name) | +| `TLS`... | TLS configurations | (provided configurations)| +| `acl`... | ACL configurations | (provided configurations)| +| `initContainer`... | Init container configurations | (provided configurations)| +| `env`... | List of environment variables | `[]` | + +Note: Replace the "..." with specific details or additional rows as required. + +### Detailed Configurations + +#### Readiness Probe + +| Parameter | Description | Default | +|-------------------------------------|--------------------------------------|-------------------------| +| `readinessProbe.enabled` | Enable the readiness probe | `false` | +| `readinessProbe.initialDelaySeconds`| Delay before probe starts | `15` | +| `readinessProbe.timeoutSeconds` | Probe timeout | `5` | +| `readinessProbe.periodSeconds` | Interval between each probe | `10` | +| `readinessProbe.successThreshold` | Threshold to consider the probe successful | `1` | +| `readinessProbe.failureThreshold` | Probe failure threshold | `3` | + +#### Liveness Probe + +| Parameter | Description | Default | +|-------------------------------------|--------------------------------------|-------------------------| +| `livenessProbe.enabled` | Enable the liveness probe | `false` | +| `livenessProbe.initialDelaySeconds` | Delay before probe starts | `15` | +| `livenessProbe.timeoutSeconds` | Probe timeout | `5` | +| `livenessProbe.periodSeconds` | Interval between each probe | `10` | +| `livenessProbe.successThreshold` | Threshold to consider the probe successful | `1` | +| `livenessProbe.failureThreshold` | Probe failure threshold | `3` | + +#### External Service + +| Parameter | Description | Default | +|---------------------------------|-----------------------------------|--------------------------| +| `externalService.enabled` | Enable external service | `false` | +| `externalService.serviceType` | Service type (e.g., LoadBalancer) | `LoadBalancer` | +| `externalService.port` | External service port | `6379` | +| `externalService.annotations` | Service annotations | `{}` | + +#### Service Monitor + +| Parameter | Description | Default | +|---------------------------------|-----------------------------------|--------------------------| +| `serviceMonitor.enabled` | Enable service monitor | `false` | +| `serviceMonitor.interval` | Scrape interval | `30s` | +| `serviceMonitor.scrapeTimeout` | Scrape timeout | `10s` | +| `serviceMonitor.namespace` | Namespace where monitor resides | `monitoring` | + +#### Redis Exporter + +| Parameter | Description | Default | +|--------------------------------------|-------------------------------------|--------------------------------| +| `redisExporter.enabled` | Enable Redis exporter | `true` | +| `redisExporter.image` | Redis exporter image | `quay.io/opstree/redis-exporter:"v1.44.0"` | +| `redisExporter.imagePullPolicy` | Image pull policy | `IfNotPresent` | +| `redisExporter.resources` | Resource limits and requests | `{}` | +| `redisExporter.env` | List of environment variables | `[]` | + +### Sidecars + +| Parameter | Description | Default | +|------------|---------------------------------------|---------| +| `sidecars` | Additional sidecar configurations | `[]` | + +Example: + +```yaml +sidecars: + - name: "sidecar1" + image: "image:1.0" + ... +``` + +#### Storage Specifications + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `storageSpec` |Volume claim template details | (provided configurations) | +| `storageSpec.volumeMount.volume` | Volume name for the volume mount | `[]` | +| `storageSpec.volumeMount.mountPath` | Mount paths | [] | +| `storageSpec.nodeConfVolume` | Node configuration volume | true | +| `storageSpec.nodeConfVolumeClaimTemplate` | Node volume claim template | (provided configurations) | + +#### TLS + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `TLS.enabled` | Enable TLS | `false` | +| `TLS.ca` | CA key | `ca.key` | +| `TLS.cert` | TLS certificate | `tls.crt` | +| `TLS.key` | TLS key | `tls.key` | +| `TLS.secret.secretName` | Secret name | `redis-tls-cert` | + +#### ACL + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `acl.enabled` | Enable ACL | `false` | +| `acl.secret` | Secret for ACL | `""` | + +#### Init Container + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `initContainer.enabled` | Enable init container | `false` | +| `initContainer.image` | Image for init container | `""` | +| `initContainer.imagePullPolicy` | Image pull policy | `IfNotPresent` | +| `initContainer.resources` | Resource configurations | `{}` | +| `initContainer.env` | Environment variables | `[]` | +| `initContainer.command` | Commands for init container | `[]` | +| `initContainer.args` | Arguments for the command | `[]` | + +#### Environment Variables + +| Parameter | Description | Default | +|---------------------------------------------|---------------------------------------|-----------------------------| +| `env` | List of environment variables | `[]` | +efulset | diff --git a/charts/redis/templates/redis-standalone.yaml b/charts/redis/templates/redis-standalone.yaml index dbd7520f..dc95587a 100644 --- a/charts/redis/templates/redis-standalone.yaml +++ b/charts/redis/templates/redis-standalone.yaml @@ -10,74 +10,158 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/version: {{ .Chart.AppVersion }} app.kubernetes.io/component: middleware + app.kubernetes.io/part-of : {{ .Release.Name }} {{- if .Values.labels }} {{- range $labelkey, $labelvalue := .Values.labels }} {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} +{{- with .Values.annotations }} + annotations: +{{- toYaml . | nindent 6 }} +{{- end }} spec: -{{- if eq .Values.externalConfig.enabled true }} - redisConfig: - additionalRedisConfig: {{ .Release.Name }}-ext-config + kubernetesConfig: + image: "{{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }}" + imagePullPolicy: "{{ .Values.redisStandalone.imagePullPolicy }}" + resources: +{{ toYaml .Values.redisStandalone.resources | indent 6 }} +{{- with .Values.redisStandalone.redisSecret }} +{{- if and .secretName .secretKey }} + redisSecret: + name: "{{ .secretName | trim }}" + key: "{{ .secretKey | trim }}" {{- end }} +{{- end }} +# Redis Exporter Specs redisExporter: enabled: {{ .Values.redisExporter.enabled }} - image: "{{ .Values.redisExporter.image }}:{{ .Values.redisExporter.tag }}" + image: "{{ .Values.redisExporter.image }}" imagePullPolicy: "{{ .Values.redisExporter.imagePullPolicy }}" resources: {{ toYaml .Values.redisExporter.resources | indent 6 }} -{{- if .Values.redisExporter.env }} + {{- with .Values.redisExporter.env }} env: -{{ toYaml .Values.redisExporter.env | indent 4 }} +{{ toYaml . | indent 6 }} + {{- end }} +{{- if eq .Values.externalConfig.enabled true }} +# Redis Config + redisConfig: + additionalRedisConfig: {{ .Release.Name }}-ext-config {{- end }} - kubernetesConfig: - image: "{{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }}" - imagePullPolicy: "{{ .Values.redisStandalone.imagePullPolicy }}" - resources: -{{ toYaml .Values.redisStandalone.resources | indent 6 }} -{{- if .Values.redisStandalone.redisSecret }} - redisSecret: - name: "{{ .Values.redisStandalone.redisSecret.secretName }}" - key: "{{ .Values.redisStandalone.redisSecret.secretKey }}" +# Storage Specs +{{- with .Values.storageSpec }} +storage: + {{- if .volumeClaimTemplate }} + volumeClaimTemplate: +{{ toYaml .volumeClaimTemplate | indent 4 }} + {{- end }} + {{- if .volumeMount }} + volumeMount: +{{ toYaml .volumeMount | indent 4 }} + {{- end }} {{- end }} -{{- if .Values.imagePullSecrets }} - imagePullSecrets: -{{- range $imageSecrets := .Values.imagePullSecrets }} - - name: {{ $imageSecrets.name }} +# Node Selector +{{- if .Values.nodeSelector }} + nodeSelector: + {{- range $key, $value := .Values.nodeSelector }} + {{ $key | quote }}: {{ $value | quote }} + {{- end }} +{{- end }} +# Pod Security Context and Security Context +{{- if .Values.podSecurityContext }} + podSecurityContext: +{{ toYaml .Values.podSecurityContext | indent 4 }} {{- end }} +{{- if .Values.securityContext }} +{{- if ne (len .Values.securityContext) 0 }} + securityContext: {{- toYaml .Values.securityContext | nindent 2 }} {{- end }} -{{- if .Values.storageSpec }} - storage: -{{ toYaml .Values.storageSpec | indent 4 }} {{- end }} -{{- if .Values.priorityClassName }} +{{- if and .Values.priorityClassName (ne .Values.priorityClassName "") }} priorityClassName: "{{ .Values.priorityClassName }}" {{- end }} -{{- if .Values.nodeSelector }} - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 4 }} -{{- end }} +# Affinity and Tolerations {{- if .Values.affinity }} affinity: {{ toYaml .Values.affinity | indent 4 }} -{{- end }} -{{- if .Values.podSecurityContext }} - podSecurityContext: -{{ toYaml .Values.podSecurityContext | indent 4 }} - {{- end }} {{- if .Values.tolerations }} tolerations: -{{ toYaml .Values.tolerations | indent 4 }} + {{- range .Values.tolerations }} + - key: {{ .key | quote }} + operator: {{ .operator | quote }} + value: {{ .value | quote }} + effect: {{ .effect | quote }} + {{- end }} +{{- end }} +# TLS Specs and acl specs +{{- if and .Values.TLS.enabled .Values.TLS.ca .Values.TLS.cert .Values.TLS.key .Values.TLS.secret.secretName }} +TLS: + ca: {{ .Values.TLS.ca | quote }} + cert: {{ .Values.TLS.cert | quote }} + key: {{ .Values.TLS.key | quote }} + secret: + secretName: {{ .Values.TLS.secret.secretName | quote }} +{{- end }} +{{- if and .Values.acl.enabled .Values.acl.secret }} +acl: + secret: {{ .Values.acl.secret | quote }} {{- end }} -{{- if .Values.TLS }} - TLS: -{{ toYaml .Values.TLS | indent 4 }} -{{- end}} +{{- if eq .Values.readinessProbe.enabled true }} + readinessProbe: + initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.readinessProbe.failureThreshold }} +{{- end }} +{{- if eq .Values.livenessProbe.enabled true }} + livenessProbe: + initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} + timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} + periodSeconds: {{ .Values.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.livenessProbe.failureThreshold }} +{{- end }} +# Init Container Specs and Sidecar Specs +{{- with .Values.initContainer }} +{{- if .enabled }} +# Init Container Specs +initContainer: + image: {{ .image | quote }} + imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} + {{- with .resources }} + resources: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .env }} + env: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .command }} + command: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .args }} + args: +{{ toYaml . | indent 4 }} + {{- end }} +{{- end }} +{{- end }} +# Sidecar Specs {{- if .Values.sidecars }} sidecars: {{ toYaml .Values.sidecars | indent 4 }} {{- end }} -{{- if .Values.serviceAccountName }} - serviceAccountName: "{{ .Values.serviceAccountName }}" + serviceAccountName: "{{ .Release.Name }}" +{{- if ne .Values.redisCluster.leader.terminationGracePeriodSeconds 0 }} + terminationGracePeriodSeconds: {{ .Values.redisCluster.leader.terminationGracePeriodSeconds }} +{{- end }} +# Additional Env Variables +{{- if .Values.env }} +{{- if gt (len .Values.env) 0 }} + env: + {{ toYaml .Values.env | indent 2 }} {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/redis/values.yaml b/charts/redis/values.yaml index 23174f09..d862c8cb 100644 --- a/charts/redis/values.yaml +++ b/charts/redis/values.yaml @@ -1,11 +1,11 @@ --- redisStandalone: image: quay.io/opstree/redis - tag: v7.0.5 - imagePullPolicy: IfNotPresent - # redisSecret: - # secretName: redis-secret - # secretKey: password + tag: v7.0.12 + imagePullPolicy: Always + redisSecret: + secretName: "" + secretKey: "" serviceType: ClusterIP resources: {} # requests: @@ -15,9 +15,13 @@ redisStandalone: # cpu: 100m # memory: 128Mi -# labels: -# foo: bar -# test: echo +labels: {} + # foo: bar + # test: echo + +annotations: {} + # foo: bar + # test: echo externalConfig: enabled: false @@ -40,9 +44,8 @@ serviceMonitor: namespace: monitoring redisExporter: - enabled: false - image: quay.io/opstree/redis-exporter - tag: "v1.44.0" + enabled: true + image: quay.io/opstree/redis-exporter:"v1.44.0" imagePullPolicy: IfNotPresent resources: {} # requests: @@ -51,19 +54,22 @@ redisExporter: # limits: # cpu: 100m # memory: 128Mi - # env: - # - name: REDIS_EXPORTER_INCL_SYSTEM_METRICS - # value: "true" - # - name: UI_PROPERTIES_FILE_NAME - # valueFrom: - # configMapKeyRef: - # name: game-demo - # key: ui_properties_file_name - # - name: SECRET_USERNAME - # valueFrom: - # secretKeyRef: - # name: mysecret - # key: username + env : [] + +initContainer: + enabled: false + image: "" + imagePullPolicy: "IfNotPresent" + resources: {} + # requests: + # memory: "64Mi" + # cpu: "250m" + # limits: + # memory: "128Mi" + # cpu: "500m" + env: [] + command: [] + args: [] sidecars: [] # - name: "sidecar1" @@ -80,7 +86,7 @@ sidecars: [] # - name: VAR_NAME # value: "value1" -# priorityClassName: "-" +priorityClassName: "" # imagePullSecrets: # - name: regcred @@ -96,12 +102,16 @@ storageSpec: resources: requests: storage: 1Gi - # selector: {} + volumeMount : + volume : [] + mountPath : [] podSecurityContext: runAsUser: 1000 fsGroup: 1000 +securityContext: {} + affinity: {} # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: @@ -112,11 +122,44 @@ affinity: {} # values: # - ssd -# serviceAccountName: redis-sa +tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + +TLS: + enabled: false + ca: ca.key + cert: tls.crt + key: tls.key + secret: + secretName: redis-tls-cert + +acl : + enabled: false + secret : "" + + +readinessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + +livenessProbe: + enabled: false + initialDelaySeconds: 15 + timeoutSeconds: 5 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + + +terminationGracePeriodSeconds: 0 -# TLS: -# ca: ca.key -# cert: tls.crt -# key: tls.key -# secret: -# secretName: redis-tls-cert +env : [] + # - name: VAR_NAME + # value: "value1" \ No newline at end of file From 10ae1f64473582533a26e8a6dca0fb01e30fbd69 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Wed, 27 Sep 2023 18:26:05 +0530 Subject: [PATCH 3/7] add helpers.tpl Signed-off-by: Shubham Gupta --- charts/redis/templates/_helpers.tpl | 29 ++++++++++++++++++++ charts/redis/templates/redis-standalone.yaml | 21 ++++++++------ charts/redis/values.yaml | 15 +++++----- 3 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 charts/redis/templates/_helpers.tpl diff --git a/charts/redis/templates/_helpers.tpl b/charts/redis/templates/_helpers.tpl new file mode 100644 index 00000000..ac2b043d --- /dev/null +++ b/charts/redis/templates/_helpers.tpl @@ -0,0 +1,29 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Generate resource specification +*/}} + + +{{- define "redisStandalone.resources" -}} +{{- if .Values.resources -}} +resources: + {{- if .Values.resources.requests }} + requests: + {{- if .Values.resources.requests.cpu }} + cpu: {{ .Values.resources.requests.cpu }} + {{- end }} + {{- if .Values.resources.requests.memory }} + memory: {{ .Values.resources.requests.memory }} + {{- end }} + {{- end }} + {{- if .Values.resources.limits }} + limits: + {{- if .Values.resources.limits.cpu }} + cpu: {{ .Values.resources.limits.cpu }} + {{- end }} + {{- if .Values.resources.limits.memory }} + memory: {{ .Values.resources.limits.memory }} + {{- end }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/charts/redis/templates/redis-standalone.yaml b/charts/redis/templates/redis-standalone.yaml index dc95587a..9c6039ac 100644 --- a/charts/redis/templates/redis-standalone.yaml +++ b/charts/redis/templates/redis-standalone.yaml @@ -16,16 +16,15 @@ metadata: {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} -{{- with .Values.annotations }} - annotations: -{{- toYaml . | nindent 6 }} -{{- end }} +# {{- with .Values.annotations }} +# annotations: +# {{- toYaml . | nindent 4 }} +# {{- end }} spec: kubernetesConfig: - image: "{{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }}" + image: {{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }} imagePullPolicy: "{{ .Values.redisStandalone.imagePullPolicy }}" - resources: -{{ toYaml .Values.redisStandalone.resources | indent 6 }} + {{- include "redisStandalone.resources" . | nindent 4 }} {{- with .Values.redisStandalone.redisSecret }} {{- if and .secretName .secretKey }} redisSecret: @@ -33,6 +32,10 @@ spec: key: "{{ .secretKey | trim }}" {{- end }} {{- end }} +{{- with .Values.redisStandalone.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 2 }} +{{- end }} # Redis Exporter Specs redisExporter: enabled: {{ .Values.redisExporter.enabled }} @@ -155,8 +158,8 @@ initContainer: {{ toYaml .Values.sidecars | indent 4 }} {{- end }} serviceAccountName: "{{ .Release.Name }}" -{{- if ne .Values.redisCluster.leader.terminationGracePeriodSeconds 0 }} - terminationGracePeriodSeconds: {{ .Values.redisCluster.leader.terminationGracePeriodSeconds }} +{{- if ne (int .Values.terminationGracePeriodSeconds) 0 }} + terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} {{- end }} # Additional Env Variables {{- if .Values.env }} diff --git a/charts/redis/values.yaml b/charts/redis/values.yaml index d862c8cb..426ff821 100644 --- a/charts/redis/values.yaml +++ b/charts/redis/values.yaml @@ -7,13 +7,14 @@ redisStandalone: secretName: "" secretKey: "" serviceType: ClusterIP - resources: {} - # requests: - # cpu: 100m - # memory: 128Mi - # limits: - # cpu: 100m - # memory: 128Mi + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 100m + memory: 128Mi + imagePullSecrets: [] labels: {} # foo: bar From f6731fd04c8c86e3ec168ee5fae92982e6d370c2 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Wed, 27 Sep 2023 19:28:01 +0530 Subject: [PATCH 4/7] remove Signed-off-by: Shubham Gupta --- charts/redis/templates/redis-standalone.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/charts/redis/templates/redis-standalone.yaml b/charts/redis/templates/redis-standalone.yaml index 9c6039ac..186f7c78 100644 --- a/charts/redis/templates/redis-standalone.yaml +++ b/charts/redis/templates/redis-standalone.yaml @@ -16,10 +16,6 @@ metadata: {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} -# {{- with .Values.annotations }} -# annotations: -# {{- toYaml . | nindent 4 }} -# {{- end }} spec: kubernetesConfig: image: {{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }} From 7e8419d4e0b66ef404d4d6fab3ddb93561348a77 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 28 Sep 2023 14:10:17 +0530 Subject: [PATCH 5/7] remove annotation Signed-off-by: Shubham Gupta --- .../templates/redis-cluster.yaml | 4 - charts/redis-cluster/values.yaml | 2 - .../templates/redis-replication.yaml | 4 - charts/redis-replication/values.yaml | 3 - .../templates/redis-sentinel.yaml | 4 - charts/redis-sentinel/values.yaml | 4 - charts/redis/templates/redis-standalone.yaml | 78 ++++++++++--------- charts/redis/values.yaml | 4 - 8 files changed, 40 insertions(+), 63 deletions(-) diff --git a/charts/redis-cluster/templates/redis-cluster.yaml b/charts/redis-cluster/templates/redis-cluster.yaml index 5c9e8de2..7ff82201 100644 --- a/charts/redis-cluster/templates/redis-cluster.yaml +++ b/charts/redis-cluster/templates/redis-cluster.yaml @@ -16,10 +16,6 @@ metadata: {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} -{{- with .Values.annotations }} - annotations: -{{- toYaml . | nindent 6 }} -{{- end }} spec: clusterSize: {{ .Values.redisCluster.clusterSize }} persistenceEnabled: {{ .Values.redisCluster.persistenceEnabled }} diff --git a/charts/redis-cluster/values.yaml b/charts/redis-cluster/values.yaml index 182cd1ef..fcc73ef6 100644 --- a/charts/redis-cluster/values.yaml +++ b/charts/redis-cluster/values.yaml @@ -63,8 +63,6 @@ labels: {} # app: redis-cluster # release: redis-cluster -annotations: {} - # iam.amazonaws.com/role: role-arn pdb: enabled: false diff --git a/charts/redis-replication/templates/redis-replication.yaml b/charts/redis-replication/templates/redis-replication.yaml index 278ee245..0e0871cf 100644 --- a/charts/redis-replication/templates/redis-replication.yaml +++ b/charts/redis-replication/templates/redis-replication.yaml @@ -16,10 +16,6 @@ metadata: {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} -{{- with .Values.annotations }} - annotations: -{{- toYaml . | nindent 6 }} -{{- end }} spec: clusterSize: {{ .Values.redisReplication.clusterSize }} kubernetesConfig: diff --git a/charts/redis-replication/values.yaml b/charts/redis-replication/values.yaml index af2d2b3e..644854d4 100644 --- a/charts/redis-replication/values.yaml +++ b/charts/redis-replication/values.yaml @@ -20,9 +20,6 @@ labels: {} # foo: bar # test: echo -annotations: {} - # foo: bar - # test: echo externalConfig: enabled: false diff --git a/charts/redis-sentinel/templates/redis-sentinel.yaml b/charts/redis-sentinel/templates/redis-sentinel.yaml index 1118dd75..718546d5 100644 --- a/charts/redis-sentinel/templates/redis-sentinel.yaml +++ b/charts/redis-sentinel/templates/redis-sentinel.yaml @@ -16,10 +16,6 @@ metadata: {{ $labelkey}}: {{ $labelvalue }} {{- end }} {{- end }} -{{- with .Values.annotations }} - annotations: -{{- toYaml . | nindent 6 }} -{{- end }} spec: clusterSize: {{ .Values.redisSentinel.clusterSize }} # Sentinel Config diff --git a/charts/redis-sentinel/values.yaml b/charts/redis-sentinel/values.yaml index d978572b..b0e97648 100644 --- a/charts/redis-sentinel/values.yaml +++ b/charts/redis-sentinel/values.yaml @@ -20,10 +20,6 @@ labels: {} # foo: bar # test: echo -annotations: {} - # foo: bar - # test: echo - redisSentinelConfig: redisReplicationName: "redis-replication" # masterGroupName: diff --git a/charts/redis/templates/redis-standalone.yaml b/charts/redis/templates/redis-standalone.yaml index 186f7c78..146967e6 100644 --- a/charts/redis/templates/redis-standalone.yaml +++ b/charts/redis/templates/redis-standalone.yaml @@ -18,9 +18,9 @@ metadata: {{- end }} spec: kubernetesConfig: - image: {{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }} + image: "{{ .Values.redisStandalone.image }}:{{ .Values.redisStandalone.tag }}" imagePullPolicy: "{{ .Values.redisStandalone.imagePullPolicy }}" - {{- include "redisStandalone.resources" . | nindent 4 }} +{{- include "redisStandalone.resources" . | nindent 4 }} {{- with .Values.redisStandalone.redisSecret }} {{- if and .secretName .secretKey }} redisSecret: @@ -28,10 +28,12 @@ spec: key: "{{ .secretKey | trim }}" {{- end }} {{- end }} +{{- if .Values.redisStandalone.imagePullSecrets -}} {{- with .Values.redisStandalone.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 2 }} {{- end }} +{{- end -}} # Redis Exporter Specs redisExporter: enabled: {{ .Values.redisExporter.enabled }} @@ -50,15 +52,15 @@ spec: {{- end }} # Storage Specs {{- with .Values.storageSpec }} -storage: - {{- if .volumeClaimTemplate }} - volumeClaimTemplate: -{{ toYaml .volumeClaimTemplate | indent 4 }} - {{- end }} - {{- if .volumeMount }} - volumeMount: -{{ toYaml .volumeMount | indent 4 }} - {{- end }} + storage: + {{- if .volumeClaimTemplate }} + volumeClaimTemplate: + {{ toYaml .volumeClaimTemplate | indent 4 }} + {{- end }} + {{- if .volumeMount }} + volumeMount: + {{ toYaml .volumeMount | indent 4 }} + {{- end }} {{- end }} # Node Selector {{- if .Values.nodeSelector }} @@ -96,16 +98,16 @@ storage: {{- end }} # TLS Specs and acl specs {{- if and .Values.TLS.enabled .Values.TLS.ca .Values.TLS.cert .Values.TLS.key .Values.TLS.secret.secretName }} -TLS: - ca: {{ .Values.TLS.ca | quote }} - cert: {{ .Values.TLS.cert | quote }} - key: {{ .Values.TLS.key | quote }} - secret: - secretName: {{ .Values.TLS.secret.secretName | quote }} + TLS: + ca: {{ .Values.TLS.ca | quote }} + cert: {{ .Values.TLS.cert | quote }} + key: {{ .Values.TLS.key | quote }} + secret: + secretName: {{ .Values.TLS.secret.secretName | quote }} {{- end }} {{- if and .Values.acl.enabled .Values.acl.secret }} -acl: - secret: {{ .Values.acl.secret | quote }} + acl: + secret: {{ .Values.acl.secret | quote }} {{- end }} {{- if eq .Values.readinessProbe.enabled true }} readinessProbe: @@ -127,25 +129,25 @@ acl: {{- with .Values.initContainer }} {{- if .enabled }} # Init Container Specs -initContainer: - image: {{ .image | quote }} - imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} - {{- with .resources }} - resources: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .env }} - env: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .command }} - command: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .args }} - args: -{{ toYaml . | indent 4 }} - {{- end }} + initContainer: + image: {{ .image | quote }} + imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} + {{- with .resources }} + resources: + {{ toYaml . | indent 4 }} + {{- end }} + {{- with .env }} + env: + {{ toYaml . | indent 4 }} + {{- end }} + {{- with .command }} + command: + {{ toYaml . | indent 4 }} + {{- end }} + {{- with .args }} + args: + {{ toYaml . | indent 4 }} + {{- end }} {{- end }} {{- end }} # Sidecar Specs diff --git a/charts/redis/values.yaml b/charts/redis/values.yaml index 426ff821..cf329413 100644 --- a/charts/redis/values.yaml +++ b/charts/redis/values.yaml @@ -20,10 +20,6 @@ labels: {} # foo: bar # test: echo -annotations: {} - # foo: bar - # test: echo - externalConfig: enabled: false data: | From 827660c7209b22cb7ec987587b45b8dca6103f3d Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 28 Sep 2023 14:31:30 +0530 Subject: [PATCH 6/7] fix termination Signed-off-by: Shubham Gupta --- charts/redis-cluster/templates/redis-cluster.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/redis-cluster/templates/redis-cluster.yaml b/charts/redis-cluster/templates/redis-cluster.yaml index 7ff82201..bf5e447b 100644 --- a/charts/redis-cluster/templates/redis-cluster.yaml +++ b/charts/redis-cluster/templates/redis-cluster.yaml @@ -77,7 +77,7 @@ spec: securityContext: {{- toYaml .Values.redisCluster.leader.securityContext | nindent 2 }} {{- end }} {{- end }} -{{- if ne .Values.redisCluster.leader.terminationGracePeriodSeconds 0 }} +{{- if ne (int .Values.redisCluster.leader.terminationGracePeriodSeconds) 0 }} terminationGracePeriodSeconds: {{ .Values.redisCluster.leader.terminationGracePeriodSeconds }} {{- end }} # Redis Follower Specs @@ -137,7 +137,7 @@ spec: securityContext: {{- toYaml .Values.redisCluster.follower.securityContext | nindent 2 }} {{- end }} {{- end }} -{{- if ne .Values.redisCluster.follower.terminationGracePeriodSeconds 0 }} +{{- if ne (int .Values.redisCluster.follower.terminationGracePeriodSeconds) 0 }} terminationGracePeriodSeconds: {{ .Values.redisCluster.follower.terminationGracePeriodSeconds }} {{- end }} # Redis Exporter Specs From ec85a407ccee039165ea775ecb1b557fca8cc4b6 Mon Sep 17 00:00:00 2001 From: Shubham Gupta Date: Thu, 28 Sep 2023 14:56:22 +0530 Subject: [PATCH 7/7] fix intendation Signed-off-by: Shubham Gupta --- .../templates/redis-cluster.yaml | 103 ++++++++---------- charts/redis-cluster/values.yaml | 2 +- 2 files changed, 47 insertions(+), 58 deletions(-) diff --git a/charts/redis-cluster/templates/redis-cluster.yaml b/charts/redis-cluster/templates/redis-cluster.yaml index bf5e447b..6c65a080 100644 --- a/charts/redis-cluster/templates/redis-cluster.yaml +++ b/charts/redis-cluster/templates/redis-cluster.yaml @@ -10,7 +10,7 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/version: {{ .Chart.AppVersion }} app.kubernetes.io/component: middleware - app.kubernetes.io/part-of : {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} {{- if .Values.labels }} {{- range $labelkey, $labelvalue := .Values.labels }} {{ $labelkey}}: {{ $labelvalue }} @@ -20,12 +20,11 @@ spec: clusterSize: {{ .Values.redisCluster.clusterSize }} persistenceEnabled: {{ .Values.redisCluster.persistenceEnabled }} clusterVersion: {{ .Values.redisCluster.clusterVersion }} -# Redis Leader Specs redisLeader: replicas: {{ .Values.redisCluster.leader.replicas }} {{- if eq .Values.externalConfig.enabled true }} redisConfig: - additionalRedisConfig: {{ .Release.Name }}-ext-config + additionalRedisConfig: "{{ .Release.Name }}"-ext-config {{- end }} {{- if .Values.redisCluster.leader.affinity }} affinity: @@ -80,7 +79,6 @@ spec: {{- if ne (int .Values.redisCluster.leader.terminationGracePeriodSeconds) 0 }} terminationGracePeriodSeconds: {{ .Values.redisCluster.leader.terminationGracePeriodSeconds }} {{- end }} -# Redis Follower Specs redisFollower: replicas: {{ .Values.redisCluster.follower.replicas }} {{- if eq .Values.externalConfig.enabled true }} @@ -140,7 +138,6 @@ spec: {{- if ne (int .Values.redisCluster.follower.terminationGracePeriodSeconds) 0 }} terminationGracePeriodSeconds: {{ .Values.redisCluster.follower.terminationGracePeriodSeconds }} {{- end }} -# Redis Exporter Specs redisExporter: enabled: {{ .Values.redisExporter.enabled }} image: "{{ .Values.redisExporter.image }}" @@ -151,7 +148,6 @@ spec: env: {{ toYaml . | indent 6 }} {{- end }} -# Kubernetes Config Specs kubernetesConfig: image: "{{ .Values.redisCluster.image }}:{{ .Values.redisCluster.tag }}" imagePullPolicy: "{{ .Values.redisCluster.imagePullPolicy }}" @@ -164,25 +160,24 @@ spec: key: "{{ .secretKey | trim }}" {{- end }} {{- end }} -# Storage Specs -{{- with .Values.storageSpec }} -storage: - {{- if .volumeClaimTemplate }} - volumeClaimTemplate: -{{ toYaml .volumeClaimTemplate | indent 4 }} - {{- end }} - {{- if .volumeMount }} - volumeMount: -{{ toYaml .volumeMount | indent 4 }} - {{- end }} - {{- if .nodeConfVolume }} - nodeConfVolume: {{ .nodeConfVolume }} - {{- end }} - {{- if .nodeConfVolumeClaimTemplate }} - nodeConfVolumeClaimTemplate: -{{ toYaml .nodeConfVolumeClaimTemplate | indent 4 }} + {{- with .Values.storageSpec }} + storage: + {{- if .volumeClaimTemplate }} + volumeClaimTemplate: + {{ toYaml .volumeClaimTemplate | indent 4 }} + {{- end }} + {{- if .volumeMount }} + volumeMount: + {{ toYaml .volumeMount | indent 4 }} + {{- end }} + {{- if .nodeConfVolume }} + nodeConfVolume: {{ .nodeConfVolume }} + {{- end }} + {{- if .nodeConfVolumeClaimTemplate }} + nodeConfVolumeClaimTemplate: + {{ toYaml .nodeConfVolumeClaimTemplate | indent 4 }} + {{- end }} {{- end }} -{{- end }} {{- if .Values.podSecurityContext }} podSecurityContext: {{ toYaml .Values.podSecurityContext | indent 4 }} @@ -190,52 +185,46 @@ storage: {{- if and .Values.priorityClassName (ne .Values.priorityClassName "") }} priorityClassName: "{{ .Values.priorityClassName }}" {{- end }} -# TLS Specs and acl specs {{- if and .Values.TLS.enabled .Values.TLS.ca .Values.TLS.cert .Values.TLS.key .Values.TLS.secret.secretName }} -TLS: - ca: {{ .Values.TLS.ca | quote }} - cert: {{ .Values.TLS.cert | quote }} - key: {{ .Values.TLS.key | quote }} - secret: - secretName: {{ .Values.TLS.secret.secretName | quote }} + TLS: + ca: {{ .Values.TLS.ca | quote }} + cert: {{ .Values.TLS.cert | quote }} + key: {{ .Values.TLS.key | quote }} + secret: + secretName: {{ .Values.TLS.secret.secretName | quote }} {{- end }} {{- if and .Values.acl.enabled .Values.acl.secret }} -acl: - secret: {{ .Values.acl.secret | quote }} + acl: + secret: {{ .Values.acl.secret | quote }} {{- end }} -# Init Container Specs {{- with .Values.initContainer }} {{- if .enabled }} -initContainer: - image: {{ .image | quote }} - imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} - {{- with .resources }} - resources: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .env }} - env: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .command }} - command: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .args }} - args: -{{ toYaml . | indent 4 }} - {{- end }} + initContainer: + image: {{ .image | quote }} + imagePullPolicy: {{ .imagePullPolicy | default "IfNotPresent" }} + {{- with .resources }} + resources: + {{ toYaml . | indent 4 }} + {{- end }} + {{- with .env }} + env: + {{ toYaml . | indent 4 }} + {{- end }} + {{- with .command }} + command: + {{ toYaml . | indent 4 }} + {{- end }} + {{- with .args }} + args: + {{ toYaml . | indent 4 }} + {{- end }} {{- end }} {{- end }} -# Sidecar Specs {{- if .Values.sidecars }} sidecars: {{ toYaml .Values.sidecars | indent 4 }} {{- end }} - serviceAccountName: "{{ .Release.Name }}" - -# Additional Env Variables {{- if .Values.env }} {{- if gt (len .Values.env) 0 }} env: diff --git a/charts/redis-cluster/values.yaml b/charts/redis-cluster/values.yaml index fcc73ef6..f7367a00 100644 --- a/charts/redis-cluster/values.yaml +++ b/charts/redis-cluster/values.yaml @@ -1,7 +1,7 @@ --- redisCluster: clusterSize: 3 - clusterVersion: v7 + clusterVersion: "v7" persistenceEnabled: true image: quay.io/opstree/redis tag: v7.0.12