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 |