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:
multiTarget:
targetIds: []
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.verify
를 true
로 설정하면 대상에서 배포 확인이 사용 설정됩니다. 배포 전략을 지정하지 않으면 확인이 false
로 설정된 standard
배포 전략이 사용됩니다.
다음 배포 파이프라인 구성은 올바릅니다.
serialPipeline:
stages:
- targetId:
profiles: []
- targetId:
profiles: []
verify
이 대상의 배포 확인 지원 여부를 나타내는 선택적 불리언입니다. 기본값은 false
입니다.
배포 확인을 사용 설정하려면 skaffold.yaml
에 verify
스탠자도 필요합니다. 이 속성을 제공하지 않으면 확인 작업이 실패합니다.
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:
multiTarget:
targetIds: []
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
이 필드는 이 타겟의 사용을 설명하는 임의의 문자열을 사용합니다.
multiTarget.targetIds: []
이 속성은 선택사항이며 동시 배포에 사용할 멀티 대상을 구성하는 데 사용됩니다.
값은 쉼표로 구분된 하위 대상 목록입니다.
하위 대상은 일반 대상으로 구성되며, multiTarget
속성을 포함하지 않습니다.
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
멀티 대상 구성 시 gke
속성을 생략합니다.
대신 GKE 클러스터는 해당하는 하위 대상 내부에 구성됩니다.
실행 환경 속성에 대한 설명은 이 문서의 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:
multiTarget:
targetIds: []
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
이 필드는 이 타겟의 사용을 설명하는 임의의 문자열을 사용합니다.
multiTarget.targetIds: []
이 속성은 선택사항이며 동시 배포에 사용할 멀티 대상을 구성하는 데 사용됩니다.
값은 쉼표로 구분된 하위 대상 목록입니다.
하위 대상은 일반 대상으로 구성되며, multiTarget
속성을 포함하지 않습니다.
requireApproval
이 타겟으로 승격하려면 수동 승인이 필요한지 여부입니다. true
또는 false
일 수 있습니다.
이 속성은 선택사항입니다. 기본값은 false
입니다.
동시 배포를 구성할 때 하위 대상이 아닌 멀티 대상에 대한 승인을 요구할 수 있습니다.
run
Cloud Run 서비스의 경우에만 해당하며 서비스가 생성되는 위치입니다.
run:
location: projects/[project_name]/locations/[location]
project_name
서비스가 위치할 Google Cloud 프로젝트입니다.
location
서비스가 상주할 위치입니다. 예를 들면
us-central1
입니다.
[multi-target]을 구성할 때 run
속성을 생략합니다. 대신 Cloud Run 서비스의 위치는 해당 하위 타겟 내에 구성됩니다.
실행 환경 속성에 대한 설명은 이 문서의 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
[multi-target]을 구성할 때 anthosCluster
속성을 생략합니다. 대신 Anthos 클러스터는 해당 하위 타겟 내에 구성됩니다.
Anthos 클러스터에 배포하는 방법에 대한 자세한 내용은 Anthos 사용자 클러스터에 배포를 참조하세요.
executionConfigs
이 타겟의 기본이 아닌 실행 환경을 지정하는 필드 집합입니다.
usages
RENDER
나DEPLOY
또는 둘 다이며 대상에서 확인이 사용 설정된 경우VERIFY
일 수도 있습니다. 이 실행 환경을 사용하여 이 대상에 수행할 작업을 나타냅니다. 커스텀 실행 환경이 렌더링, 배포, 확인에 모두 사용되도록 하려면 다음과 같이 구성합니다.usages: - RENDER - DEPLOY - VERIFY
확인이 파이프라인 단계에서 사용 설정되어 있으나
usages
스탠자에VERIFY
를 지정하지 않으면 Google Cloud Deploy가 확인에 기본 실행 환경을 사용합니다. 하지만RENDER
나DEPLOY
또는 둘 다에 대한 커스텀 실행 환경이 있는 경우 반드시VERIFY
에 대한 실행 환경을 지정해야 합니다.VERIFY
는RENDER
또는DEPLOY
와 동일한usages
에 있거나 그 자체로 존재할 수 있습니다.RENDER
나DEPLOY
또는 둘 다 커스텀 실행 환경에 지정되지 않으면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]
멀티 대상에 대해 executionConfigs
스탠자를 구성할 때 각 하위 대상은 해당 멀티 대상의 실행 환경을 상속할 수 있습니다.
다음 단계
Google Cloud Deploy 작동 방식에 대해 자세히 알아보세요.
애플리케이션의 배포 파이프라인 설정 방법 알아보기
매니페스트 관리 방법 알아보기
파이프라인 인스턴스에 대해 알아보고 출시 및 배포 파이프라인 간의 불일치를 방지하세요.