Cloud Deploy를 사용하여 GKE에 앱 배포
이 페이지에서는 Cloud Deploy를 사용하여 Google Kubernetes Engine 클러스터 시퀀스 2개에 nginx라는 샘플 애플리케이션 이미지를 배포하는 방법을 보여줍니다.
이 빠른 시작에서 다루는 작업은 다음과 같습니다.
시작하기 전에
- 계정에 로그인합니다. Google Cloud 를 처음 사용하는 경우 Google Cloud 계정을 만들어 실제 시나리오에서 제품이 어떻게 작동하는지 평가하세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $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.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init
필요한 역할
Cloud Deploy 배포 파이프라인 및 출시를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트의 Cloud Deploy 작업 실행기 (roles/clouddeploy.jobrunner) IAM 역할을 부여해 달라고 요청하세요.
Cloud Deploy 서비스 계정에 Cloud Deploy 작업을 실행하고 Cloud Run에 배포하는 데 필요한 권한이 있는지 확인하려면 관리자에게 프로젝트의 Cloud Deploy 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Google Kubernetes Engine 개발자 (
roles/container.developer) -
IAM 서비스 계정 사용자 (
roles/iam.serviceAccountUser)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Cloud Deploy 서비스 계정에 필요한 권한을 부여할 수도 있습니다.
Google Kubernetes Engine 클러스터 만들기
기본 설정으로 qsdev 및 qsprod라는 클러스터 두 개를 만듭니다. 클러스터의 Kubernetes API 엔드포인트는 공개 인터넷에서 네트워크에 연결할 수 있어야 합니다.
GKE 클러스터는 기본적으로 외부에서 액세스할 수 있습니다.
gcloud container clusters create-auto quickstart-cluster-qsdev --project=PROJECT_ID --region=us-central1 && gcloud container clusters create-auto quickstart-cluster-qsprod --project=PROJECT_ID --region=us-central1
Skaffold 구성 및 Kubernetes 매니페스트 준비
Cloud Deploy는 Skaffold를 사용하여 배포할 항목의 세부정보와 별도의 대상에 적절하게 배포하는 방법을 제공합니다.
이 빠른 시작에서는 샘플 앱을 배포하는 데 사용할 Kubernetes 매니페스트를 식별하는 skaffold.yaml 파일을 만듭니다.
터미널 창을 엽니다.
deploy-gke-quickstart라는 이름의 새 디렉터리를 만들고 디렉터리로 이동합니다.mkdir deploy-gke-quickstart cd deploy-gke-quickstart다음 콘텐츠로
skaffold.yaml라는 파일을 만듭니다.apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - k8s-* deploy: kubectl: {}이 파일은 매니페스트를 식별하는 최소한의 Skaffold 구성입니다. 이 빠른 시작에서는 해당 파일을 만듭니다. 하지만 간단한 비프로덕션 애플리케이션의 경우 Cloud Deploy에서 자동으로 생성되도록 할 수도 있습니다.
이 파일에 대한 자세한 내용은
skaffold.yaml참조를 확인하세요.다음 콘텐츠로
k8s-pod.yaml이라는 파일을 만듭니다.apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers: - name: nginx image: my-app-image이 파일은 애플리케이션을 배포하기 위해 클러스터에 적용되는 기본 Kubernetes 매니페스트 입니다. 배포할 컨테이너 이미지는 여기에 자리표시자
my-app-image로 설정되며, 출시를 만들 때 특정 이미지로 대체됩니다 .
배포 파이프라인 및 대상 만들기
파이프라인 및 대상을 파일 하나 또는 별도의 파일로 정의할 수 있습니다. 이 빠른 시작에서는 단일 파일을 만듭니다.
deploy-gke-quickstart디렉터리에서 다음 콘텐츠로 새 파일clouddeploy.yaml을 만듭니다.apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-gke-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: qsdev profiles: [] - targetId: qsprod profiles: [] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: qsdev description: development cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsdev --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: qsprod description: production cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprodCloud Deploy 서비스에 파이프라인 및 대상을 등록합니다.
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID이제 타겟이 포함된 파이프라인을 사용하여 첫 번째 타겟에 애플리케이션을 배포할 수 있습니다.
파이프라인 및 대상을 확인합니다.
콘솔에서 Cloud Deploy 배포 파이프라인 페이지로 이동하여 사용 가능한 배포 파이프라인 목록을 확인합니다. Google Cloud
방금 만든 배포 파이프라인이 표시되고 두 타겟이 타겟 열에 나열됩니다.

출시 버전 만들기
출시 버전은 배포되는 변경사항을 나타내는 중앙 Cloud Deploy 리소스입니다. 배포 파이프라인은 해당 출시의 수명 주기를 정의합니다. 수명 주기에 대한 자세한 내용은 Cloud Deploy 서비스 아키텍처를 참조하세요.
deploy-gke-quickstart 디렉터리에서 다음 명령어를 실행하여 배포할 컨테이너 이미지를 나타내는 release 리소스를 만듭니다.
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-gke-demo-app-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
매니페스트의 자리표시자 (my-app-image)를 특정 SHA 인증 이미지로 바꾸는 데 사용하는
--images= 플래그를 확인합니다. Google에서는 이러한 방식으로 매니페스트를 템플릿화하고 출시를 만들 때 SHA 인증 이미지 이름을 사용하는 것이 좋습니다.
모든 출시 버전과 마찬가지로 (--disable-initial-rollout)
Cloud Deploy도 자동으로
출시 리소스를 만듭니다. 애플리케이션은 진행 상황의 첫 번째 대상에 자동으로 배포됩니다.
출시 버전 승격
배포 파이프라인 페이지에서
my-gke-demo-app-1파이프라인을 클릭합니다.배포 파이프라인 세부정보 페이지에는 배포 파이프라인의 진행 상태가 그래픽으로 표시됩니다. 이 경우 출시 버전이
qsdev타겟에 배포되었음을 보여줍니다.
배포 파이프라인 시각화의 첫 번째 타겟에서 승격 을 클릭합니다.
출시 승격 대화상자가 표시됩니다. 승격하는 타겟의 세부정보가 표시됩니다.
승격을 클릭합니다.
출시 버전이
qsprod에의 배포를 위해 큐에 추가되었습니다. 배포가 완료되면 배포 파이프라인 시각화에 배포된 것으로 표시됩니다.
콘솔에서 결과 보기 Google Cloud
콘솔에서 Cloud Deploy 배포 파이프라인 페이지로 이동하여 my-gke-demo-app-1 배포 파이프라인을 확인합니다. Google Cloud
배포 파이프라인 이름 'my-gke-demo-app-1'을 클릭합니다.
파이프라인 시각화에서 파이프라인의 앱 진행 상황을 보여줍니다.

출시 버전은 배포 파이프라인 세부정보 의 출시 탭에 표시됩니다.
출시 이름
test-release-001를 클릭합니다.출시 아래에 출시가 표시됩니다. 출시를 클릭하여 배포 로그를 비롯한 세부정보를 볼 수 있습니다.

삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
qsdev클러스터 삭제gcloud container clusters delete quickstart-cluster-qsdev --region=us-central1 --project=PROJECT_IDqsprod클러스터 삭제gcloud container clusters delete quickstart-cluster-qsprod --region=us-central1 --project=PROJECT_ID배포 파이프라인, 대상, 버전, 출시를 삭제합니다.
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_IDCloud Deploy에서 만든 Cloud Storage 버킷을 삭제합니다.
하나는
_clouddeploy로 끝나고 다른 하나는[region].deploy-artifacts.[project].appspot.com입니다.
빠른 시작을 완료하셨습니다.
다음 단계
매니페스트 관리 방법 알아보기.
CI/CD 도구를 결합하여 소프트웨어를 효과적으로 개발하고 GKE에 배포하는 방법 알아보기 Google Cloud