I have deployed redis-cluster deployment by bitnami in kubernetes cluster provided by vultr where I have also added hashicorp. In bitnami/redis-cluster deployment there’s always a password that i getting generated if i give a password through values.yaml or if i didn’t at all. what i want to d now is use Hashicorp as a secret vault and get the password from the hashicorp vault. Can someone help me?
To retrieve password from hashicorp to redis-cluster deployment by bitnami or respective I added secret-provider-class.yaml to replace the secret.yaml so it will redirect to the keyvault.
{{- if and .Values.usePassword (not .Values.existingSecret) }}
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: {{ template "common.names.fullname" . }}-provider
namespace: {{ .Release.Namespace | quote }}
spec:
provider: {{ .Values.secretProvider }}
secretObjects:
- secretName: {{ template "common.names.fullname" . }}
type: Opaque
data:
- objectName: redis-password
key: redis-password
parameters:
{{- if eq .Values.secretProvider "aws" }}
objects: |
- objectName: "redis-password"
objectType: "secretsmanager"
objectAlias: "redis-password"
{{- else if eq .Values.secretProvider "azure" }}
keyvaultName: {{ .Values.keyVaultName }}
tenantId: {{ .Values.azureTenantID }}
usePodIdentity: "false"
objects: |
array:
- |
objectName: "redis-password"
objectType: "secret"
objectAlias: "redis-password"
{{- else if eq .Values.secretProvider "gcp" }}
secrets:
- resourceName: "projects/{{ .Values.gcpProjectID }}/secrets/PDP_REDIS_PASSWORD/versions/latest"
path: "redis-password"
{{- else if eq .Values.secretProvider "vault" }}
vaultAddress: {{ .Values.hcVaultAddress }}
roleName: "redis-cluster"
objects: |
- objectName: "redis-password"
secretPath: "secret/data/redis-cluster"
secretKey: "redis-password"
{{- end }}
{{- end }}
this is the secret.yaml
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and .Values.usePassword (not .Values.existingSecret) -}}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "common.names.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
type: Opaque
data:
redis-password: {{ include "redis-cluster.password" . | b64enc | quote }}
{{- end -}}
`