如何像编辑Deployment一样在Kubernetes中编辑Sealed Secret?
编辑Kubernetes Sealed Secret的步骤
Sealed Secret的加密数据无法直接编辑,必须通过解密为普通Secret → 修改 → 重新密封的流程来操作,具体步骤如下:
1. 获取并解密对应的普通Secret
如果Sealed Secret已部署到集群,对应的普通Secret已存在,直接获取:
kubectl get secret my-secret -n test-ns -o yaml > my-secret.yaml
如果只有本地的Sealed Secret文件(未部署),用kubeseal解密:
kubeseal --decode -f your-sealed-secret.yaml > my-secret.yaml
2. 编辑普通Secret
你可以直接在集群中编辑Secret:
kubectl edit secret my-secret -n test-ns
或者编辑本地的my-secret.yaml文件:
- 推荐用
stringData字段(无需Base64编码,直接写明文)替换原data字段,控制器会自动完成编码:apiVersion: v1 kind: Secret metadata: name: my-secret namespace: test-ns stringData: username: new-username password: new-password - 若坚持用
data字段,需将明文转为Base64编码:echo -n "new-value" | base64,替换对应值。
本地编辑完成后,重新应用到集群:
kubectl apply -f my-secret.yaml
3. 删除旧的Sealed Secret
由于Sealed Secret控制器会管理对应普通Secret的生命周期,需先删除旧的Sealed Secret:
kubectl delete sealedsecret my-secret -n test-ns
4. 重新密封修改后的Secret
将修改后的普通Secret重新密封为Sealed Secret,替换成你集群中Sealed Secrets控制器的名称和命名空间(通常为sealed-secrets和kube-system):
kubectl get secret my-secret -n test-ns -o yaml | kubeseal --controller-name=sealed-secrets --controller-namespace=kube-system -o yaml > new-sealed-secret.yaml
最后应用新的Sealed Secret到集群:
kubectl apply -f new-sealed-secret.yaml
完成后,Sealed Secret控制器会自动重新生成对应的普通Secret,确保修改生效。
内容的提问来源于stack exchange,提问作者P Nisanth Reddy
相关产品推荐
相关产品推荐

