从 Kubernetes 秘密加载时,Minio 无法识别凭据

Minio does not recognize credentials when loaded from Kubernetes secrets

我是 运行 Kubernetes 集群中的 minio 部署。 我曾经在 yaml 文件中以明文形式获得访问密钥和密钥,如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: minio
spec:
...
      containers:
        - name: minio
          volumeMounts:
            - name: data
              mountPath: "/data"
          image: minio/minio:RELEASE.2021-04-06T23-11-00Z
          args:
            - gateway
            - nas
            - /data
          env:
            - name: MINIO_ACCESS_KEY
              value: "minio"
            - name: MINIO_SECRET_KEY
              value: "mysupersecretkey"
...

这很好用。 但是,当我将凭据移至 kubernetes 秘密时,minio 不再识别这些凭据,即使它们已加载到相同的环境变量中:

apiVersion: apps/v1
kind: Deployment
...
      containers:
        - name: minio
          ...
          env:
            - name: MINIO_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: minio-secret
                  key: minioAccessKey
            - name: MINIO_SECRET_KEY
              valueFrom:
                secretKeyRef:
                  name: minio-secret
                  key: minioSecretKey
...

我可以确认,这些凭据已作为环境变量正确安装到容器中:

$ echo $MINIO_ACCESS_KEY
minio
$ echo $MINIO_SECRET_KEY
mysupersecretkey

但 minio 无法识别这些凭据:

当这些变量源自 kubernetes 秘密时,它们的使用方式有什么不同吗?

编辑

我也尝试过使用 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 变量,正如文档所建议的那样。但是,使用 kubernetes secrets 导致相同的错误,使用明文没有错误。

我已经解决了这个问题,这是由于凭证写入 Kubernetes 机密的方式引起的。 事实证明,我使用的工具向 base64 编码的秘密附加了一个 \n (0x0a) 换行符。

这就是凭据与我输入的登录信息不匹配的原因 UI。