•
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
복사