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
我正在尝试使用 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