배포 파이프라인 및 대상 구성

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Google Cloud Deploy 구성 파일은 배포 파이프라인, 배포할 대상, 대상의 진행을 정의합니다.

대상 정의는 배포 파이프라인 구성 파일에 포함될 수 있으며 아니면 별도의 파일 하나 이상에 포함될 수도 있습니다. 일반적으로 배포 파이프라인 구성과 대상 구성이 모두 포함된 파일을 clouddeploy.yaml이라고 하고, 대상이 없는 파이프라인 구성을 delivery-pipeline.yaml이라고 합니다. 하지만 이러한 파일에 원하는 이름을 지정할 수 있습니다.

각 항목의 위치

Google Cloud Deploy는 두 가지 기본 구성 파일을 사용합니다.

별도의 파일일 수 있으며 배포 파이프라인 및 대상을 동일한 파일에 구성할 수도 있습니다.

전달 파이프라인 구성 파일의 구조

다음 구성에는 대상 정의가 포함됩니다.

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name:
 annotations:
 labels:
description:
suspended:
serialPipeline:
 stages:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name:
 annotations:
 labels:
description:
requireApproval:
#
# Runtimes
# one of the following runtimes:
gke:
 cluster:
 internalIp:
#
# or:
anthosCluster:
 membership:
#
# or:
run:
 location:
# (End runtimes. See documentation in this article for more details.)
#
executionConfigs:
- usages:
  - [RENDER | DEPLOY | VERIFY]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:

---

이 YAML에는 두 가지 주요 구성요소가 있습니다.

  • 주 배포 파이프라인 및 진행 상황

    구성 파일에는 여러 파이프라인 정의가 포함될 수 있습니다.

  • 타겟 정의

    이 예시에서는 편의상 하나의 타겟만 보여주지만 그 수에는 제한이 없습니다. 또한 별도의 파일에 타겟을 정의할 수 있습니다.

이러한 구성요소는 이 문서의 나머지 부분에 정의되어 있습니다.

파이프라인 정의 및 진행

기본 파이프라인 정의에는 name과 같은 파이프라인 메타데이터 외에 배포 시퀀스 순서의 대상 참조 목록도 포함됩니다. 즉, 첫 번째 타겟이 첫 번째 배포 타겟입니다. 해당 대상에 배포한 후 출시 버전을 승격하여 목록의 다음 대상으로 배포합니다.

다음은 대상 정의를 포함하지 않는 배포 파이프라인의 구성 속성입니다.

metadata.name

name 필드는 프로젝트 및 위치별로 고유해야 하는 문자열을 사용합니다.

metadata.annotations, metadata.labels

배포 파이프라인 구성에는 주석과 라벨이 포함될 수 있습니다. 주석과 라벨은 파이프라인이 등록된 후 배포 파이프라인 리소스와 함께 저장됩니다.

자세한 내용은 Google Cloud Deploy에 라벨 및 주석 사용을 참조하세요.

description

이 배포 파이프라인을 설명하는 임의의 문자열입니다. 이 설명은 Google Cloud 콘솔의 배포 파이프라인 세부정보에 표시됩니다.

suspended

불리언입니다. true인 경우 출시 버전을 생성, 승격, 롤백 또는 재배포하는 데 사용할 수 없도록 배포 파이프라인을 정지합니다. 또한 배포 파이프라인이 정지된 경우 해당 파이프라인에서 생성된 출시를 승인하거나 거부할 수 없습니다.

기본값은 false입니다.

serialPipeline

직렬 진행 배포 파이프라인 정의의 시작입니다. 이 스탠자는 필수 항목입니다.

stages

이 배포 파이프라인이 배포하도록 구성된 모든 타겟의 목록입니다.

목록은 원하는 배포 시퀀스의 순서대로 있어야 합니다. 예를 들어 dev, staging, production라는 타겟이 있는 경우 첫 번째 배포가 dev에 배포되고 최종 배포가 production에 배포되도록 동일한 순서로 나열합니다.

stages.targetId 필드를 해당하는 대상 정의의 metadata.name 필드 값으로 채웁니다. targetId 아래에 profiles를 포함합니다.

serialPipeline:
 stages:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:

targetId

이 배포 파이프라인 단계에서 사용할 특정 타겟을 식별합니다. 값은 타겟 정의metadata.name 속성입니다.

strategy

배포 전략을 지정하기 위한 속성을 포함합니다. 지원되는 유일한 전략은 standard:입니다.

strategy.standard.verifytrue로 설정하면 대상에서 배포 확인이 사용 설정됩니다. 배포 전략을 지정하지 않으면 확인이 false로 설정된 standard 배포 전략이 사용됩니다. 다음 배포 파이프라인 구성은 올바릅니다.

serialPipeline:
 stages:
 - targetId:
   profiles: []
 - targetId:
   profiles: []

verify

이 대상의 배포 확인 지원 여부를 나타내는 선택적 불리언입니다. 기본값은 false입니다.

배포 확인을 사용 설정하려면 skaffold.yamlverify 스탠자도 필요합니다. 이 속성을 제공하지 않으면 확인 작업이 실패합니다.

profiles

skaffold.yaml에서 0개 이상의 Skaffold 프로필 이름이 포함된 목록을 가져옵니다. Google Cloud Deploy는 출시 버전을 만들 때 skaffold render와 함께 프로필을 사용합니다. Skaffold 프로필에서는 단일 구성 파일을 사용하는 동안 대상 간에 구성을 변경할 수 있습니다.

타겟 정의

배포 파이프라인 정의 파일에는 타겟 정의가 포함될 수 있으며 별도의 파일에서 타겟을 지정할 수도 있습니다. 프로젝트 내에서 타겟 이름을 반복할 수 있지만 배포 파이프라인 내에서 고유해야 합니다.

여러 배포 파이프라인에서 타겟을 재사용할 수 있습니다. 하지만 단일 배포 파이프라인의 진행 내에서 타겟을 한 번만 참조할 수 있습니다.

GKE 대상

다음 YAML은 GKE 클러스터에 배포되는 대상을 구성하는 방법을 보여줍니다.

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     requireApproval:
     gke:
      cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
      internalIp:

     executionConfigs:
     - usages:
       - [RENDER | DEPLOY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:

metadata.name

이 대상의 이름입니다. 이 이름은 전역적으로 고유해야 합니다.

metadata.annotations, metadata.labels

타겟 구성은 Kubernetes 주석라벨을 지원하지만 Google Cloud Deploy에서는 이를 필요로 하지 않습니다.

주석 및 라벨은 대상 리소스와 함께 저장됩니다. 자세한 내용은 Google Cloud Deploy에 라벨 및 주석 사용을 참조하세요.

description

이 필드는 이 타겟의 사용을 설명하는 임의의 문자열을 사용합니다.

requireApproval

이 타겟으로 승격하려면 수동 승인이 필요한지 여부 true 또는 false일 수 있습니다.

이 속성은 선택사항입니다. 기본값은 false입니다.

gke

GKE 클러스터의 경우에만 해당하며 애플리케이션을 배포할 클러스터를 식별하는 리소스 경로입니다.

gke:
  cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
  • project_name

    클러스터가 있는 Google Cloud 프로젝트입니다.

  • location

    클러스터가 상주하는 위치입니다. 예를 들면 us-central1입니다. 클러스터는 영역(us-central1-c)일 수도 있습니다.

  • cluster_name

    Google Cloud 콘솔의 클러스터 목록에 표시되는 클러스터 이름입니다.

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

gke:
  cluster: projects/cd-demo-01/locations/us-central1/clusters/prod

실행 환경 속성에 대한 설명은 이 문서의 executionConfigs를 참조하세요.

internalIp

지정된 GKE 클러스터가 비공개 IP 주소를 사용하는지 여부입니다. 이 속성은 선택사항입니다. 기본적으로 Google Cloud Deploy는 클러스터에 공개적으로 사용 가능한 IP 주소를 사용합니다. 비공개 IP 주소가 있고 이를 사용하려면 true로 설정합니다.

Cloud Run 대상

다음 YAML은 Cloud Run 서비스에 배포하는 대상을 구성하는 방법을 보여줍니다.

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     requireApproval:
     run:
      location: projects/[project_name]/locations/[location]

     executionConfigs:
     - usages:
       - [RENDER | DEPLOY | VERIFY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:

metadata.name

이 대상의 이름입니다. 이 이름은 리전별로 고유해야 합니다.

metadata.annotations, metadata.labels

대상 구성은 주석 및 라벨을 지원하지만 Google Cloud Deploy에서는 이를 필요로 하지 않습니다.

주석 및 라벨은 대상 리소스와 함께 저장됩니다. 자세한 내용은 Google Cloud Deploy에 라벨 및 주석 사용을 참조하세요.

description

이 필드는 이 타겟의 사용을 설명하는 임의의 문자열을 사용합니다.

requireApproval

이 타겟으로 승격하려면 수동 승인이 필요한지 여부 true 또는 false일 수 있습니다.

이 속성은 선택사항입니다. 기본값은 false입니다.

run

Cloud Run 서비스의 경우에만 해당하며 서비스가 생성되는 위치입니다.

run:
  location: projects/[project_name]/locations/[location]
  • project_name

    서비스가 위치할 Google Cloud 프로젝트입니다.

  • location

    서비스가 상주할 위치입니다. 예를 들면 us-central1입니다.

실행 환경 속성에 대한 설명은 이 문서의 executionConfigs를 참조하세요.

Anthos 대상

Anthos 클러스터에 배포하기 위한 대상 구성은 GKE 대상의 대상 구성과 비슷합니다. 단, 속성이 gke.cluster가 아니라 anthosCluster.membership이고 리소스 경로가 다르며 internalIp를 적용할 수 없습니다.

anthosCluster:
  membership: projects/[project_name]/locations/global/memberships/[membership_name]
  • project_name

    Anthos 클러스터가 있는 Google Cloud 프로젝트입니다.

  • /location/global/

    클러스터가 등록된 위치입니다. 모든 경우에 global입니다.

  • membership_name

    Anthos 클러스터 멤버십의 이름입니다.

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

anthosCluster:
  membership: projects/cd-demo-01/locations/global/memberships/prod

Anthos 클러스터에 배포하는 방법에 대한 자세한 내용은 Anthos 사용자 클러스터에 배포를 참조하세요.

executionConfigs

이 타겟의 기본이 아닌 실행 환경을 지정하는 필드 집합입니다.

  • usages

    RENDERDEPLOY 또는 둘 다이며 대상에서 확인이 사용 설정된 경우 VERIFY일 수도 있습니다. 이 실행 환경을 사용하여 이 대상에 수행할 작업을 나타냅니다. 커스텀 실행 환경이 렌더링, 배포, 확인에 모두 사용되도록 하려면 다음과 같이 구성합니다.

    usages:
    - RENDER
    - DEPLOY
    - VERIFY
    

    확인이 파이프라인 단계에서 사용 설정되어 있으나 usages 스탠자에 VERIFY를 지정하지 않으면 Google Cloud Deploy가 확인에 기본 실행 환경을 사용합니다. 하지만 RENDERDEPLOY 또는 둘 다에 대한 커스텀 실행 환경이 있는 경우 반드시 VERIFY에 대한 실행 환경을 지정해야 합니다.VERIFYRENDER 또는 DEPLOY와 동일한 usages에 있거나 그 자체로 존재할 수 있습니다.

    RENDERDEPLOY 또는 둘 다 커스텀 실행 환경에 지정되지 않으면 usages.VERIFY를 지정할 수 없습니다.

  • workerPool

    사용할 작업자 풀의 구성입니다. 이 대상에 사용할 Cloud Build 작업자 풀을 식별하는 리소스 경로를 사용합니다. 예를 들면 다음과 같습니다.

    projects/p123/locations/us-central1/workerPools/wp123

    기본 Cloud Build 풀을 사용하려면 이 속성을 생략합니다.

    지정된 대상에 두 개의 workerPool이 있을 수 있습니다 (RENDER용과 DEPLOY용으로 각각 하나씩). 기본 풀을 구성할 때 대체 서비스 계정, 스토리지 위치 또는 둘 다 지정할 수 있습니다.

  • serviceAccount

    이 대상의 작업(RENDER 또는 DEPLOY)에 사용할 서비스 계정의 이름입니다.

  • artifactStorage

    기본 버킷 대신 이 대상의 작업(RENDER 또는 DEPLOY)에 사용할 Cloud Storage 버킷입니다.

  • executionTimeout

    선택사항. Cloud Build가 Google Cloud Deploy에 수행하는 작업의 제한 시간을 초 단위로 설정합니다. 기본값은 3600초(1시간)입니다.
    예: executionTimeout: "5000s"

지원되는 대체 구문

이 문서에 설명된 executionConfigs 구성은 새 구문입니다. 이전 구문도 계속 지원됩니다.

executionConfigs:
- privatePool:
    workerPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]
- defaultPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]

다음 단계