비밀번호 같이 숨겨야 하는 데이터는 secret 으로 관리함
configmap처럼 2가지 방법으로 생성
imperative
kubectl create secret generic {이름} --from-literal={key}={value}
kubectl create secret generic {이름} --from-file={file경로}
declarative
kubectl craete -f {파일}
configmap과 다른 점은 secret의 데이터는 안전하게 보관해야 하므로 반드시 인코딩된 형식으로 데이터를 저장한다는 것
apiVersion: v1
kind: Secret
metadata:
name: app-secret
data:
DB_Host: "sjcvms=="
DB_User: "dkfjl=="
DB_Password: "1sdekj3=="
base64 인코딩 데이터 생성 방법
echo -n '{데이터}' | base64
base64 디코딩 방법
echo -n '{데이터}' | base64 --decode
echo -n 'bXlzcWw=' | base64 --decode
secret 확인방법
kubectl get secret
kubectl describe secret
value까지 확인하는 방법
kubectl get secret {이름} -o yaml
configmap와 사용법은 동일함
secret은 암호화되어있지 않음. 그래서 github에 올릴때는 주의 할 것
secret은 etcd에 암호화되어 저장되지 않음 (기본적으로 etcd 어떤 데이터도 암호화되지 않음, EncryptionConfiguration을 사용하면 암호화하여 저장함. 다음 강의에서 실습함)
클러스터에 접근 가능한 유저는 etcd, secret에도 접근이 가능하므로 관리자 권한급의 유저들만 secret에 접근할 수 있도록 설정해야함
현업에서는 일반적으로 서드파티 저장소를 사용하여 시크릿을 저장하고 관리함