Kubernetes Secret

2026. 6. 13. 16:33Kubernetes


Ⅰ. Secret (시크릿)

Secret

(시크릿)
구분 설명
개념 컨테이너에서 사용하는 password, auth token, SSH key, 인증서 등 민감한 정보를

base64로 인코딩하여 저장 및 관리하는 Kubernetes 오브젝트
기능 중요한 데이터를 안전하게 보관하고 Pod에 환경 변수나 파일 형태로 전달할 수 있도록 함
사용 목적 애플리케이션 코드나 설정 파일에 보안 정보를 직접 포함하지 않고 외부에서 안전하게 주입하기 위함
데이터 형식 'key : base64 인코딩된 값' 형태
저장 방식
etcd에 저장
필요 시 서버 측 암호화 (encryption at rest) 설정 가능
특징 Secret 데이터는 ConfigMap과 달리, 보안이 필요한 민감 정보 저장용
ConfigMap은 일반 설정용, Secret은 인증 및 암호용으로 구분
Secret 데이터는 etcd에 인코딩되어 저장되며 API 접근 권한이 있는 사용자만 조회 가능
Secret 용량이 너무 클 경우, kube-apiserver, kubelet 메모리를 많이 점유할 수 있음
개별 Secret의 최대 크기는 1MB로 제한됨
주의사항 base64 인코딩은 암호화가 아님 -> 필요 시 KMS 등 추가 암호화 필요
Secret이 노출되지 않도록 RBAC (Role-Based Access Control) 설정 필수

 

 

echo -n wadmin | base64 명령을 통해 출력을 Base64 인코딩으로 변환

 

cd kube/12 명령을 통해 홈 디렉터리에서 kube/12 디렉터리로 이동

 

ls 명령을 통해 해당 디렉터리 내 목록 확인

 

cd secret/ 명령을 통해 kube/12 디렉터리에서 kube/12/secret 디렉터리로 이동

 

ls 명령을 통해 해당 디렉터리 내 목록 확인

 

mkdir –p config.dir 명령을 통해 config.dir 생성

 

(-p 옵션으로 인해 상위 디렉터리가 없을 경우, 함께 생성)

 

ls 명령을 통해 잘 생성되었는지 확인

 

 

vi config.dir/nginx.conf 명령을 통해 vi 편집기 사용하여 config.dir 디렉터리에 nginx.conf 파일 생성 및 내용 입력

 

 

# test-secret 리소스 생성 (Secret)

 

kubectl create secret generic test-secret \ --from-literal=INTERVAL=2\

 

--from-file=config.dir/nginx.conf 명령을 통해 일반형 (Opaque) Secret 리소스 생성

 

kubectl get secrets 명령을 통해 잘 생성되었는지 확인

 

kubectl describe secrets test-secret 명령을 통해 test-secret 리소스 상세 정보 확인

 

kubectl get secrets test-secret –o yaml 명령을 통해 Secret의 YAML 원본 형식 출력

 

 

# test-secret 리소스와 그와 관련된 것 모두 삭제

 

kubectl delete secrets test-secret 명령을 통해 test-secret 리소스와 그와 관련된 것 모두 삭제

 

echo -n weadmin | base64 명령을 통해 인코딩 확인

 

echo -n abcd1234 | base64 명령을 통해 인코딩 확인

 

 

vi test-secret.yml 명령을 통해 vi 편집기 사용하여 test-secret.yml 파일 생성 및 내용 입력

 

 

# test-secret 리소스 생성 (Secret)

 

kubectl create –f test-secret.yml 명령을 통해 test-secret.yml 파일 사용하여 test-secret 리소스 생성

 

kubectl get secrets 명령을 통해 잘 생성되었는지 확인

 

kubectl describe secrets test-secret 명령을 통해 test-secret 리소스의 상세 정보 출력

 

kubectl get secrets test-secret –o yaml 명령을 통해 Secret을 YAML 형식으로 출력‘

 

 

# test-secret 리소스와 그와 관련된 것 모두 삭제

 

kubectl delete secrets test-secret 명령을 통해 test-secret 리소스와 그와 관련된 것 모두 삭제

 

echo -n dbadmin | base64 명령을 통해 인코딩 확인

 

echo -n abcd1234 | base64 명령을 통해 인코딩 확인

 

 

cd ../mongodb/ 명령을 통해 secret 디렉터리에서 mongodb 디렉터리로 이동

 

vi mongodb-secret.yml 명령을 통해 vi 편집기 사용하여 mongodb-secret.yml 파일 생성 및 내용 입력

 

 

# mongodb-secret 리소스 생성 (Secret)

 

kubectl create –f mongodb-secret.yml 명령을 통해

 

mongodb-secret.yml 파일 이용하여 mongodb-secret 리소스 생성

 

kubectl get secrets mongodb-secret 명령을 통해 잘 생성되었는지 확인

 

kubectl describe secrets mongodb-secret 명령을 통해 mongodb-secret 리소스 상세 정보 확인

 

kubectl get secrets mongodb-secret –o yaml 명령을 통해 Secret을 YAML 형식으로 출력

 

 

vi mongodb-deploy.yml 명령을 통해 vi 편집기 사용하여 mongodb-deploy.yml 파일 생성 및 내용 입력

 

 

# mongodb-deploy 리소스 생성 (Deployment)

 

kubectl create –f mongodb-deploy.yml 명령을 통해

 

mongodb-deploy.yml 파일 이용하여 mongodb-deploy 리소스 생성

 

kubectl get pod –o wide 명령을 통해 잘 생성되었는지 확인

 

 

# mongodb 리소스 내부 컨테이너 동작

 

kubectl exec mongodb-84d7c8b6dd-6sqtq — env 명령을 통해 

 

mongodb-84d7c8b6dd-6sqtq  리소스 내부 컨테이너의 환경 변수 내역 확인

 

 

vi mongodb-deploy.yml 명령을 통해 vi 편집기 사용하여 mongodb-deploy.yml 파일 내용 수정

 

 

# mongodb-deploy 리소스 재생성

 

kubectl create –f mongodb-deploy.yml 명령을 통해

 

mongodb-deploy.yml 파일 이용하여 mongodb-deploy 리소스 재생성

 

kubectl get pod svc,pod,ep –o wide 명령을 통해 잘 생성되었는지 확인

 

 

vi mongodb-express-config.yml 명령을 통해 vi 편집기 사용하여

 

mongodb-express-config.yml 파일 생성 및 내용 입력

 

 

# mongodb-express-config 리소스 생성 (ConfigMap)

 

kubectl create –f mongodb-express-config.yml 명령을 통해

 

mongodb-express-config.yml 파일 이용하여 mongodb-express-config 리소스 생성

 

kubectl get configmaps 명령을 통해 리소스가 잘 생성되었는지 확인

 

kubectl describe configmaps mongodb-express-configmap 명령을 통해

 

mongodb-express-configmap 리소스 상세 정보 확인

 

 

# mongodb-express.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

kubectl delete –f mongodb-express.yml 명령을 통해

 

mongodb-express.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

 

# mongodb-express-config.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

kubectl delete -f mongodb-express-config.yml 명령을 통해

 

mongodb-express-config.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

 

# mongodb-deploy.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

kubectl delete -f mongodb-deploy.yml 명령을 통해

 

mongodb-deploy.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

 

# mongodb-secret.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

kubectl delete -f mongodb-secret.yml 명령을 통해 mongodb-secret.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

 

 

 

 

'Kubernetes' 카테고리의 다른 글

Kubernetes 명령어  (0) 2026.06.13
Kubernetes Storage  (0) 2026.06.13
Kubernetes ConfigMap  (0) 2026.06.13
Kubernetes Label과 Annotation  (0) 2026.06.13
Kubernetes Ingress  (0) 2026.06.13