728x90
쿠버네티스를 사용하면서 가장 기본이 되는 것은 바로 매니페스트(Manifest) 파일입니다. 매니페스트는 쿠버네티스 클러스터에 배포하고자 하는 객체의 명세를 정의하는 YAML 파일입니다. 이 글에서는 주요 매니페스트 구성 요소들을 자세히 살펴보겠습니다.
1. 기본 구조
모든 쿠버네티스 매니페스트는 다음과 같은 기본 필드를 포함합니다:
apiVersion: v1 # 쿠버네티스 API 버전
kind: Pod # 리소스의 종류
metadata: # 메타데이터
name: my-pod # 객체의 이름
namespace: default # 네임스페이스
spec: # 객체의 명세
# 실제 설정 내용
2. 주요 리소스 종류별 예시
2.1 Pod
가장 기본적인 배포 단위인 Pod의 예시입니다:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
resources:
limits:
memory: "128Mi"
cpu: "500m"
2.2 Deployment
애플리케이션의 선언적 업데이트를 관리하는 Deployment 예시:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
728x90
2.3 Service
Pod들에 대한 네트워크 서비스를 정의하는 Service 예시:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: LoadBalancer
2.4 ConfigMap
설정 정보를 저장하는 ConfigMap 예시:
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
DATABASE_URL: "mongodb://localhost:27017"
API_KEY: "your-api-key"
2.5 Secret
민감한 정보를 저장하는 Secret 예시:
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
type: Opaque
data:
username: dXNlcm5hbWU= # base64로 인코딩된 값
password: cGFzc3dvcmQ= # base64로 인코딩된 값
3. 주요 설정 항목 상세 설명
3.1 메타데이터 (metadata)
메타데이터 섹션에서 설정할 수 있는 주요 항목들:
- name: 객체의 이름
- namespace: 객체가 속할 네임스페이스
- labels: 객체를 구분하고 선택하는데 사용되는 키-값 쌍
- annotations: 추가 정보를 기록하는 키-값 쌍
3.2 스펙 (spec)
스펙 섹션의 주요 설정 항목들:
- 컨테이너 설정
- image: 사용할 도커 이미지
- ports: 노출할 포트
- resources: CPU, 메모리 등 리소스 제한
- env: 환경 변수
- volumeMounts: 마운트할 볼륨
- 볼륨 설정
- volumes: 사용할 볼륨 정의
- persistentVolumeClaim: 영구 스토리지 요청
- 네트워크 설정
- serviceType: ClusterIP, NodePort, LoadBalancer 등
- ingress: 외부 접근 규칙
4. 실전 매니페스트 작성 팁
- 리소스 요구사항 명시
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
- 헬스체크 설정
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
- 환경변수 설정
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config
key: DATABASE_URL
5. 마무리
쿠버네티스 매니페스트는 인프라스트럭처를 코드로 관리할 수 있게 해주는 강력한 도구입니다. 위에서 설명한 기본 구조와 예시들을 바탕으로 실제 운영 환경에 맞는 매니페스트를 작성하시기 바랍니다.
주의할 점:
- 항상 최신 API 버전을 확인하세요
- 리소스 제한을 반드시 설정하세요
- 적절한 레이블과 어노테이션을 사용하세요
- 시크릿 데이터는 반드시 인코딩하세요
728x90
'IT 개발 > 클라우드' 카테고리의 다른 글
[쿠버네티스] StatefulSet 완벽 가이드 (51) | 2025.02.09 |
---|---|
[쿠버네티스] 멀티 컨테이너 Pod 구성 가이드 (50) | 2025.02.08 |
[쿠버네티스] 쿠버네티스 클러스터 관리와 보안: 운영자 가이드 (70) | 2025.02.06 |
[쿠버네티스] 쿠버네티스 실전 배포 시나리오와 운영 팁: 현장 가이드 (69) | 2025.02.05 |
[쿠버네티스] 쿠버네티스 핵심 개념 마스터하기: 실전 가이드 (87) | 2025.02.04 |