반응형
k8s에서 기밀 정보를 별도 리소스에 정의하고 파드에서 읽어들일 수 있는 시크릿에 대해 정리합니다.
※ 시크릿을 정의하고 있는 매니페스트는 base64로 인코드되어 있지만 암호화되어 있지 않아 매니페스트를 깃 저장소 등에 업로드하는 것은 불가능. 이러한 문제를 해경하기 위해 시크릿이 정의된 매니페스트를 암호화하는 kubesec/SealedSecret/ExternalSecret 같은 오픈 소스 소프트웨어도 있음.
시크릿 분류
종류 | 개요 |
Opaque | 일반적인 범용 용도 |
kubernetes.io/tls | TLS 인증서용 |
kubernetes.io/basic-auth | 기본 인증용 |
kubernetes.io/dockerconfig/json | 도커 레지스트리 인증 정보용 |
kubernetes.io/ssh-auth | SSH 인증 정보용 |
kubernetes.io/service-account-token | 서비스 어카운트 토큰용 |
bootstrap.kubernetes.io/token | Bootstrap 토큰용 |
일반적인 범용 용도의 시크릿(Opaque)
일반적인 스키마리스 시크릿을 생성하는 경우 타입에 Opaque를 지정함.
네 가지 생성 패턴
1. kubectl로 파일에서 값을 참조하여 생성(--from-file)
2. kubectl로 envfile에서 값을 참조하여 생성(--from-env-file)
3. kubectl로 직접 값을 전달하여 생성(--from-literal)
4. 매니페스트에서 생성(-f)
kubectl로 파일에서 값을 참조하여 생성(--from-file)
파일에서 값을 참조함으로써 생성.
※ 파일을 생성할 때 개행 코드가 들어가지 않도록 주의.
실행
# 시크릿에 포함된 값을 파일로 내보내기
$ echo -n "root" > ./username
$ echo -n "rootpassword" > ./password
# 파일에서 값을 참조하여 시크릿을 생성
# 파일에서 값을 참조하여 시크릿 생성
$ kubectl create secret generic --save-config sample-db-auth --from-file=./username --from-file=./password
secret/sample-db-auth created
# 시크릿 확인
kubectl get secrets sample-db-auth -o json | jq .data
{
"password": "cm9vdHBhc3N3b3Jk",
"username": "cm9vdA=="
}
# 보통은 base64로 인코드되어 있음.
$ kubectl get secrets sample-db-auth -o json | jq -r .data.username
cm9vdA==
# 일반 텍스트로 변경하려면 base64로 디코드가 필요함.
$ kubectl get secrets sample-db-auth -o json | jq -r .data.username | base64 --decode
root
kubectl로 envfile에서 값을 참조하여 생성(--from-env-file)
하나의 파일에서 일괄적으로 생성하는 경우에는 envfile로 생성하는 방법도 있음.
도커에서 --env-file 옵션을 사용하여 컨테이너를 기동한 경우, 이 방법을 사용하면 그대로 secret을 이관할 수 있음.
실행
# env-secret.txt
username=root
password=rootpassword
# envfile로 secret을 생성
$ kubectl create secret generic --save-config sample-db-auth --from-env-file ./env-secret.txt
secret/sample-db-auth created
kubectl로 직접 값을 전달하여 생성(--from-literal)
kubectl을 사용하여 직접 값을 전달함으로써 생성하려면 --from-literal 옵션을 사용하여 생성함.
실행
# 직접 옵션으로 값을 지정하여 secret을 생성
$ kubectl create secret generic --save-config sample-db-auth --from-literal=username=root --from-literal=password=rootpassword
secret/sample-db-auth created
매니페스트에서 생성(-f)
TLS 타입 시크릿
반응형
'클라우드,가상화 > K8S' 카테고리의 다른 글
k8s - DemonSet (1) | 2023.10.23 |
---|---|
k8s - ClusterIP (0) | 2023.07.17 |
k8s - kubernetes 클러스터 네트워크와 서비스 (0) | 2023.07.16 |
k8s - Deployment (0) | 2023.07.02 |
k8s - ReplicaSet (0) | 2023.07.02 |