Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Managing Secrets using Kustomize
kustomize를 사용하여 시크릿(Secret) 관리
kubectl
은 시크릿과 컨피그맵(ConfigMap)을 관리하기위해 Kustomize를 이용한 쿠버네티스 오브젝트의 선언형 관리를
지원한다. Kustomize를 이용하여 리소스 생성기를 생성한다. 이는 kubectl
을
사용하여 API 서버에 적용할 수 있는 시크릿을 생성한다.
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.
시크릿 생성
kustomization.yaml
파일에 다른 기존 파일, .env
파일 및
리터럴(literal) 값들을 참조하는 secretGenerator
를 정의하여 시크릿을 생성할 수 있다.
예를 들어 다음 명령어는 사용자 이름 admin
과 비밀번호 1f2d1e2e67df
를 위해 Kustomization 파일을 생성한다.
Kustomization 파일 생성
secretGenerator:
- name: database-creds
literals:
- username=admin
- password=1f2d1e2e67df
base64로 인코딩된 자격 증명의 값들을 파일에 저장한다.
echo -n 'admin' > ./username.txt echo -n '1f2d1e2e67df' > ./password.txt
-n
플래그는 파일의 끝에 개행 문자가 존재하지 않는 것을 보장한다.kustomization.yaml
파일 생성:secretGenerator: - name: database-creds files: - username.txt - password.txt
kustomization.yaml
파일에 .env
파일을 명시하여 시크릿 생성자를
정의할 수도 있다. 예를 들어 다음 kustomization.yaml
파일은
.env.secret
파일에서 데이터를 가져온다.
secretGenerator:
- name: db-user-pass
envs:
- .env.secret
모든 경우에 대해, 값을 base64로 인코딩하지 않아도 된다. YAML 파일의 이름은
무조건 kustomization.yaml
또는 kustomization.yml
이어야 한다.
kustomization 파일 적용
시크릿을 생성하기 위해서 kustomization 파일을 포함하는 디렉토리에 적용한다.
kubectl apply -k <directory-path>
출력은 다음과 유사하다.
secret/database-creds-5hdh7hhgfk created
시크릿이 생성되면 시크릿 데이터를 해싱하고 이름에 해시 값을 추가하여 시크릿 이름이 생성된다. 이렇게 함으로써 데이터가 수정될 때마다 시크릿이 새롭게 생성된다.
시크릿이 생성되었는지 확인하고 시크릿 데이터를 디코딩하려면, 다음을 참조한다. kubectl을 사용한 시크릿 관리.
시크릿 편집
kustomization.yaml
파일에서password
와 같은 데이터를 수정한다.kustomization 파일을 포함하는 디렉토리에 적용한다:
kubectl apply -k <directory-path>
출력은 다음과 유사하다.
secret/db-user-pass-6f24b56cc8 created
편집된 시크릿은 존재하는 Secret
오브젝트를 업데이트하는 것이 아니라
새로운 Secret
오브젝트로 생성된다. 따라서 파드에서 시크릿에 대한 참조를
업데이트해야 한다.
삭제
시크릿을 삭제하려면 kubectl
을 사용한다.
kubectl delete secret db-user-pass
다음 내용
- 시크릿 개념에 대해 자세히 알아보기
- kubectl을 사용한 시크릿 관리 방법 알아보기
- 환경 설정 파일을 사용한 시크릿 관리 방법 알아보기