我使用创建了一个秘密kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
。
如果我想更新值-我该怎么做?
我使用创建了一个秘密kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
。
如果我想更新值-我该怎么做?
Answers:
这应该工作:
kubectl create secret generic production-tls \
--from-file=./tls.key --from-file=./tls.crt --dry-run -o yaml |
kubectl apply -f -
--save-config
,kubectl create secret
以避免CLI警告。
kubectl create secret tls my-domain-tls --namespace=default --key=./tls.key --cert=./tls.crt --dry-run -o yaml | kubectl apply -f -
证书采用纯文本格式。
您可以删除并立即重新创建机密:
kubectl delete secret production-tls
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
我将这些命令放在脚本中,在第一个调用中,您会收到有关(尚未)存在的机密的警告,但这是可行的。
apply
更有意义,谢谢!
--namespace=kube-system
另外,您还可以使用jq
的=
或者|=
运营商更新秘密的飞行。
TLS_KEY=$(base64 < "./tls.key" | tr -d '\n')
TLS_CRT=$(base64 < "./tls.crt" | tr -d '\n')
kubectl get secrets production-tls -o json \
| jq '.data["tls.key"] |= "$TLS_KEY"' \
| jq '.data["tls.crt"] |= "$TLS_CRT"' \
| kubectl apply -f -
尽管从kubectl create secret generic --dry-run
技术上讲它可能不那么优雅或简单,但该方法实际上是在更新值,而不是删除/重新创建它们。您还将需要jq
和base64
(或openssl enc -base64
)命令可用,这tr
是一个常用的Linux实用程序,用于修剪尾随的换行符。
有关更新运算符的更多详细信息,请参见此处。jq
|=
由于我无法回复上述Devy的回答,我喜欢,因为它可以保留所有权,而删除和重新创建可能会丢失记录中的任何其他信息。我为那些可能不立即了解乳清变量的新人们添加了这个函数。
TLS_KEY=$(base64 < "./tls.key" | tr -d '\n')
TLS_CRT=$(base64 < "./tls.crt" | tr -d '\n')
kubectl get secrets production-tls -o json \
| jq ".data[\"tls.key\"] |= \"$TLS_KEY\"" \
| jq ".data[\"tls.crt\"] |= \"$TLS_CRT\"" \
| kubectl apply -f -
这导致我尝试使用kubectl的“ patch”方法,该方法似乎也有效。
kubectl \
patch \
secret \
production-tls \
-p "{\"data\":{\"tls.key\":\"${TLS_KEY}\",\"tls.crt\":\"${TLS_CRT}\"}}"
感谢Devy提供的最能满足我需求的答案。
我已经用过了,它就像一个魅力:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
docker -server = https://index.docker.io/v1/(对于DockerHub)
有关更多详细信息:https : //kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#create-a-secret-by-providing-credentials-on-the-command-line