2026. 6. 13. 16:33ㆍKubernetes
Ⅰ. 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 |