이 문서에서는 배포 전후에 임의의 프로그램이나 작업을 실행하는 방법을 설명합니다.
배포 전 작업이나 배포 후 작업 또는 둘 다를 수행하도록 Cloud Deploy를 구성할 수 있습니다. 이러한 방식으로 실행되는 프로그램을 '후크'라고 합니다. 배포 전 및 배포 후 후크는 출시에서 배포 전 및 배포 후 작업으로 실행됩니다.
지정된 Cloud Deploy 실행 환경에서 실행되도록 각 후크를 구성할 수 있지만 Google Kubernetes Engine에 배포하는 경우에는 선택적으로 애플리케이션을 배포하는 GKE 클러스터에서 실행되도록 구성할 수 있습니다.
배포 후크는 멱등적인 것으로 간주됩니다. 지정된 작업을 두 번 이상 실행해도 추가 효과는 없습니다.
배포 후크 작동 방식
다음은 Cloud Deploy에서 배포 후크가 실행되는 방식과 배포 후크를 설정하는 방법을 설명합니다.
배포 파이프라인 진행에서 하나 이상의 단계에 후크를 구성합니다.
롤아웃의 배포 작업이 실행되기 전에 Cloud Deploy는 파이프라인 진행의
predeploy정의에 구성된 작업을 실행합니다.predeploy후크는 항상 단계의 첫 번째 작업으로 실행됩니다.출시의 배포 작업이 실행되면 Cloud Deploy는 파이프라인 진행의
postdeploy정의에 구성된 작업을 실행합니다.
배포 후크는 Cloud Deploy 실행 환경에서 실행됩니다.
카나리아 배포에 배포 후크 사용
카나리아 배포를 위해 배포 후크를 구성할 때는 알아야 할 사항이 몇 가지 있습니다.
배포 파이프라인 단계에서 후크 구성(
predeploy,postdeploy)은strategy.standard보다strategy.canary.canaryDeployment또는strategy.canary.customCanaryDeployment.phaseConfigs아래에 있습니다.자동화된 카나리아의 경우
predeploy후크는 첫 번째 단계에서만 배포 전에만 실행되고,postdeploy후크는 마지막 단계(안정됨)의 배포 이후에만 실행됩니다.
후크를 실행하도록 파이프라인 구성
배포 전 및 배포 후 후크는 파이프라인 진행 중 하나 이상의 특정 단계로 구성됩니다.
standard 배포 전략을 사용할 때 파이프라인 단계에서 배포 전 및 배포 후 후크를 구성하는 방법은 다음과 같습니다.
serialPipeline:
stages:
- targetId: hooks-staging
profiles: []
strategy:
standard:
predeploy:
tasks: [TASKS]
postdeploy:
tasks: [TASKS]
이 YAML 내용은 다음과 같습니다.
TASKS
사전 배포 또는 사후 배포 후크의 일부로 실행할 하나 이상의 작업 목록입니다. 작업을 두 개 이상 지정하면 지정된 순서대로 순차적으로 실행됩니다. 작업 (배포 전 또는 배포 후)이 첫 번째 작업에서 실패하면 나머지 작업은 실행되지 않습니다.
애플리케이션 클러스터에서 후크 실행
기본적으로 배포 후크는 Cloud Deploy 실행 환경에서 실행됩니다. 또한 애플리케이션이 실행되는 동일한 클러스터에서 배포 후크를 실행하도록 Skaffold를 구성할 수도 있습니다.
애플리케이션 클러스터에서 후크를 실행하려면 skaffold.yaml에서 customActions로 구성하고, 전송 파이프라인 단계 구성의 predeploy 또는 postdeploy 스탠자에서 actions를 사용하여 참조해야 합니다.
serialPipeline:
stages:
- targetId: hooks-staging
profiles: []
strategy:
standard:
predeploy:
actions: ["my-predeploy-action"]
postdeploy:
actions: ["my-postdeploy-action"]
이 기능은 GKE 배포에서만 사용할 수 있으며 Cloud Run에는 사용할 수 없습니다. Cloud Run에 대한 배포는 Cloud Deploy 실행 환경에서만 후크를 실행할 수 있습니다.
클러스터에서 실행되도록 후크를 구성하려면 클러스터에서 실행하려는 각 작업의 customActions 스탠자 내에 skaffold.yaml 구성 파일에 executionMode.kubernetesCluster 스탠자를 포함합니다.
customActions:
- name: ACTION_NAME
containers:
- name: CONTAINER_NAME
image: IMAGE
command: [COMMANDS_TO_RUN]
args: [LIST_OF_ARGS]
executionMode:
kubernetesCluster: {}
다음은 애플리케이션 클러스터에서 후크 컨테이너를 호출하는 executionMode가 포함된 customActions 스탠자 예시입니다.
customActions:
- name: predeploy-action
containers:
- name: predeploy-echo
image: ubuntu
command: ["/bin/sh"]
args: ["-c", 'echo "this is a predeploy action"' ]
executionMode:
kubernetesCluster: {}
executionMode 스탠자는 선택사항입니다. 이를 생략하면 Skaffold가 Cloud Deploy 실행 환경에서 맞춤 액션 컨테이너를 실행합니다.
사용 가능한 환경 변수
Cloud Deploy는 실행 환경에 다음 환경 변수도 제공하고 채웁니다. 이러한 환경 변수를 배포 후크, 작업 확인 또는 커스텀 타겟 렌더링 또는 배포의 일부로 사용할 수 있습니다.
ANTHOS_MEMBERSHIPANTHOS유형 대상의 경우 Anthos 멤버십의 완전하게 지정된 리소스 이름입니다.CLOUD_RUN_LOCATIONRUN유형 대상의 경우 Cloud Run 서비스가 배포된 리전입니다.CLOUD_RUN_PROJECTRUN유형 대상의 경우 Cloud Run 서비스가 생성된 프로젝트입니다.CLOUD_RUN_SERVICERUN유형 대상의 경우 배포된 Cloud Run 서비스의 이름입니다.CLOUD_RUN_SERVICE_URLSRUN유형 대상의 경우 최종 사용자가 서비스에 액세스하는 데 사용할 URL 또는 쉼표로 구분된 URL 목록입니다.Google Cloud 콘솔의 해당 서비스에 대한 Cloud Run 서비스 세부정보에서 이를 확인할 수 있습니다. URL은 Cloud Run 서비스가 성공적으로 배포된 후 Cloud Run에 의해 생성됩니다. 따라서 이 환경 변수는 postdeploy 후크와 작업 확인에서만 사용할 수 있습니다.CLOUD_RUN_REVISIONRUN유형 대상의 경우 Cloud Run 서비스의 특정 버전입니다.GKE_CLUSTERGKE유형의 대상의 경우 Google Kubernetes Engine 클러스터의 완전히 지정된 리소스 이름입니다(예:projects/p/locations/us-central1/clusters/dev).TARGET_TYPE대상의 특정 런타임 유형으로,
GKE,ANTHOS,RUN입니다. 커스텀 대상의 경우 이 값이 설정되지 않습니다.CLOUD_DEPLOY_LOCATIONCloud Deploy 리소스가 포함된 리전입니다.
CLOUD_DEPLOY_DELIVERY_PIPELINE배포 파이프라인의 ID입니다.
CLOUD_DEPLOY_TARGET타겟의 ID입니다.
CLOUD_DEPLOY_PROJECTCloud Deploy 리소스가 포함된 프로젝트의 Google Cloud 프로젝트 번호입니다.
CLOUD_DEPLOY_PROJECT_ID프로젝트의 Google Cloud 프로젝트 ID입니다.
CLOUD_DEPLOY_RELEASE후크가 실행되는 출시 버전의 ID입니다.
CLOUD_DEPLOY_ROLLOUT후크 작업을 포함하는 출시의 ID입니다.
CLOUD_DEPLOY_JOB_RUN작업의 현재 실행을 나타내는 작업 실행의 ID입니다.
CLOUD_DEPLOY_PHASE배포 후크, 확인 작업 또는 맞춤 렌더링 또는 배포 작업을 포함하는 출시의 단계입니다.
파라미터를 환경 변수로 배포
Cloud Deploy는 이 섹션에 나열된 환경 변수 외에도 설정한 배포 매개변수를 커스텀 컨테이너에 전달할 수 있습니다.
다음 단계
- 할 일 자세히 알아보기
- 빠른 시작: 배포 전후 후크 실행 사용해 보기