💡 ConfigMap
- 여러 가지 설정 정보들을 기록해두는 공간이다
- 설정값(환경변수, 설정파일 등)을 키-값 형태로 저장하고, Pod에 주입할 수 있게 해주는 오브젝트이다
- 여러 종류의 Pod에 동일하게 적용해야 하는 환경 변수가 있을 때
- Pod 안 애플리케이션의 동작을 바꾸고 싶을 때 (예: 타이틀, 포트, 외부 API 주소)
- 같은 컨테이너 이미지이지만 환경마다 설정을 다르게 하고 싶을 때
- 보안 민감도가 낮다 (예: 앱 이름, 공개 포트, 타이틀 등)
- 텍스트 데이터만 저장 가능하다
- Pod 안에서 환경 변수, 커맨드라인 인자, 파일 등으로 전달 가능하다
💡 Secret
- 비밀번호, API 토큰, 인증 정보 등 민감한 데이터를 저장하고, Pod에 안전하게 주입하는 오브젝트이다
- 데이터베이스 비밀번호, OAuth 토큰, 인증 키 등 보안이 필요한 값 전달할 때
- 모든 값은 Base64 인코딩해서 저장한다 (보안이 아닌 인코딩일 뿐)
- API 서버에서는 암호화 저장 가능하다 (옵션 설정 시)
- ConfigMap과 동일하게 환경변수, 파일 등으로 주입 가능하다
✔️ 디렉토리 구조
├─ `디렉토리명`
│ Dockerfile
│ sample-configmap.yaml
│ sample-pod.yaml
│ sample-secret.yaml
📁 실습을 위한 Dockerfile 작성
FROM nginx:1.27.0
ENV TITLE=NONE
CMD ["/bin/sh", "-c", "echo \"Hello, $TITLE\" > /usr/share/nginx/html/index.html && nginx -g 'daemon off;'"]
✅ GCP - Artifact Registry 에 'configmap-sample' 리포지토리 생성하기
✅ 도커, 레지스트리 연결
✅ 위에 작성한 도커 이미지 빌드, 푸시
참고 ⬇️
2025.04.18 - [IT/Cloud & DevOps] - 컨테이너 레지스트리란? GCP Artifact Registry 로 실습해보기
✅ pod 생성
apiVersion: v1
kind: Pos
metadata:
name: sample-pod
namespace: default
spec:
containers:
- name: nginx
image: asia-northeast3-docker.pkg.dev/rare-shadow-457105-s7/configmap-sample/configmap-sample:1.0.0
ports:
- containerPort: 80
kubectl apply -f sample-pod.yaml
kubectl port-forward sample-pod 8080:80
✅ Pod에서 환경변수 지정
env 추가하고 아래 명령어 실행
kubectl delete pod `Pod명`
kubectl apply -f `Pod파일명`
kubectl port-forward `Pod명` `호스트포트`:`컨테이너포트`
💡 Pod 마다 env 지정이 번거롭기 때문에 configmap을 만든다!!!
🔶 ConfigMap 만들어서 사용해보기
✅ sample-configmap.yaml 작성
apiVersion: v1
kind: ConfigMap
metadata:
name: sample-configmap
namespace: default
data:
PUBLIC_NAME: KUBE
kubectl apply -f sample-configmap.yaml
✅ sample-pod.yaml 수정
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
namespace: default
spec:
containers:
- name: nginx
image: asia-northeast3-docker.pkg.dev/rare-shadow-457105-s7/configmap-sample/configmap-sample:1.0.0
env:
- name: TITLE
valueFrom:
configMapKeyRef:
name: sample-configmap
key: PUBLIC_NAME
ports:
- containerPort: 80
kubectl delete pod `Pod명`
kubectl apply -f `Pod파일명`
kubectl port-forward `Pod명` `호스트포트`:`컨테이너포트`
🔶 Secret 만들어서 사용해보기
✅ sample-secret.yaml 작성
apiVersion: v1
kind: Secret
metadata:
name: sample-secret
namespace: default
data:
SECRET_NAME: MTIzNA==
SECRET_NAME BASE64 인코딩해서 넣어줘야 한다 <= 안하면 에러난다
kubectl apply -f sample-secret.yaml
kubectl get secrets
✅ sample-pod.yaml 수정
kubectl delete pod `Pod명`
kubectl apply -f `Pod파일명`
kubectl port-forward `Pod명` `호스트포트`:`컨테이너포트`
'IT > Cloud & DevOps' 카테고리의 다른 글
GKE 노드풀과 클러스터 오토스케일러 (0) | 2025.04.24 |
---|---|
Kubernetes의 Node와 Pod, Pod의 리소스 설정 (Request, Limit) (0) | 2025.04.24 |
ReplicaSet : 정해진 수의 Pod을 유지시켜주는 관리자 (0) | 2025.04.21 |
Pod : 쿠버네티스에서 컨테이너 실행하는 방법 (0) | 2025.04.21 |
컨테이너 레지스트리란? GCP Artifact Registry 로 실습해보기 (0) | 2025.04.20 |