파드 (Pod)
의 환경변수에 MY_SQL 비밀번호
를 넣어야 할 때가 있었다. MY_SQL 비밀번호
는 기밀사항이므로 외부에 노출을 최소화하는 방법을 찾아보았고, Secret
을 사용하는 방안을 찾았다.
아래의 그림에서와 같이 시크릿
은 파드
에서 env
와 voulme
으로도 사용될 수 있다.
이미지 출처: https://www.macstadium.com/blog/how-to-k8s-kubernetes-secrets-made-simple
이번 글에는 env
를 Secret
으로 작성하고 Pod
에 적용하는 방법을 공유하려 한다.
MY_SQL 비밀번호
같은 보안이 필요한 내용을 .env.secret
에 작성한다.
# .env.secret
USER=admin
PASSWORD=abcde
kustomization.yaml
파일을 작성한다. ( 🔹STEP 1
에서 생성한 .env.secret
을 사용한다.)
# kustomization.yaml
generatorOptions:
disableNameSuffixHash: true
secretGenerator:
- name: mysecret
envs:
- .env.secret
kubectl apply -k .
을 통해 시크릿 리소스를 생성한다.
$ kubectl apply -k .
secret/db-user-pass-5k2878ch59 created
생성한 시크릿을 Pod
에서 사용해보자.
생성한 시크릿
을 파드의 환경변수
로 사용하는 파드 명세
를 작성한다.
# pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: secret-test-pod
spec:
containers:
- name: test-container
image: registry.k8s.io/busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- secretRef:
name: mysecret
restartPolicy: Never
🔹 STEP 1
에서 작성한 파드 명세를 통해 파드
를 생성한다.
$ kubectl apply -f pod.yaml
아래와 같이 명령어를 쳐보면, 생성된 Pod
가 환경변수 리스트를 로그로 출력한 것을 확인할 수 있다.
$ kubectl logs pods/secret-test-pod
...
USER=admin
PASSWORD=abcde
# 혹은 아래로 직접 출력
$ kubectl exec --stdin --tty pods/{pod 이름} -- /bin/bash
$ env
참고자료: