공부/Kubernetes

secret 생성 시 주의사항

토고미 2021. 11. 17. 14:15

redis 관련 업무를 하다가 환경변수를 secretKeyRef을 이용할 상황이 생겼다.

env:
- name: REDIS_PASSWORD
  valueFrom:
    secretKeyRef:
      name: redis-secret
      key: redis-password

그런데 아무리 제대로 해봐도 에러가 나는 것이다.

 

열심히 구글링 한 결과, 원인은 개행문자였다.

 

아래 두 시크릿을 만들어보자.

apiVersion: v1
kind: Secret
metadata:
  name: sample-secret
type: Opaque
stringData:
  sample-key: |
    sample-value
---
apiVersion: v1
kind: Secret
metadata:
  name: sample-secret2
type: Opaque
stringData:
  sample-key: sample-value

두 시크릿을 생성한 뒤에, 직접 확인해보면..

kubectl get secret sample-secret sample-secret2 -o yaml

아래와 같이 나온다

...
# sample-secret
- apiVersion: v1
  data:
    sample-key: c2FtcGxlLXZhbHVlCg==
...
# sample-secret2
- apiVersion: v1
  data:
    sample-key: c2FtcGxlLXZhbHVl
...

차이를 알겠는가? 두 값을 base64 디코딩 해보면

첫 번째 시크릿 값은 "sample-value\n"이고, 두 번째 시크릿 값은 "sample-value"이다.

 

즉, 의도하지 않은 개행문자가 들어간다는 것이다.

 

따라서, secretKeyRef를 쓰고 싶다면, 혹은 그 외에도 정확한 값을 주고 싶다면 반드시 '|' 문자를 쓰지말고 inline에 그대로 한줄로 적어서 시크릿을 만들어야한다.

 

 

'공부 > Kubernetes' 카테고리의 다른 글

ubuntu에 특정 k8s, crio 버전 설치하기  (0) 2022.01.03
k8s QoS Class  (0) 2022.01.03
k8s 공식문서 contribution 메인 브랜치에 merge!!  (0) 2021.10.22
첫 PR 성공적으로 merge!!  (0) 2021.09.24
첫 PR 날려봤다  (0) 2021.09.16