program story

파일에서 생성 될 때 Kubernetes에서 비밀을 업데이트하려면 어떻게해야합니까?

inputbox 2020. 11. 29. 10:25
반응형

파일에서 생성 될 때 Kubernetes에서 비밀을 업데이트하려면 어떻게해야합니까?


을 사용하여 비밀을 만들었습니다 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 -

비밀을 삭제하고 즉시 다시 만들 수 있습니다.

kubectl delete secret production-tls
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt

이 명령을 스크립트에 넣고 첫 번째 호출에서 (아직은 아님) 존재하는 비밀에 대한 경고를 받지만 이것은 작동합니다.


또는 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접근 방식 만큼 우아하거나 단순하지는 않지만 기술적으로이 접근 방식은 값을 삭제 / 다시 생성하는 것이 아니라 실제로 값을 업데이트하는 것입니다. 또한 사용 가능한 jqbase64(또는 openssl enc -base64) 명령이 필요 하며 tr후행 줄 바꿈을 자르는 데 일반적으로 사용되는 Linux 유틸리티입니다.

업데이트 연산자 에 대한 자세한 내용은 여기참조 하십시오 .jq|=

참고 URL : https://stackoverflow.com/questions/45879498/how-can-i-update-a-secret-on-kubernetes-when-it-is-generated-from-a-file

반응형