[k8s] 시크릿 생성 및 적용 (feat: kustomization)

sang yun Lee·2023년 7월 8일
0

k8s

목록 보기
2/21

개요


파드 (Pod) 의 환경변수에 MY_SQL 비밀번호 를 넣어야 할 때가 있었다. MY_SQL 비밀번호 는 기밀사항이므로 외부에 노출을 최소화하는 방법을 찾아보았고, Secret 을 사용하는 방안을 찾았다.
아래의 그림에서와 같이 시크릿파드 에서 envvoulme 으로도 사용될 수 있다.

이미지 출처: https://www.macstadium.com/blog/how-to-k8s-kubernetes-secrets-made-simple

이번 글에는 envSecret 으로 작성하고 Pod 에 적용하는 방법을 공유하려 한다.

실습


🔸 시크릿 생성

🔹 STEP 1: 보안 파일 (.env) 생성

MY_SQL 비밀번호 같은 보안이 필요한 내용을 .env.secret 에 작성한다.

# .env.secret
USER=admin
PASSWORD=abcde

🔹 STEP 2: 시크릿 리소스 명세 파일 작성

kustomization.yaml 파일을 작성한다. ( 🔹STEP 1 에서 생성한 .env.secret 을 사용한다.)

# kustomization.yaml
generatorOptions:
  disableNameSuffixHash: true
secretGenerator:
- name: mysecret
  envs:
  - .env.secret

🔹 STEP 3: 시크릿 리소스 적용

kubectl apply -k . 을 통해 시크릿 리소스를 생성한다.

$ kubectl apply -k .
secret/db-user-pass-5k2878ch59 created

🔸 파드 생성 및 시크릿 적용

생성한 시크릿을 Pod 에서 사용해보자.

🔹 STEP 1: 파드 명세 작성

생성한 시크릿파드의 환경변수 로 사용하는 파드 명세 를 작성한다.

# 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 2: 파드 리소스 생성

🔹 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

참고자료:

0개의 댓글