首页 > 解决方案 > 如何避免通过 values.yml 传递敏感数据(bitnami 图表)

问题描述

我正在尝试根据 Bitnami 的图表在 minikube 上部署 rabbitmq-cluster 并面临以下挑战:当我尝试使用秘密传递凭据时出现此错误:在 Secret default 中找不到密钥 rabbitmq-password /兔子

我在我的 minikube 集群中创建了一个名为rabbit的秘密,并尝试像这样设置值文件:

auth:
  # username: user
  # password: pass
  existingPasswordSecret: rabbit

也像这样:

 auth:
      username: ${RABBITMQ_USERNAME}
      password: ${RABBITMQ_PASSWORD}
      existingPasswordSecret: rabbit

这是我的秘密文件:

apiVersion: v1
kind: Secret
metadata:
  name: rabbit
type: Opaque
data:
  RABBITMQ_USERNAME: dXNlcg== (bitnami variable)
  RABBITMQ_PASSWORD: cGFzcw== (bitnami variable)

这是图表的默认秘密(我正在使用 helm install rabbitmq -f rabbitmq/values.yml bitnami/rabbitmq 安装图表):

apiVersion: v1
kind: Secret
metadata:
  name: {{ include "rabbitmq.fullname" . }}
  namespace: {{ .Release.Namespace | quote }}
  labels: {{- include "common.labels.standard" . | nindent 4 }}
type: Opaque
data:
  {{- if not .Values.auth.existingPasswordSecret }}
  {{- if .Values.auth.password }}
  rabbitmq-password: {{ .Values.auth.password | b64enc | quote }}
  {{- else }}
  rabbitmq-password: {{ randAlphaNum 10 | b64enc | quote }}
  {{- end }}
  {{- end }}

标签: rabbitmqkubernetes-helmbitnami

解决方案


错误消息告诉您缺少rabbitmq-password密钥中的密钥:

couldn't find key rabbitmq-password in Secret default/rabbit

如果我们查看您的密钥,我们可以看到您提供了两个密钥 (RABBITMQ_USERNAMERABBITMQ_PASSWORD),但不是rabbitmq-password它期望的密钥:

apiVersion: v1
kind: Secret
metadata:
  name: rabbit
type: Opaque
data:
  RABBITMQ_USERNAME: dXNlcg== (bitnami variable)
  RABBITMQ_PASSWORD: cGFzcw== (bitnami variable)

知道这一点,您必须使用rabbitmq-password而不是提供密码RABBITMQ_PASSWORD。该图表不支持将用户作为秘密传递。你的秘密应该是这样的:

apiVersion: v1
kind: Secret
metadata:
  name: rabbit
type: Opaque
data:
  rabbitmq-password: cGFzcw== (bitnami variable)

推荐阅读