을 사용하여 비밀을 만들었습니다 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
.
값을 업데이트하려면 어떻게해야합니까?
답변:
이것은 작동합니다.
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 유틸리티입니다.
위의 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의 '패치'방법을 사용하려고 시도했지만 작동하는 것 같습니다.
kubectl \
patch \
secret \
production-tls \
-p "{\"data\":{\"tls.key\":\"${TLS_KEY}\",\"tls.crt\":\"${TLS_CRT}\"}}"
내 요구를 가장 잘 충족시킨 답변에 대해 Devy에게 감사드립니다.
더 구체적인 경우에는 인증서를 갱신해야하는 네임 스페이스를 지정하고 이전 인증서를 삭제해야 할 수 있습니다.
**For deletion of the cert **
kubectl delete secret -n `namespace`
**For creation of new cert to specific namespace **
kubectl create secret {your-cert-name} --key /etc/certs/{name}.com.key --cert /etc/certs/{name}.com.crt -n {namespace} ```
나는 이것을 사용했고 그것은 매력처럼 작동했습니다.
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 용)