Secret 未使用 Kubernetes Secrets 正确解码

Secret is not decoding properly using Kubernetes Secrets

我正在使用 Kubernetes 部署我的 grafana 仪表板,我正在尝试使用 Kubernetes Secrets 来保存 grafana 管理员密码。这是我的 yaml 文件

    apiVersion: v1
    kind: Secret
    metadata:
      name: $APP_INSTANCE_NAME-grafana
      labels:
        app.kubernetes.io/name: $APP_INSTANCE_NAME
        app.kubernetes.io/component: grafana
    type: Opaque
    data:
      # By default, admin-user is set to `admin`
      admin-user: YWRtaW4=
      admin-password: "$GRAFANA_GENERATED_PASSWORD"

GRAFANA_GENERATED_PASSWORD 的值是 base64 编码并像

一样导出
export GRAFANA_GENERATED_PASSWORD="$(echo -n $PASSWORD | base64)"

其中 PASSWORD 是我在我的机器上导出的变量 export PASSWORD=qwerty123

我正在尝试将 GRAFANA_GENERATED_PASSWORD 的值传递给像

这样的机密的 yaml 文件
envsubst '$GRAFANA_GENERATED_PASSWORD'  > "grafana_secret.yaml"

通过base64编码值后的yaml文件看起来像

apiVersion: v1
kind: Secret
metadata:
  name: kafka-monitor-grafana
  labels:
    app.kubernetes.io/name: kafka-monitor
    app.kubernetes.io/component: grafana
type: Opaque
data:
  # By default, admin-user is set to `admin`
  admin-user: YWRtaW4=
  admin-password: "cXdlcnR5MTIz"

部署所有对象后,我无法使用正确编码的密码 qwerty123 登录到我的仪表板。

但是当我尝试像这样对我的密码进行编码时 export GRAFANA_GENERATED_PASSWORD="$(echo -n 'qwerty123' | base64)"

它工作正常,我可以使用密码 qwerty123 登录我的仪表板.. 看起来问题发生在我使用变量编码我的密码时...... 但是我已经使用变量

对我的密码进行了编码

@Pratheesh评论所述,第一次部署grafana后,持久卷不是deleted/recreated和文件grafana.db包含仍然保留旧密码的 Grafana 仪表板密码。

为了解决,需要在使用新密码应用秘密之前删除 PersistentVolume (pv)。