Deployment Manager 기초

다음 구성요소는 Deployment Manager의 기초입니다.

구성

구성은 단일 배포에 사용하려는 모든 리소스를 기술합니다. 구성은 생성하려는 각 리소스와 해당 리소스 속성이 나열된 YAML 구문으로 작성된 파일입니다. 구성에는 생성할 리소스 목록으로 이어지는 resources: 섹션이 포함되어야 합니다.

각 리소스에는 3개의 구성요소가 포함되어 있어야 합니다.

  • name - my-vm , project-data-disk, the-test-network와 같은 이 리소스를 식별하기 위한 사용자 정의 문자열입니다.
  • type - compute.v1.instancecompute.v1.disk와 같은 배포 중인 리소스 유형입니다. 기본 리소스 유형에 대한 설명 및 목록은 지원되는 리소스 유형 문서를 참조하세요.
  • properties - 이 리소스 유형의 매개변수입니다. zone: asia-east1-aboot: true와 같은 유형의 속성과 일치해야 합니다.

다음은 예시 구성입니다.

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

템플릿

구성은 개별 빌딩 블록으로 추상화된 구성 파일의 필수 부분인 템플릿을 포함할 수 있습니다. 템플릿을 만든 후에는 필요에 따라 여러 배포에서 재사용할 수 있습니다. 마찬가지로, 매우 비슷한 속성을 공유하는 구성을 재작성하는 경우 공유된 부분을 템플릿으로 추상화할 수 있습니다. 템플릿은 개별 구성 파일보다 훨씬 유연하며, 배포 간 이동을 용이하게 하기 위해 사용됩니다.

템플릿 파일은 Python 또는 Jinja2로 작성됩니다. Deployment Manager 시스템은 각 템플릿을 재귀적으로 해석하고 결과를 구성 파일 내에 인라인으로 추가합니다. 따라서 각 템플릿을 해석하면 결과적으로 구성 파일 자체에 대해 위에 정의된 것처럼 리소스에 대해 동일한 YAML 구문이 생성됩니다.

간단한 템플릿을 만들려면 기본 템플릿 만들기를 참조하세요.

구성은 완전 확장 또는 비확장으로 기술됩니다. 완전 확장 구성은 가져온 템플릿 파일의 모든 콘텐츠를 포함하여, 배포의 모든 리소스 및 속성을 기술합니다. 예를 들어 다음과 같이 템플릿을 사용하는 비확장 구성을 제공할 수 있습니다.

imports:
- path: vm_template.jinja

resources:
- name: vm-instance
  type: vm_template.jinja
  properties:
    zone: us-central1-a
    project: myproject

확장 후에는 구성 파일에 다음과 같이 모든 템플릿의 콘텐츠가 포함됩니다.

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

리소스

리소스는 단일 API 리소스를 나타냅니다. 리소스는 Google에서 관리되는 기본 유형으로 제공된 API 리소스 또는 유형 공급자에서 제공되는 API 리소스일 수 있습니다. 예를 들어 Compute Engine 인스턴스도 단일 리소스이고, Cloud SQL 인스턴스도 단일 리소스입니다.

리소스를 지정하려면 해당 리소스에 대해 유형을 제공합니다. 유형에 대한 자세한 내용은 아래의 유형 섹션을 참조하세요.

유형

배포 관리자에서 리소스를 만들려면 type을 지정해야 합니다. 유형은 단일 API 리소스(기본 유형)이거나, 배포 중에 생성되는 리소스 집합(복합 유형)을 나타낼 수 있습니다.

예를 들어 Compute Engine VM 인스턴스를 만들려면 다음과 같이 구성에서 해당 기본 유형을 지정합니다.

resources:
- name: the-first-vm
  type: compute.v1.instance # The type of resource to deploy
  ...

Deployment Manager는 Google에서 유지관리되고, 즉시 사용 가능한 기본 유형 목록을 제공합니다. 이러한 유형 목록은 지원되는 리소스 유형 및 속성 문서를 참조하세요.

기본 유형 및 유형 공급자

기본 유형은 단일 기본 리소스를 만듭니다. 예를 들어 Google 소유 기본 유형에는 compute.v1.instance, storage.v1.bucket, sqladmin.v1beta4.database가 포함되며 이 모든 유형은 각각 Compute Engine V1 API, Cloud Storage V1 API, Cloud SQL v1beta4 Admin API로 제공됩니다.

기본 유형은 CRUD(만들기, 읽기, 업데이트, 삭제) 작업을 지원하는 RESTful API에서 지원됩니다. 또한 Google 소유의 유형만으로는 요구를 충족할 수 없는 경우 유형 공급자를 추가하여 추가 기본 유형을 만들 수 있습니다. 유형 공급자를 만들면 API의 모든 리소스가 개발자가 사용할 수 있는 기본 유형으로 노출됩니다. 유형 공급자를 만들려면 API 설명어 문서(OpenAPI 사양 또는 Google Discovery 가능)를 제공하고, API에 필요한 모든 입력 매핑을 조정하고, Deployment Manager에 유형을 등록해야 합니다. 만든 후에는 개발자 및 프로젝트 액세스 권한이 있는 다른 사용자가 공급자로 제공된 유형을 사용할 수 있습니다.

유형 공급자를 추가할 때는 API에서 제공되고 CRUD(만들기, 읽기, 업데이트, 삭제) 작업이 포함된 RESTful 인터페이스로 지원되는 모든 리소스가 배포에서 사용 가능한 유형으로 노출됩니다.

자체 유형 공급자를 만드는 것은 고급 시나리오에 해당하므로 개발자가 통합하려는 API에 매우 익숙한 경우에만 이를 수행하는 것이 좋습니다.

유형 공급자를 만드는 방법은 Deployment Manager와 통합을 참조하세요.

템플릿 또는 구성에서 기본 유형을 호출할 때는 유형에 따라 다음 구문 중 하나를 사용합니다.

  • Google에서 관리되는 기본 유형의 경우 다음을 사용합니다.

    type: [API].[VERSION].[RESOURCE]
    

    예를 들면 compute.v1.instance입니다.

  • Google에서 관리되는 유형 공급자(베타)의 경우 다음을 사용합니다.

    type: gcp-types/[PROVIDER]:[RESOURCE]
    

    지원되는 유형의 공급자 목록은 지원되는 Google Cloud 유형 공급자를 참조하세요.

  • 유형 공급자에서 제공되는 기본 유형의 경우 다음을 사용합니다.

    type: [PROJECT_ID]/[TYPE_PROVIDER]:[COLLECTION]
    

    여기에서 [COLLECTION]은 배포할 API 리소스의 경로입니다.

복합 유형

복합 유형에는 함께 작동하도록 미리 구성된 하나 이상의 템플릿이 포함됩니다. 이러한 템플릿은 배포에 배포될 때 기본 유형 집합으로 확장됩니다. 복합 유형은 기본적으로 Deployment Manager에 추가할 수 있는 호스팅된 템플릿입니다. 솔루션을 쉽게 재사용할 수 있도록 공통 솔루션을 위한 복합 유형을 만들거나 이후에 재사용할 수 있는 복합 설정을 만들 수 있습니다.

예를 들어 네트워크 부하 분산된 관리형 인스턴스 그룹을 배포하는 복합 유형을 만들 수 있습니다. 네트워크 부하 분산기는 여러 Google Cloud 리소스와 리소스 간 동일 구성이 필요하므로, 구성에서 이러한 리소스를 한 번만 설정하고 Deployment Manager에 유형을 등록할 수 있습니다. 이후에는 개발자 및 프로젝트 액세스 권한이 있는 다른 사용자가 이후 구성에서 이 유형을 호출하고 배포할 수 있습니다.

구성에서 복합 유형을 호출하려면 다음을 사용합니다.

type: [PROJECT_ID]/composite:[TYPE_NAME]

예를 들면 다음과 같습니다.

resources:
- name: my-composite-type
  type: myproject/composite:example-composite-type

복합 유형을 만드는 방법은 Deployment Manager에 복합 유형 추가를 참조하세요.

매니페스트

매니페스트는 가져온 템플릿 전체를 포함하여 개발자가 제공한 원래의 구성을 포함하며, Deployment Manager에서 생성된 완전 확장 리소스 목록도 포함하는 읽기 전용 객체입니다. 배포를 업데이트할 때마다, Deployment Manager는 새로운 배포 상태가 반영되도록 새로운 매니페스트 파일을 생성합니다. 배포 문제를 해결할 때는 매니페스트를 확인하는 것이 유용합니다.

자세한 내용은 매니페스트 보기를 참조하세요.

배포

배포는 구성을 사용하여 함께 배포 및 관리되는 리소스 모음입니다.

자세한 내용은 배포 만들기를 참조하세요.

다음 단계