Bitnami Redis 关于 Kubernetes 身份验证失败的现有秘密

Bitnami Redis on Kubernetes Authentication Failure with Existing Secret

我正在尝试使用 Bitnami Redis HELM Chart 在 Kubernetes 环境中安装 Redis。我想使用定义的密码而不是随机生成的密码。但是,当我想使用 redis-cli 连接到 redis master 或 replicas 时,出现以下错误。

I have no name!@redis-client:/$ redis-cli -h redis-master -a $REDIS_PASSWORD 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Warning: AUTH failed

我像这样创建了一个 Kubernetes 秘密。

---
apiVersion: v1
kind: Secret
metadata:
  name: redis-secret
  namespace: redis
type: Opaque
data:
  redis-password: YWRtaW4xMjM0Cg==

并且在 values.yaml 文件中我更新了授权规范,如下所示。

auth:
  enabled: true
  sentinel: false
  existingSecret: "redis-secret"
  existingSecretPasswordKey: "redis-password"
  usePasswordFiles: false

如果我没有定义 existingSecret 字段并使用随机生成的密码,那么我可以毫无问题地连接。我也在 Warning: AUTH failed 错误后尝试了 AUTH admin1234 但它也没有用。

您可以通过更简单的方式实现它,即 运行ning:

$ helm install my-release \
  --set auth.password="admin1234" \
    bitnami/redis

这将更新您的 "my-release-redis" 秘密,因此当您 运行:

$ kubectl get secrets my-release-redis -o yaml

您会看到它包含您的密码,已经 base64 编码:

apiVersion: v1
data:
  redis-password: YWRtaW4xMjM0Cg==
kind: Secret
...

为了得到您的密码,您需要运行:

export REDIS_PASSWORD=$(kubectl get secret --namespace default my-release-redis -o jsonpath="{.data.redis-password}" | base64 --decode)

这将设置并导出包含您的 redis 密码的 REDIS_PASSWORD 环境变量。

然后你可以 运行 你的 redis-client 播客:

kubectl run --namespace default redis-client --restart='Never'  --env REDIS_PASSWORD=$REDIS_PASSWORD  --image docker.io/bitnami/redis:6.2.4-debian-10-r13 --command -- sleep infinity

这将在您的 redis-client pod 中设置 REDIS_PASSWORD 环境变量,方法是将上一步中本地设置的 REDIS_PASSWORD 值分配给它。

问题是关于我如何使用 echo 命令编码密码。我的密码末尾有一个换行符。我尝试使用 printf 命令而不是 echo,它产生了不同的结果。

printf admin1234 | base64