매니페스트 파일(Manifest File)이란?
쿠버네티스에서는 YAML 파일을 작성하여 리소스를 정의하고 생성합니다. 이러한 YAML 파일을 매니페스트 파일(Manifest File)이라고 부릅니다.
매니페스트 파일의 역할
- 쿠버네티스 리소스 생성 및 관리:
- 파드(Pod), 서비스(Service), 볼륨(Volume), 디플로이먼트(Deployment) 등 다양한 리소스를 정의합니다.
- 리소스의 원하는 상태를 정의:
- 매니페스트 파일은 "어떤 리소스가 어떤 상태로 존재해야 하는지"를 표현(정의)합니다.
- 쿠버네티스는 이 파일을 기준으로 리소스가 정의된 상태를 유지하도록 관리합니다.
매니페스트 파일의 특징
- YAML 형식 사용:
- 읽기 쉽고 가독성이 높아, 복잡한 설정도 직관적으로 표현 가능합니다.
- 버전 관리 가능:
- Git과 같은 도구를 사용해 매니페스트 파일의 변경 이력을 관리할 수 있습니다.
- 반복적인 작업 간소화:
- 같은 파일을 여러 환경에서 재사용 가능하며, 수정된 매니페스트 파일을 다시 적용하여 리소스를 업데이트할 수 있습니다.
매니페스트 파일 vs Dockerfile
| 특징 | 매니페스트 파일 (쿠버네티스) | Dockerfile |
|---|
| 주요 목적 | 쿠버네티스 리소스(파드, 서비스 등)를 정의하고 관리 | 컨테이너 이미지를 생성하기 위한 설정 파일 |
| 사용 대상 | 쿠버네티스 클러스터 | Docker 컨테이너 |
| 포맷 | YAML | 텍스트 파일 |
| 역할 | 클러스터 내부에서 리소스 상태를 정의 | 컨테이너 이미지를 빌드하는 지침 제공 |
| 버전 관리 | 가능 (Git 등으로 관리) | 가능 |
매니페스트 파일 예시
nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx-container
image: nginx
- apiVersion: 리소스를 정의할 때 사용할 API 버전.
- kind: 정의할 리소스의 종류 (Pod, Service, Deployment 등).
- metadata: 리소스의 이름, 라벨 등 정보를 담음.
- spec: 리소스의 상세 설정.
매니페스트 파일의 장점
- 자동화 및 일관성: YAML 파일을 통해 정의된 설정을 기반으로 리소스를 자동 생성.
- 복제 및 배포 용이: 동일한 설정 파일을 여러 환경(개발, 스테이징, 프로덕션)에서 재사용 가능.
- 가시성 및 관리 용이: YAML 파일을 통해 리소스 구성을 명확히 이해하고 쉽게 관리.
정리
- 매니페스트 파일은 쿠버네티스의 구성 요소를 설정하고 관리하는 핵심 도구입니다.
- 즉, 매니페스트 파일은 쿠버네티스의 리소스를 정의하고 관리하기 위한 YAML 파일로, Docker의 Dockerfile처럼 핵심적인 역할을 합니다. 이를 통해 클러스터의 상태를 효율적으로 관리할 수 있습니다.