이 문서에서는 커스텀 Cloud Deploy 대상 유형을 만들고 Cloud Build 배포 파이프라인에서 해당 커스텀 대상 유형을 대상으로 사용하는 방법을 설명합니다.
다음은 커스텀 대상 유형을 만들고 배포 파이프라인에 사용하기 위한 대략적인 프로세스입니다.
커스텀 대상에 배포할 기능이 포함되고 커스텀 대상 유형에 대한 Cloud Deploy 요구사항을 충족하는 컨테이너화된 애플리케이션이나 애플리케이션을 만듭니다.
skaffold.yaml
에서 컨테이너를 참조하고 실행할 명령어를 지정하는 커스텀 작업을 정의합니다.이전 단계의 커스텀 작업을 참조하는
CustomTargetType
정의를 만들고 이를 Cloud Deploy 리소스로 등록합니다.새 커스텀 대상 유형을 식별하는
customTarget
속성을 사용하여 새 대상을 정의합니다.
이 문서의 나머지 부분에서 이러한 각 단계를 자세히 설명합니다.
컨테이너화된 애플리케이션 만들기
커스텀 대상에 배포하는 기능은 컨테이너화된 애플리케이션에서 정의되며 skaffold.yaml
파일에서 이 애플리케이션을 참조하여 Cloud Deploy에 제공합니다. 배포 파이프라인에 커스텀 대상 유형을 사용하는 대상이 포함되면 Cloud Deploy는 Skaffold에서 커스텀 대상 유형에 정의된 커스텀 작업 컨테이너를 호출하여 정의한 렌더링 및 배포 작업을 실행합니다.
개발자가 애플리케이션 동작을 결정합니다. 그러나 Cloud Deploy에서 제공하는 입력 환경 변수를 사용해야 하며 필수 출력을 반환해야 합니다.
대부분의 경우 생성된 커스텀 대상 유형마다 렌더링 작업용 컨테이너 하나와 배포 작업용 컨테이너 하나를 만듭니다. 렌더링 작업은 선택사항이지만 이 작업을 제공하지 않으면 Cloud Deploy에서 기본 skaffold render
를 사용합니다.
Skaffold에서 커스텀 작업 정의
커스텀 작업 컨테이너 이미지를 사용하면 skaffold.yaml
구성 파일에서 이러한 이미지를 참조합니다.
customActions
스탠자에서 커스텀 대상에 대한 각 커스텀 작업을 구성합니다. 모든 커스텀 대상 유형에 대해 Skaffold에서 렌더링용 커스텀 작업과 배포용 커스텀 작업을 만듭니다. CustomTargetType
정의는 렌더링에 사용되는 커스텀 작업과 배포에 사용되는 작업을 식별합니다.
다음은 skaffold.yaml
의 커스텀 렌더링 및 배포 작업 구성입니다.
apiVersion: skaffold/v4beta7
kind: Config
customActions:
# custom render action
- name:
containers:
- name:
image:
command:
args:
# custom deploy action
- name:
containers:
- name:
image:
command:
args:
이 Skaffold 구성은 다음과 같습니다.
customActions.name
커스텀 렌더링이나 배포 작업을 위한 임의의 이름입니다.
CustomTargetType
정의는renderAction
속성이나deployAction
속성에서 이 이름을 참조합니다.containers
스탠자에는 참조와 해당 컨테이너를 실행하는 명령어가 포함됩니다.containers
스탠자는 컨테이너를 2개 이상 허용하지만 하나만 사용하는 것이 좋습니다.customActions.containers.name
이 작업에 사용하는 특정 컨테이너를 위한 임의의 이름입니다. 이 컨테이너 이름은 항상 SHA 자격을 갖추는 것이 좋습니다.
image
컨테이너 이미지에 대한 경로입니다.
command
컨테이너에서 실행할 명령어입니다.
args
command
에 대한 인수 컬렉션입니다.
customActions
에 사용된 구성 속성에 대한 자세한 내용은 Skaffold YAML 참조를 확인하세요.
커스텀 대상 유형 정의
먼저 CustomTargetType
구성을 사용하여 커스텀 대상 유형을 만들어 커스텀 대상을 정의합니다.
배포 파이프라인 정의와 동일한 파일에서 또는 대상 정의를 사용하여 또는 별도의 파일에서 CustomTargetType
을 만들 수 있습니다.
CustomTargetType
정의는 다음과 같습니다.
# Custom target type config (preview)
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
name: [CUSTOM_TARGET_TYPE_NAME]
annotations:
labels:
description:
customActions:
renderAction: [RENDER_ACTION_NAME]
deployAction: [DEPLOY_ACTION_NAME]
includeSkaffoldModules:
장소
CUSTOM_TARGET_TYPE_NAME
이 커스텀 대상 유형 정의에 지정하는 임의의 이름입니다. 이 이름은 정의하는 커스텀 대상 유형을 사용하는 모든 대상의 대상 정의에서 참조됩니다.
RENDER_ACTION_NAME
커스텀 렌더링 작업 이름입니다. 이 값은 렌더링 작업용
skaffold.yaml
에서 정의된customAction.name
입니다.DEPLOY_ACTION_NAME
커스텀 배포 작업 이름입니다. 이 값은 배포 작업용
skaffold.yaml
에서 정의된customAction.name
입니다.includeSkaffoldModules
원격 Skaffold 구성을 사용하는 경우 사용할 선택적 스탠자입니다. 이 스탠자의 속성은 원격 Skaffold 구성 사용 섹션에 나와 있습니다.
원격 Skaffold 구성 사용
공개 Git 저장소, Cloud Storage 버킷 또는 Cloud Build 2세대 저장소에 Skaffold 구성을 저장하고 커스텀 대상 유형 정의에서 이러한 구성을 참조할 수 있습니다.
원격 Skaffold 구성을 사용하면 출시 시점에 제공하는 skaffold.yaml
에서 커스텀 작업을 정의할 필요가 없습니다. 이를 통해 조직 전체에서 커스텀 작업을 공유할 수 있습니다.
원격 Skaffold 구성을 사용하려면 다음 안내를 따르세요.
커스텀 작업을 사용하여 Skaffold 구성을 만듭니다.
Git 저장소나 Cloud Storage 버킷에 구성을 저장합니다.
커스텀 대상 유형 정의에서
customActions.includeSkaffoldModules
스탠자를 추가합니다.includeSkaffoldModules
에서 다음을 지정합니다.필요한 경우
configs
요소를 하나 이상 사용합니다.- configs: ["name1", "name2"]
configs
값은 포함할 각 Skaffold 구성의metadata.name
속성과 일치하는 문자열 목록입니다. 이를 생략하면 Cloud Deploy는 지정된 경로의 모든 구성을 사용합니다.googleCloudStorage
,git
또는googleCloudBuildRepo
스탠자 중 하나입니다.Cloud Storage의 경우:
googleCloudStorage: source: PATH_TO_GCS_BUCKET path: FILENAME
Git의 경우:
git: repo: REPO_URL path: PATH_TO_FILE ref: BRANCH_NAME
Cloud Build 저장소(2세대):
googleCloudBuildRepo: repository: PATH_TO_GCB_REPO path: PATH_TO_FILE ref: BRANCH_NAME
각 항목의 의미는 다음과 같습니다.
PATH_TO_GCS_BUCKET
은/*
로 끝나는 Cloud Storage 디렉터리의 경로이며 Skaffold 구성이 저장됩니다. Skaffold는 이 디렉터리에 있는 모든 파일을 다운로드한 후 구성된 상대 경로를 기반으로 구성을 사용하여 관련 Skaffold 파일을 찾습니다.PATH_TO_GCB_REPO
는 Skaffold 구성이 저장되는 Cloud Build 2세대 저장소의 경로입니다. 경로의 형식은projects/{project}/locations/{location}/connections/{connection}/repositories/{repository}
입니다. Skaffold는 이 디렉터리에 있는 모든 파일을 다운로드한 후 구성된 상대 경로를 기반으로 Skaffold 파일을 찾습니다.FILENAME
은 Skaffold 구성이 포함된 파일의 이름입니다. 이path:
속성은 선택사항입니다. 지정하지 않으면 Cloud Deploy는skaffold.yaml
을 가정합니다.skaffold.yaml
이 없거나 지정한 파일 이름이 없으면 출시 버전 만들기가 실패합니다.REPO_URL
은 Git 저장소의 URL입니다.PATH_TO_FILE
은 Skaffold 구성이 포함된 파일의 저장소 경로입니다.BRANCH_NAME
은 Skaffold 구성을 사용할 브랜치(예:main
)의 이름입니다.
예
다음 커스텀 대상 유형 YAML은 Cloud Storage 버킷에 저장된 Skaffold 구성을 가리키는 includeSkaffoldModules
스탠자가 포함된 customActions
스탠자입니다.
customActions:
renderAction: my-custom-action
deployAction: my-custom-action
includeSkaffoldModules:
- configs: ["myConfig"]
googleCloudStorage:
source: "gs://my-custom-target-bucket/my-custom/*"
path: "skaffold.yaml
다음 YAML은 표시된 커스텀 작업에서 참조하는 Skaffold 구성입니다.
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: myConfig
customActions:
- name: my-custom-action
containers:
- name: my-custom-container
image: us-east1-docker.pkg.dev/abcdefg/foldername/myimage@sha256:c56fcf6e0a7637ddf0df3d56a0dd23bfce03ceca06a6fc527b0e0e7430e6e9f9
커스텀 대상 유형 등록
CustomTargetType
을 구성한 후 gcloud deploy apply
명령어를 실행하여 Google Cloud 프로젝트에 CustomTargetType
리소스를 등록합니다.
gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]
각 항목의 의미는 다음과 같습니다.
FILE
은 이 커스텀 대상 유형을 정의한 파일의 이름입니다.
PROJECT
는 이 리소스를 만들 Google Cloud 프로젝트입니다.
CustomTargetType
은 이를 참조하는 Target
리소스와 동일한 프로젝트에 있어야 합니다. 프로젝트를 Google Cloud CLI의 기본 프로젝트로 설정한 경우에는 프로젝트를 지정하지 않아도 됩니다.
REGION
은 이 리소스를 만들 리전(예: us-centra1
)입니다. CustomTargetType
은 이를 참조하는 Target
리소스와 동일한 리전에 있어야 합니다. 리전을 gcloud CLI의 기본 리전으로 설정한 경우에는 리전을 지정하지 않아도 됩니다.
CustomTargetType
이 Cloud Deploy 리소스로 생성되었으므로 이제 Target
정의에서 이를 사용하여 커스텀 대상을 만들 수 있습니다.
CustomTargetType
정의에 대한 자세한 내용은 Cloud Deploy 구성 스키마 참조를 확인하세요.
대상 정의
지원되는 대상 유형의 대상 정의와 커스텀 대상 정의 간의 유일한 차이점은 커스텀 대상 정의에 customTarget
스탠자가 포함되어 있다는 점입니다. customTarget
구문은 다음과 같습니다.
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
여기서 CUSTOM_TARGET_TYPE_NAME
은 커스텀 대상 유형 구성에 정의된 name
속성의 값입니다.
배포 파이프라인에 대상 추가
지원되는 대상 유형을 사용할 때와 마찬가지로 배포파이프라인에서 커스텀 대상을 사용할 수 있습니다. 즉, 지원되는 대상 유형의 대상과 커스텀 대상 간 배포 파이프라인 진행에는 차이가 없습니다.
배포 파이프라인의 모든 대상은 같은 대상 유형을 사용해야 합니다. 예를 들어 배포 파이프라인에는 Google Kubernetes Engine에 배포되는 일부 대상과 일부 커스텀 대상이 있을 수 없습니다.
지원되는 대상 유형과 마찬가지로 파이프라인 단계에 배포 매개변수를 포함할 수 있습니다.
출시 버전 만들기
커스텀 대상 유형이 완전히 정의되고 해당 유형을 사용하도록 생성된 대상이 있으면 일반적인 방법으로 출시 버전을 만들 수 있습니다.
gcloud deploy releases create [RELEASE_NAME] \
--project=[PROJECT_NAME] \
--region=[REGION] \
--delivery-pipeline=[PIPELINE_NAME]
출시 버전을 만들 때 출시 버전, 대상 또는 배포 파이프라인에 구성된 배포 매개변수 처리를 포함하여 배포 파이프라인의 대상마다 커스텀 렌더링 작업이 실행됩니다. Cloud Deploy는 커스텀 렌더링 컨테이너에 배포 매개변수를 입력으로 제공합니다.
커스텀 대상 출력 보기
커스텀 작업이 커스텀 대상의 요구사항을 충족하면 Google Cloud 콘솔을 사용하여 렌더링된 아티팩트를 볼 수 있습니다.
커스텀 렌더링 작업의 출력을 보려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 Cloud Deploy 배포 파이프라인 페이지로 이동하여 배포 파이프라인을 봅니다.
배포 파이프라인 이름을 클릭합니다.
파이프라인 시각화에 앱 배포 상태가 표시되며 출시 버전은 배포 파이프라인 세부정보의 출시 탭에 나열됩니다.
출시 이름을 클릭합니다.
출시 세부정보 페이지가 표시됩니다.
아티팩트 탭을 클릭합니다.
대상 아티팩트에서 아티팩트 보기 옆에 있는 화살표를 클릭합니다.
커스텀 렌더기에서 생성한 렌더링된
skaffold.yaml
및 렌더링된 매니페스트 파일 등 렌더링된 아티팩트가 나열됩니다. 각 아티팩트 옆에 있는 스토리지 위치 링크를 클릭하면 Cloud Storage 버킷으로 이동하여 해당 파일을 볼 수 있습니다.또한 아티팩트 보기 링크를 클릭하면 출시 버전 검사기를 사용하여 출시 버전, 대상 또는 단계별로 이러한 파일을 볼 수 있습니다.
다음 단계
사용 가능한 샘플 커스텀 대상 유형 확인하기
Cloud Deploy 대상 구성 자세히 알아보기