kustomize를 사용하여 시크릿 관리
쿠버네티스 v1.14부터 kubectl
은
Kustomize를 이용한 쿠버네티스 오브젝트의 선언형 관리를 지원한다.
Kustomize는 시크릿 및 컨피그맵을 생성하기 위한 리소스 생성기를 제공한다.
Kustomize 생성기는 디렉토리 내의 kustomization.yaml
파일에 지정되어야 한다.
시크릿 생성 후 kubectl apply
를 통해 API
서버에 시크릿을 생성할 수 있다.
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음의 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.
Kustomization 파일 생성
kustomization.yaml
파일에 다른 기존 파일을 참조하는
secretGenerator
를 정의하여 시크릿을 생성할 수 있다.
예를 들어 다음 kustomization 파일은
./username.txt
및 ./password.txt
파일을 참조한다.
secretGenerator:
- name: db-user-pass
files:
- username.txt
- password.txt
kustomization.yaml
파일에 리터럴을 명시하여 secretGenerator
를
정의할 수도 있다.
예를 들어 다음 kustomization.yaml
파일에는
각각 username
과 password
에 대한 두 개의 리터럴이 포함되어 있다.
secretGenerator:
- name: db-user-pass
literals:
- username=admin
- password=1f2d1e2e67df
kustomization.yaml
파일에 .env
파일을 명시하여
secretGenerator
를 정의할 수도 있다.
예를 들어 다음 kustomization.yaml
파일은
.env.secret
파일에서 데이터를 가져온다.
secretGenerator:
- name: db-user-pass
envs:
- .env.secret
모든 경우에 대해, 값을 base64로 인코딩하지 않아도 된다.
시크릿 생성
다음 명령을 실행하여 시크릿을 생성한다.
kubectl apply -k .
출력은 다음과 유사하다.
secret/db-user-pass-96mffmfh4k created
시크릿이 생성되면 시크릿 데이터를 해싱하고 이름에 해시 값을 추가하여 시크릿 이름이 생성된다. 이렇게 함으로써 데이터가 수정될 때마다 시크릿이 새롭게 생성된다.
생성된 시크릿 확인
시크릿이 생성된 것을 확인할 수 있다.
kubectl get secrets
출력은 다음과 유사하다.
NAME TYPE DATA AGE
db-user-pass-96mffmfh4k Opaque 2 51s
다음 명령을 실행하여 시크릿에 대한 상세 사항을 볼 수 있다.
kubectl describe secrets/db-user-pass-96mffmfh4k
출력은 다음과 유사하다.
Name: db-user-pass-96mffmfh4k
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password.txt: 12 bytes
username.txt: 5 bytes
kubectl get
및 kubectl describe
명령은 기본적으로 시크릿
의 내용을 표시하지 않는다.
이는 시크릿
이 실수로 구경꾼에게 노출되는 것을 방지하기 위한 것으로,
또는 터미널 로그에 저장되지 않는다.
인코딩된 데이터의 실제 내용을 확인하려면 다음을 참조한다.
시크릿 디코딩.
삭제
생성한 시크릿을 삭제하려면 다음 명령을 실행한다.
kubectl delete secret db-user-pass-96mffmfh4k
다음 내용
- 시크릿 개념에 대해 자세히 알아보기
kubectl
커맨드을 사용하여 시크릿 관리 방법 알아보기- 환경 설정 파일을 사용하여 시크릿을 관리하는 방법 알아보기