동작 원리
•
사용자가 SealedSecret에서 제공하는 Public key(인증서)를 이용하여 Secret을 암호화하면 SealedSecret Controller가 알아서 자동으로 쿠버네티스 Secret으로 복호화 해줍니다.
1.
사용자가 미리 SealedSecret의 인증서를 이용하여 Secret을 암호화합니다. (SealedSecret 생성)
2.
생성한 SealedSecret을 외부 git 저장소에 업로드합니다. 아무나 볼 순 있겠지만 복호화하진 못합니다.
3.
GitOps Operator에 의해 SealedSecret이 쿠버네티스 클러스터로 배포됩니다.
4.
SealedSecret Controller에 의해 SealedSecret이 K8s Secret으로 복호화됩니다. 그 이후에는 기존과 동일하게 Secret을 사용합니다.
Install
Client Side
wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.1/kubeseal-0.27.1-linux-amd64.tar.gz
tar -xvzf kubeseal-0.27.1-linux-amd64.tar.gz kubeseal
sudo install -m 755 kubeseal /usr/local/bin/kubeseal
Shell
복사
Server Side
kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.1/controller.yaml
Shell
복사
사용해보기
Secret Create
kubectl create secret generic mysecret --from-literal hello=world --dry-run=client -oyaml > mysecret.yaml
Shell
복사
Sealed Secret Create
cat mysecret.yaml | kubeseal -oyaml > mysealed-secret.yaml
Shell
복사
Check
# 수동배포 보통은 GitOps로 배포됨
kubectl apply -f mysealed-secret.yaml
kubectl get sealedsecret mysecret
NAME AGE
mysecret 11s
kubectl get secret mysecret
NAME TYPE DATA AGE
mysecret Opaque 1 23s
Shell
복사