要更改 valueFrom.secretKeyRef
的值,您需要更新 Kubernetes 集群中对应的 Secret 对象。以下是具体步骤:
首先,确认 mongodb
Secret 的当前内容。
运行以下命令查看 mongodb
Secret 的详细信息:
kubectl get secret mongodb -n data-platform-prod -o yaml
输出示例:
apiVersion: v1
data:
username: YWRtaW4= # Base64 编码的用户名
password: cGFzc3dvcmQxMjM= # Base64 编码的密码
kind: Secret
metadata:
name: mongodb
namespace: data-platform-prod
type: Opaque
使用以下命令解码用户名和密码:
echo "YWRtaW4=" | base64 --decode
echo "cGFzc3dvcmQxMjM=" | base64 --decode
输出示例:
admin
password123
您可以直接修改现有的 Secret,或者删除并重新创建一个新的 Secret。
运行以下命令更新 Secret 中的键值对:
更新用户名:
kubectl patch secret mongodb -n data-platform-prod \
--type='json' \
-p='[{"op": "replace", "path": "/data/username", "value": "'$(echo -n "new-username" | base64)'"}]'
更新密码:
kubectl patch secret mongodb -n data-platform-prod \
--type='json' \
-p='[{"op": "replace", "path": "/data/password", "value": "'$(echo -n "new-password" | base64)'"}]'
new-username
和 new-password
是新的用户名和密码。base64
命令用于将明文转换为 Base64 编码。如果您更倾向于重新创建 Secret,可以先删除旧的 Secret,然后创建一个新的。
删除 Secret:
kubectl delete secret mongodb -n data-platform-prod
创建新的 Secret:
kubectl create secret generic mongodb \
--from-literal=username=new-username \
--from-literal=password=new-password \
-n data-platform-prod
更新完成后,验证 Secret 是否已正确更新。
运行以下命令查看更新后的 Secret:
kubectl get secret mongodb -n data-platform-prod -o yaml
再次解码用户名和密码,确保它们已被更新:
echo "" | base64 --decode
echo "" | base64 --decode
Kubernetes 中的环境变量是在 Pod 启动时注入的。因此,更新 Secret 后,您需要重启相关的 Pod 才能使新值生效。
找到与 mongodb
Secret 相关的 Pod(如 rpc-server
),并删除它以触发重新创建:
kubectl delete pod rpc-server-5bc694559b-jqpgr -n data-platform-prod
Kubernetes 会自动重新创建该 Pod,并注入更新后的 Secret。
进入新启动的 Pod,检查环境变量是否已更新。
kubectl exec -it <new-pod-name> -n data-platform-prod -- /bin/bash
printenv MONGODB_USERNAME
printenv MONGODB_PASSWORD
确认输出的值是否为更新后的用户名和密码。
-n data-platform-prod
)。通过以上步骤,您可以成功更新 valueFrom.secretKeyRef
的值。如果仍有问题,请随时告诉我!