Search

Secret

configmap과 동일하지만 기밀 데이터를 적을때 사용한다.
configmap과 차이는 기본적으로 데이터가 base64 인코딩이 되어있고 type필드에 적을 기밀 데이터 종류를 적어서 입력값 validation을 할 수 있다는 점이다.
아무 validation도 하지 않으려면 Opaque 를 사용하면 된다 (기본값이다)
apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque stringData: somedata: 'Hello, world!'
YAML
복사
여러 validation 값들이 있지만 대표적으로 tls는 다음과 같이 한다
apiVersion: v1 kind: Secret metadata: name: secret-tls type: kubernetes.io/tls data: tls.crt: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWJzQ0FnMyt ... tls.key: | RXhhbXBsZSBkYXRhIGZvciB0aGUgVExTIGNydCBmaWVsZA ...
YAML
복사
username.txt
admin
Plain Text
복사
password.txt
password
Plain Text
복사
# secret 생성 kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt # secret 상세 조회 kubectl describe secret/db-user-pass # -o yaml로 상세 조회 kubectl get secret/db-user-pass -o yaml # 저장된 데이터 base64 decode echo 'cGFzc3dvcmQ==' | base64 --decode
Shell
복사
alpine-env.yaml
apiVersion: v1 kind: Pod metadata: name: alpine-env spec: containers: - name: alpine image: alpine command: ["sleep"] args: ["100000"] env: - name: DB_USERNAME valueFrom: secretKeyRef: name: db-user-pass key: username.txt - name: DB_PASSWORD valueFrom: secretKeyRef: name: db-user-pass key: password.txt
YAML
복사
kubectl apply -f alpine-env.yml # env 확인 kubectl exec -it alpine-env -- env
Shell
복사