[GCP] Cloud Deployment Manager 사용하기

Hailey·2020년 8월 14일
1

GCP

목록 보기
8/29
post-thumbnail

지금까지는 GCP 콘솔이나 Cloud Shell을 사용하여 GCP리소스를 만들었다. 만약에 서비스를 사용하는게 처음이거나 UI를 선호한다면 GCP 콘솔을 사용하는 것을 추천하고, 만약에 특정 서비스를 사용하는게 편리하거나 빠르게 커맨드 라인을 사용하여 리소스를 만들고 싶다면 Cloud Shell을 추천한다. 그러나 Deployment Manager의 사용은 한 발자국 더 내딛는 것을 도와줄 것이다.

1. Cloud Deployment Manager

Google Cloud 리소스의 생성 및 관리를 자동화하는 인프라 배포 서비스.

1-1. 특징

  • Repeatable deployment process
    동일한 결과를 내는 반복적인 배포가 가능하며 하나의 명령이나 클릭으로 전체 배포를 삭제할 수 있다.
  • Declarative language
  • Focus on the application
    각각의 리소스를 따로 배포하는 대신에, 어플리케이션이나 서비스를 구성하는 여러 리소스의 집합을 지정할 수 있다.
  • Parallel Deployment
  • Template-driven

1-2. 리소스의 종류

  • Instances, Instance templates and groups to VPC networks, Firewall rules, VPN tunnels, Cloud routers, and Load balancers

2. 구성
구성은 생성하려는 각 리소스와 해당 리소스 속성이 나열된 YAML 구문으로 작성된 파일이다. 구성에는 생성할 리소스 목록으로 이어지는 resources: 섹션이 포함되어야 하며,각 리소스에는 3개의 구성요소가 포함되어 있어야 한다.

  • name - my-vm, project-data-disk, the-test-network와 같은 이 리소스를 식별하기 위한 사용자 정의 문자열이다.
  • type - compute.v1.instance 및 compute.v1.disk와 같은 배포 중인 리소스 유형이다.
  • properties - 이 리소스 유형의 매개변수이다. zone: asia-east1-a 및 boot: 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

구성은 완전히 확장되거나 확장되지 않은 것으로 이루어져 있다. 완전히 확장된 구성은 템플릿 파일의 콘텐츠를 포함하여 배포의 모든 리소스 및 속성을 설명한다.

[확장되지 않은 구성 예시]

imports:
- path: vm_template.jinja

resources:
- name: vm-instance
  type: vm_template.jinja
  properties:
    zone: us-central1-a
    project: myproject
profile
Business & Software 💗🌎

0개의 댓글