1. 서문

구글 클라우드가 제공하는 인프라 배포 서비스인 Deployment Manager를 소개한다.


2. 구성요소

Deployment Manager는 다음과 같은 구성요소들을 가진다.

2.1. 구성

단일 배포에 사용하려는 리소스들을 기술하는 YAML 파일이다. 

resource: 섹션 이후에 리소스 목록이 나열된다.

예를 들면 다음과 같다.

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
    networkInterfaces:
    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT

2.2. 템플릿

어떠한 공유 가능한 부분을 추상화하여 템플릿을 만든 후 여러 배포에 재사용할 수 있다. 템플릿 파일은 파이썬이나 Jinja2로 작성한다.

템플릿을 가져오려면 상대/절대경로의 imports 섹션을 추가한다.

imports:
  - path: path/to/my_vm_template.jinja

만약 파일 이름이 길면 name 속성을 통한 별칭을 사용한다.

imports:
  - path: path/to/my_vm_template.jinja
    name: my_renamed_template.jinja

2.3. 리소스

리소스는 단일 API인데 리소스를 사용하려면 해당 리소스에 대한 유형을 지정해야 한다.

2.4. 유형

배포 관리자에서 리소스 생성 시에는 type을 지정한다.

기본 유형은 단일 API 리소스이며, 복합 유형을 만들 수 있다.

2.5. 매니페스트

각 배포에는 매니페스트가 있는데 배포의 리소스들을 설명하고 새 배포마다 자동으로 생성된다.

2.6. 배포


3. 주의사항

리소스를 만든 후 수정이 필요하다면 Deployment Manager를 사용한다. 만약 그냥(콘솔, gcloud) 수정하면 나중에 오류가 발생할 수 있다.

Deployment Manager를 통해 Private GKE를 만들고 관리한다면 배포에서 privateClusterConfig 옵션 및 ipAllocationPolicy 옵션을 사용한다.