NodeGroup
- 노드 그룹은 쿠버네티스 클러스터에서 노드들을 그룹화하여 관리하는 개념이다.
- 주로 클라우드 환경(AWS, GCP, Azure)에서 노드 풀(Node Pool)형태로 제공된다.
- 동일한 설정을 가진 여러 개의 노드를 그룹으로 묶어 자동 확장 및 배포 전략을 효율적으로 관리할 수 있다.
활용
- AWS EKS : Managed Node Group을 사용하여 특정 인스턴스 타입, AMI, Auto Scaling 정책을 적용 가능
- GKE : Node Pool을 사용하여 서로 다른 VM 사양의 노드를 운영 가능
- On-Premise : 직접 노드들을 그룹화하여 특정 워크로드를 할당
Namespace
- 쿠버네티스에서 리소스를 논리적으로 분리하는 데 사용되는 가상 클러스터 개념
- 동일한 클러스터 내에서도 여러 팀 또는 프로젝트를 격리하여 운영할 수 있음
- 기본적으로 default, kube-system, kube-public 네임스페이스가 제공됨
활용
- 서로 다른 프로젝트 또는 팀을 위한 네임스페이스 분리 (dev, staging, prod)
- 네임스페이스 기반 리소스 할당 및 권한 제어
- 모니터링 및 네트워크 정책 적용 시 유용
명령어 예시
# 네임스페이스 목록 조회
kubectl get namespaces
# 새로운 네임스페이스 생성
kubectl create namespace my-namespace
# 특정 네임스페이스에서 리소스 조회
kubectl get pods -n my-namespace
ConfigMap
- 애플리케이션이 사용하는 환경 설정 데이터를 Key-Value 형태로 저장하는 리소스
- 일반적으로 환경 변수, 설정 파일 등을 저장하는 용도로 활용됨
- Secret과 달리 민감하지 않은 데이터를 저장한다.
활용
- 애플리케이션의 환경 변수 설정
- ConfigMap을 마운트하여 설정 파일을 컨테이너에 주입
- 여러 파드에서 공통 설정을 공유
예시
kubectl create configmap app-config --from-literal=APP_ENV=production
kubectl get configmap
apiVersion: v1
kind: Pod
metadata:
name: configmap-demo
spec:
containers:
- name: app
image: my-app
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: app-config
key: APP_ENV
Secret
- 민감한 데이터를 저장하고 관리하는 리소스
- 기본적으로 Base64 인코딩되어 저장되지만, 보안 강화를 위해 외부 KMS(Key Management Service)와 연동 가능
활용
- 데이터베이스 접속 정보 저장
- API 키 또는 인증서 관리
- 볼륨 마운트 또는 환경 변수로 주입하여 사용
예시
echo -n "mypassword" | base64
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=mypassword
kubectl get secrets
apiVersion: v1
kind: Pod
metadata:
name: secret-demo
spec:
containers:
- name: app
image: my-app
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password