Kubernetes 集群中对应的 Secret 对象如何修改

要更改 valueFrom.secretKeyRef 的值,您需要更新 Kubernetes 集群中对应的 Secret 对象。以下是具体步骤:


1. 确认当前 Secret 的内容

首先,确认 mongodb Secret 的当前内容。

查看 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
解码 Secret

使用以下命令解码用户名和密码:

echo "YWRtaW4=" | base64 --decode
echo "cGFzc3dvcmQxMjM=" | base64 --decode

输出示例:

admin
password123

2. 更新 Secret 的值

您可以直接修改现有的 Secret,或者删除并重新创建一个新的 Secret。

(1) 修改现有 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-usernamenew-password 是新的用户名和密码。
    • base64 命令用于将明文转换为 Base64 编码。
(2) 删除并重新创建 Secret

如果您更倾向于重新创建 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

3. 验证更新

更新完成后,验证 Secret 是否已正确更新。

查看更新后的 Secret

运行以下命令查看更新后的 Secret:

kubectl get secret mongodb -n data-platform-prod -o yaml
解码更新后的值

再次解码用户名和密码,确保它们已被更新:

echo "" | base64 --decode
echo "" | base64 --decode

4. 重启相关 Pod

Kubernetes 中的环境变量是在 Pod 启动时注入的。因此,更新 Secret 后,您需要重启相关的 Pod 才能使新值生效。

重启 Pod

找到与 mongodb Secret 相关的 Pod(如 rpc-server),并删除它以触发重新创建:

kubectl delete pod rpc-server-5bc694559b-jqpgr -n data-platform-prod

Kubernetes 会自动重新创建该 Pod,并注入更新后的 Secret。


5. 验证环境变量

进入新启动的 Pod,检查环境变量是否已更新。

进入容器
kubectl exec -it <new-pod-name> -n data-platform-prod -- /bin/bash
查看环境变量
printenv MONGODB_USERNAME
printenv MONGODB_PASSWORD

确认输出的值是否为更新后的用户名和密码。


注意事项

  1. 权限: 确保您有足够的权限修改 Secret 和删除 Pod。
  2. 敏感信息保护: 不要在非安全环境中打印或记录敏感信息。
  3. 命名空间: 如果您的资源不在默认命名空间中,请始终指定正确的命名空间(如 -n data-platform-prod)。

通过以上步骤,您可以成功更新 valueFrom.secretKeyRef 的值。如果仍有问题,请随时告诉我!

你可能感兴趣的:(kubernetes,容器,云原生)