k8s

CKA 준비 (17) Secret 운영

Joon0464 2022. 6. 11. 16:22

이 게시물은 아래 강의를 참고 하였습니다.
참고 강의 https://www.youtube.com/watch?v=KdATmTulf7s&list=PLApuRlvrZKojqx9-wIvWP3MPtgy2B372f&index=1 

 

 

 

이론)

Secret

- Key Value 타입으로 데이터가 저장된다.

- 데이터가 BASE64로 인코딩된 ASCII text가 들어간다.

- Binary Data는 ASCII text로 변환되어 BASE64로 인코딩되어 저장된다.

- BASE64는 암호화는 아니다.

 

문제)

Create a kubernetes secret and expose using a file in the pod.

1. Create a kubernetes Secret as follows:

- Name : super-secret

- DATA : password=secretpass

2. Create a Pod named pod-secrets-via-file, using the redis image, which mounts a secret named super-secret at /secrets.

3. Create a second Pod named pod-secrets-via-env, using the redis image, which exports password as PASSWORD

 

답안)

- Secret 생성

https://kubernetes.io/docs/concepts/configuration/secret/#use-cases 에서 Secret 생성 명령어 참고

$ sudo kubectl create secret generic super-secret --from-literal=password=secretpass

생성 완료
value가 보여지지 않는다.
BASE64로 인코딩 되어있다.

- pod-secrets-via-file 파드 생성
https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod

다음 링크를 참조하여 volume mount 부분을 복사한다.

$ sudo vi pod-secret-via-file.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-secrets-via-file
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/secrets"
  volumes:
  - name: foo
    secret:
      secretName: super-secret

$ sudo kubectl apply -f pod-secret-via-file.yaml

정상적으로 생성된 것 확인

- pod-secrets-via-env

https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables 를 참고

다음 yaml 파일 복사

 

$ sudo vi pod-secret-via-env.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-secrets-via-env
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: PASSWORD
        valueFrom:
          secretKeyRef:
            name: super-secret
            key: password

$ sudo kubectl apply -f pod-secret-via-env.yaml

정상적으로 생성되었는지 확인