IT/CLOUD(AWS,Azure,GCP,Docker)

[k8s] 매니페스트 파일 작성 방법

알콩달콩아빠 2023. 8. 20. 19:09
728x90
반응형

매니페스트 파일

쿠버네티스에서는 클러스터 안에서 움직이는 컨테이너 애플리케이션이나 네트워크 설정, 배치 실행을 하는 잡 등과 같은 리소스를 작성합니다. 이와 같은 구체적인 설정 정보를 파일로 관리하는데, 이것이 매니페스트 파일(manifest file)입니다.

 예를 들어 'Nginx가 움직이는 컨테이너 이미지를 바탕으로 한 웹 프론트 서버를 클러스터 안에서 10개 실행' 하는 경우 다음과 같이 매니페스트 파일을 작성합니다.

#webserver.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: webserver
spec:
  replicas: 10
  selector:
    matchLabels:
      app: webfront
    template:
      metadata:
        labels:
          app: webfront
      spec:
        containers:
        - image: nginx
          name: webfront-container
          ports:
            - containerPort: 80

이 매니페스트 파일을 클러스터에 등록하려면 kubectl 명령을 사용합니다.

$ kubectl apply -f webserver.yaml

클라이언트의 명령을 받은 쿠버네티스 마스터의 API Service는 파일의 내용을 클러스터의 구성 정보인 etcd에 저장합니다. 쿠버네티스는 이 etcd에 기록된 정보를 바탕으로 리소스를 관리합니다.

매니페스트 파일로 정의한 리소스를 클러스터에서 삭제하려면 다음과 같이 명령어를 실행합니다.

$ kubectl delete -f webserver.yaml

 

매니페스트 파일 작성 방법

매니페스트 파일 작성 방법은 쿠버네티스 리소스에 따라 다르지만 기본은 다음과 같은 구조로 되어있습니다.

apiVersion: [1. API의 버전 정보]
kind: [2. 리소스의 종류]
metadata:
  name: [3. 리소스의 이름]
spec:
  [4. 리소스의 상세 정보]

1. API의 버전 정보

호출할 API의 버전을 지정합니다. 버전에 따라 다음과 같이 안정성과 지원 레벨이 다릅니다.

  • alpha(알파)
    앞으로의 소프트웨어 릴리스에서 예고 없이 호환성이 없는 방법으로 변경될 가능성이 있는 버전. 검증 환경에서만 사용할 것을 권장합니다. 또 기능 지원은 통지 없이 중지되는 경우도 있습니다. 'v1alpha1' 등으로 설정합니다.
  • beta(베타)
    충분히 테스트를 거친 버전입니다. 단, 기능은 삭제되지 않지만 상세 내용이 변경되는 경우가 있습니다. 때문에 실제 환경 이외에서 사용할 것을 권장합니다. 구체적으로는 'v2beta3' 등으로 설정합니다.
  • 안정판
    안정판 버전에는 'v1'과 같은 버전 번호가 붙습니다. 실제 환경에서 이용합니다.

이 외에도 KubernetesAPI 확장을 위한 API 그룹 등을 설정할 수 있습니다.

 

2. 리소스의 종류

쿠버네티스의 리소스 종류를 지정합니다. 리소스는 다음과 같은 것들이 있습니다.

구분 리소스
애플리케이션의 실행 Pod/ReplicaSet/Deployment
네트워크의 관리 Service/Ingress
애플리케이션 설정 정보의 관리 ConfigMap/Secrets
배치 잡의 관리 Job/CronJob

 

3. 리소스의 이름

리소스의 이름을 설정합니다. kubectl 명령 등으로 조작을  할 때 식별에 사용하므로 짧고 알기 쉬운 이름이 좋습니다.

 

4. 리소스의 상세 정보

리소스의 상세 정보를 설정합니다. 리소스의 종류에 따라 설정할 수 있는 값이 달라집니다.

예를 들어 Pod의 경우 다음과 같은 값을 설정합니다.

 

출처 : [k8s] 매니페스트 파일 작성 방법 (tistory.com)

728x90
반응형