배포 파이프라인 구성

파이프라인 구성 파일은 타겟을 배포하는 Google Cloud Deploy 배포 파이프라인과 해당 타겟의 진행 상태를 정의합니다.

배포 파이프라인 구성 파일의 구조

Google Cloud Deploy의 기본 구성 파일은 배포 파이프라인 구성입니다.

이 파일에는 타겟 정의가 포함되거나 별도의 파일 또는 파일에 있을 수 있습니다. 일반적으로 배포 파이프라인 구성과 타겟 구성이 모두 포함된 파일을 clouddeploy.yaml이라고 하고, 타겟이 없는 파이프라인 구성을 delivery-pipeline.yaml라고 합니다. 하지만 이러한 파일은 원하는 이름을 지정합니다.

다음 구성에는 타겟 정의가 포함됩니다.

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

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

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

     ---

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

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

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

  • 타겟 정의

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

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

파이프라인 정의 및 진행

기본 파이프라인 정의에는 name와 같은 파이프라인 메타데이터 외에 배포 시퀀스 순서로 모든 타겟 목록이 포함됩니다. 즉, 첫 번째 타겟이 첫 번째 배포 타겟입니다. 타겟에 배포하고 출시를 승격하면 Google Cloud Deploy는 목록의 다음 타겟에 배포됩니다.

metadata.name

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

metadata.annotations, metadata.labels

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

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

description

이 배포 파이프라인을 설명하는 임의의 문자열입니다. 이 설명은 Google Cloud Console의 배포 파이프라인 세부정보에 나와 있습니다.

stages

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

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

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

serialPipeline:
 stages:
 - targetId:
   profiles: []

targetId:

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

profiles

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

타겟 정의

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

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

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

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

metadata.name

이 타겟의 이름입니다. 이 이름은 전역에서 고유해야 합니다.

metadata.annotations, metadata.labels

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

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

description

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

requireApproval

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

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

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 Console의 클러스터 목록에 표시되는 클러스터의 이름입니다.

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

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

executionConfigs

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

  • privatePool | defaultPool

    비공개 풀이든 기본 풀이든 사용할 작업자 풀의 구성입니다. 특정 타겟에는 RENDERDEPLOY용으로 각각 하나씩 있을 수 있습니다. defaultPool를 구성할 때 대체 서비스 계정이나 스토리지 위치 또는 둘 다 지정할 수 있습니다.

    • workerPool

      이 타겟에 사용할 Cloud Build 비공개 작업자 풀을 식별하는 리소스 경로입니다. 예를 들면 다음과 같습니다.

      projects/p123/locations/us-central1/workerPools/wp123할 수 있습니다.

      defaultPool에 대해 서비스 계정 또는 스토리지를 구성하는 경우 이 속성을 생략합니다. 이 속성은 privatePool에 필요하며 defaultPool에는 생략됩니다.

    • serviceAccount

      이 타겟에 대해 이 작업에 사용할 서비스 계정의 이름입니다.

    • artifactStorage

      이 타겟에 대한 이 작업에 기본 버킷 대신 사용할 Cloud Storage 버킷입니다.

  • usages

    RENDER 또는 DEPLOY 또는 둘 모두 이 실행 환경을 사용하여 이 타겟에 대해 수행할 작업을 나타냅니다. 렌더링 및 배포 모두에 커스텀 실행 환경을 사용하려면 다음과 같이 구성합니다.

    usages:
    - RENDER
    - DEPLOY
    

다음 단계