4.3 KiB
| title | content_type | weight | description |
|---|---|---|---|
| kubectl을 사용한 시크릿 관리 | task | 10 | kubectl 커맨드를 사용하여 시크릿 오브젝트를 생성. |
{{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}}
시크릿 생성
시크릿에는 파드가 데이터베이스에 접근하는 데 필요한 사용자 자격 증명이 포함될 수 있다.
예를 들어 데이터베이스 연결 문자열은 사용자 이름과 암호로 구성된다.
사용자 이름은 로컬 컴퓨터의 ./username.txt 파일에, 비밀번호는
./password.txt 파일에 저장할 수 있다.
echo -n 'admin' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt
이 명령에서 -n 플래그는 생성된 파일의
텍스트 끝에 추가 개행 문자가 포함되지 않도록 해 준다. 이는 kubectl이 파일을 읽고
내용을 base64 문자열로 인코딩할 때 개행 문자도 함께 인코딩될 수 있기 때문에
중요하다.
kubectl create secret 명령은 이러한 파일들을 시크릿으로 패키징하고
API 서버에 오브젝트를 생성한다.
kubectl create secret generic db-user-pass \
--from-file=./username.txt \
--from-file=./password.txt
출력은 다음과 유사하다.
secret/db-user-pass created
기본 키 이름은 파일 이름이다. 선택적으로 --from-file=[key=]source를 사용하여 키 이름을 설정할 수 있다.
예제:
kubectl create secret generic db-user-pass \
--from-file=username=./username.txt \
--from-file=password=./password.txt
파일에 포함하는 암호 문자열에서 특수 문자를 이스케이프하지 않아도 된다.
--from-literal=<key>=<value> 태그를 사용하여 시크릿 데이터를 제공할 수도 있다.
이 태그는 여러 키-값 쌍을 제공하기 위해 두 번 이상 지정할 수 있다.
$, \, *, = 및 !와 같은 특수 문자는
shell에 해석하고 처리하기 때문에
이스케이프할 필요가 있다.
대부분의 셸에서 암호를 이스케이프하는 가장 쉬운 방법은 암호를 작은따옴표(')로 둘러싸는 것이다.
예를 들어, 비밀번호가 S!B\*d$zDsb=인 경우,
다음 커맨드를 실행한다.
kubectl create secret generic db-user-pass \
--from-literal=username=devuser \
--from-literal=password='S!B\*d$zDsb='
시크릿 확인
시크릿이 생성되었는지 확인한다.
kubectl get secrets
출력은 다음과 유사하다.
NAME TYPE DATA AGE
db-user-pass Opaque 2 51s
다음 명령을 실행하여 시크릿에 대한 상세 사항을 볼 수 있다.
kubectl describe secrets/db-user-pass
출력은 다음과 유사하다.
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password: 12 bytes
username: 5 bytes
kubectl get 및 kubectl describe 명령은
기본적으로 시크릿의 내용을 표시하지 않는다. 이는 시크릿이 실수로 노출되거나
터미널 로그에 저장되는 것을 방지하기 위한 것이다.
시크릿 디코딩
생성한 시크릿을 보려면 다음 명령을 실행한다.
kubectl get secret db-user-pass -o jsonpath='{.data}'
출력은 다음과 유사하다.
{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="}
이제 password 데이터를 디코딩할 수 있다.
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
출력은 다음과 유사하다.
1f2d1e2e67df
삭제
생성한 시크릿을 삭제하려면 다음 명령을 실행한다.
kubectl delete secret db-user-pass
{{% heading "whatsnext" %}}
- 시크릿 개념에 대해 자세히 알아보기
- 환경 설정 파일을 사용하여 시크릿을 관리하는 방법 알아보기
- kustomize를 사용하여 시크릿을 관리하는 방법 알아보기