배포 정책을 사용하여 출시 제한
이 빠른 시작에서는 지정된 시간 동안 대상에 Cloud Deploy 출시를 방지하는 방법과 이러한 제한을 재정의하는 방법을 보여줍니다.
이 빠른 시작에서 다루는 작업은 다음과 같습니다.
Skaffold 구성 및 Kubernetes 매니페스트 또는 Cloud Run 서비스 정의를 만들어 배포할(사전 빌드된) 컨테이너 이미지를 지정합니다.
하나의 GKE 클러스터 또는 Cloud Run 서비스를 가리키는 단일 배포 대상 및 Cloud Deploy 배포 파이프라인을 정의합니다.
이 파이프라인에는 하나의 대상에 대해 한 단계만 포함됩니다.
타겟의 배포 정책을 구성합니다.
정책은 해당 타겟에 대한 출시를 금지할 기간을 정의합니다.
출시 버전을 만듭니다.
일반적으로 출시 버전을 만들면 Cloud Deploy에서 배포 파이프라인의 진행 과정에 있는 첫 번째 대상에 대한 출시를 만듭니다. 이 경우 대상에 대한 배포를 방지하는 정책이 있으므로 해당 대상에 대한 출시가 생성되지 않습니다.
Google Cloud 콘솔에서 결과를 확인합니다.
정책으로 인해 출시 버전에 대한 출시가 표시되지 않으며 배포 파이프라인 시각화에 대기 중인 작업이 없습니다.
배포 정책을 재정의합니다.
이 재정의로 인해 이제 Cloud Deploy에서 대상에 대한 출시가 생성됩니다.
Google Cloud 콘솔에서 결과를 확인합니다.
이제 정책이 재정의되었으므로 출시가 진행 중(또는 충분한 시간이 경과한 경우 완료됨)임을 확인할 수 있습니다.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init - 기본 Compute Engine 서비스 계정에 충분한 권한이 있는지 확인합니다.
서비스 계정에 이미 필요한 권한이 있을 수 있습니다. 기본 서비스 계정의 자동 역할 부여를 중지한 프로젝트를 위해 포함된 단계입니다.
- 먼저
clouddeploy.jobRunner역할을 추가합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" - 특정 런타임의 개발자 역할을 추가합니다.
- GKE의 경우:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/container.developer" - Cloud Run의 경우:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer" -
런타임에 배포할 수 있는
actAs권한이 포함된iam.serviceAccountUser역할을 추가합니다.gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
Google Cloud CLI가 이미 설치되어 있으면 최신 버전으로 실행 중인지 확인합니다.
gcloud components update
런타임 환경 만들기
Cloud Run에 배포하는 경우 이 명령어를 건너뛸 수 있습니다.
GKE의 경우 quickstart-cluster-qsprod 클러스터 1개를 만듭니다.
클러스터의 Kubernetes API 엔드포인트는 공개 인터넷에서 네트워크에 연결할 수 있어야 합니다. GKE 클러스터는 기본적으로 외부에서 액세스할 수 있습니다.
gcloud container clusters create-auto quickstart-cluster-qsprod \
--project=PROJECT_ID \
--region=us-central1
Skaffold 구성 및 애플리케이션 매니페스트 준비
Cloud Deploy는 Skaffold를 사용하여 배포할 항목의 세부정보와 대상에 배포하는 방법을 제공합니다.
이 빠른 시작에서는 샘플 앱을 배포하는 데 사용할 Kubernetes 매니페스트를 식별하는 skaffold.yaml 파일을 만듭니다.
터미널 창을 엽니다.
새 디렉터리를 만들어 해당 디렉터리로 이동합니다.
mkdir deploy-policy-quickstart cd deploy-policy-quickstart다음 콘텐츠로
skaffold.yaml라는 파일을 만듭니다.GKE
apiVersion: skaffold/v4beta1 kind: Config manifests: rawYaml: - k8s-pod.yaml deploy: kubectl: {}Cloud Run
apiVersion: skaffold/v4beta1 kind: Config manifests: rawYaml: - service.yaml deploy: cloudrun: {}이 파일은 최소한의 Skaffold 구성입니다. 이 빠른 시작에서는 해당 파일을 만듭니다. 하지만 기본적인 비프로덕션 애플리케이션의 경우 Cloud Deploy에서 자동으로 생성되도록 할 수도 있습니다.
이 구성 파일에 대한 자세한 내용은
skaffold.yaml참조를 확인하세요.Cloud Run용 서비스 정의 또는 GKE용 Kubernetes 매니페스트와 같은 애플리케이션의 매니페스트를 만듭니다.
GKE
다음 콘텐츠로
k8s-pod.yaml이라는 파일을 만듭니다.apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers: - name: nginx image: my-app-image이 파일은 애플리케이션을 배포하기 위해 클러스터에 적용되는 기본 Kubernetes 매니페스트입니다. 배포할 컨테이너 이미지는 여기에서 자리표시자
my-app-image로 설정되며, 버전을 만들 때 특정 이미지로 대체됩니다.Cloud Run
다음 콘텐츠로
service.yaml이라는 파일을 만듭니다.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-deploy-policy-run-service spec: template: spec: containers: - image: my-app-image이 파일은 애플리케이션을 배포하는 데 사용되는 기본 Cloud Run 서비스 정의입니다. 배포할 컨테이너 이미지는 여기에서 자리표시자
my-app-image로 설정되며, 버전을 만들 때 특정 이미지로 대체됩니다.
전달 파이프라인 및 대상 만들기
배포 파이프라인 및 대상을 파일 하나 또는 별도의 파일로 정의할 수 있습니다. 이 빠른 시작에서는 두 가지를 모두 포함하는 단일 파일을 만듭니다.
배포 파이프라인과 대상 정의를 만듭니다.
GKE
deploy-policy-quickstart디렉터리에서 다음 콘텐츠로 새 파일clouddeploy.yaml을 만듭니다.apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-policy-pipeline serialPipeline: stages: - targetId: prod-target --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: prod-target description: production cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprodCloud Run
deploy-policy-quickstart디렉터리에서 다음 콘텐츠로 새 파일clouddeploy.yaml을 만듭니다.apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-policy-pipeline serialPipeline: stages: - targetId: prod-target --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: prod-target description: production Run service run: location: projects/PROJECT_ID/locations/us-central1Cloud Deploy 서비스에 파이프라인 및 대상 리소스를 등록합니다.
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
이제 하나의 대상이 포함된 배포 파이프라인이 있습니다.
파이프라인 및 대상을 확인합니다.
Google Cloud 콘솔에서 Cloud Deploy 배포 파이프라인 페이지로 이동하여 사용 가능한 배포 파이프라인 목록을 확인합니다.
방금 만든 배포 파이프라인이 표시되고 대상 하나가 대상 열에 나열됩니다.

배포 정책 만들기
배포 정책은 배포 파이프라인 및 대상과 동일한 파일에 정의하거나 별도의 파일에 정의할 수 있습니다. 이 빠른 시작에서는 이를 별도로 정의합니다.
배포 파이프라인 및 대상을 만든 동일한 디렉터리에서 다음 콘텐츠가 포함된 새 파일
deploypolicy.yaml을 만듭니다.apiVersion: deploy.cloud.google.com/v1 description: Restrict all rollouts in the deploy-policy-pipeline resource for the next ten years kind: DeployPolicy metadata: name: quickstart-deploy-policy selectors: - deliveryPipeline: