측정항목을 사용하여 애플리케이션 분석
이 빠른 시작에서는 Cloud Deploy를 사용하여 Google Cloud Observability의 측정항목을 기반으로 배포된 Cloud Run 서비스를 분석하여 애플리케이션이 예상대로 작동하는지 확인하는 방법을 보여줍니다.
이 빠른 시작에서 다루는 작업은 다음과 같습니다.
Cloud Run 서비스 하나를 만들고 배포합니다.
이 경우 Cloud Deploy를 사용하여 배포하지 않습니다.
Google Cloud Observability에서 업타임 체크를 만듭니다.
이 검사는 Cloud Run 서비스가 실행 중인지 모니터링합니다.
Cloud Monitoring에서 알림 정책을 만듭니다.
기본적으로 Cloud Deploy 분석은 Google Cloud Observability의 여러 유형의 측정항목을 사용할 수 있습니다. 이 정책은 업타임 체크에서 문제가 표시되면 알림을 만듭니다.
Cloud Run 서비스를 식별하는 Skaffold 구성을 만듭니다.
Cloud Deploy 배포 파이프라인 및 대상을 정의합니다.
이 파이프라인에는 한 단계만 포함되며 대상 하나만 사용되고 분석 작업의 정의가 포함됩니다.
대상에 자동으로 배포되는 출시 버전을 만듭니다.
애플리케이션이 배포된 후에는 분석이 출시의 작업으로 실행됩니다.
서비스가 타겟에 성공적으로 배포되지만 알림 정책에서 알림을 생성하므로 출시가 실패해야 합니다.
Cloud Run 서비스 정의를 변경하여 서비스의 인스턴스 수를 늘리고 새 버전을 만듭니다.
이번에는 서비스가 성공적으로 배포되고 출시가 성공적으로 완료됩니다.
시작하기 전에
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.
Cloud Deploy, Cloud Build, Cloud Run, Cloud Storage API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할 (roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud initIn 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.
Cloud Deploy, Cloud Build, Cloud Run, Cloud Storage API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할 (roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init필요한 역할
Cloud Deploy 서비스 계정에 Cloud Deploy 작업을 실행하고 Cloud Run에 배포하는 데 필요한 권한이 있는지 확인하려면 관리자에게 프로젝트의 Cloud Deploy 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Cloud Run 개발자(
roles/run.developer) -
Cloud Deploy 실행자 (
roles/clouddeploy.jobRunner) -
IAM 서비스 계정 사용자 (
roles/iam.serviceAccountUser) -
모니터링 경고 뷰어 (
roles/monitoring.alertViewer) -
서비스 사용량 소비자(
roles/serviceusage.serviceUsageConsumer)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Cloud Deploy 서비스 계정에 필요한 권한을 부여할 수도 있습니다.
Cloud Deploy 서비스 계정에 대해 자세히 알아보기
Cloud Run 서비스 배포
이 빠른 시작에서는 Cloud Run이 이미 있어야 하는 알림 정책을 사용합니다. 따라서 여기서는 하나를 배포하고 나중에 동일한 서비스 이름을 사용하여 service.yaml를 정의합니다.
다음 명령어를 실행하여 초기 서비스를 만듭니다.
gcloud run deploy my-analysis-run-service \
--image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
--project=PROJECT_ID \
--region=us-central1 \
--allow-unauthenticated
PROJECT_ID를 프로젝트 ID로 바꿉니다.
Google Cloud Observability 업타임 체크 만들기
이 업타임 체크는 실행 중인 서비스를 모니터링하여 서비스가 실행 중인지 확인합니다. 나중에 서비스에 실행 중인 사용 가능한 인스턴스가 하나 이상 없는 경우 알림을 생성하는 Google Cloud Observability 알림 정책을 만듭니다.
업타임 체크를 만들려면 다음 명령어를 실행합니다.
gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \ --resource-type=cloud-run-revision \ --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \ --project=PROJECT_ID \ --protocol=https \ --path="/" \ --port=443 \ --period=1 \ --timeout=10 \ --service-agent-auth="oidc-token" \ --status-classes="2xx"업타임 체크 ID를 복사합니다.
방금 실행한 명령어의 출력에 ID가 포함되어 있습니다.
Skaffold 구성 및 서비스 정의 준비
이 빠른 시작에서는 샘플 Cloud Run 서비스를 배포하는 데 사용할 매니페스트를 식별하는 skaffold.yaml 파일을 만들고 Cloud Run 자체를 정의하는 service.yaml 파일도 정의합니다.
터미널 창을 엽니다.
새 디렉터리를 만들어 해당 디렉터리로 이동합니다.
mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
- 다음 콘텐츠로
skaffold.yaml라는 파일을 만듭니다.
apiVersion: skaffold/v4beta7
kind: Config
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
이 구성 파일에 대한 자세한 내용은 skaffold.yaml 참조를 확인하세요.
- 다음 콘텐츠로
service.yaml이라는 파일을 만듭니다.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-analysis-run-service
annotations:
run.googleapis.com/scalingMode: manual
run.googleapis.com/manualInstanceCount: 0
spec:
template:
spec:
containers:
- image: my-app-image
이 파일은 애플리케이션을 배포하는 데 사용되는 Cloud Run 서비스 정의입니다. 배포할 컨테이너 이미지는 여기에 자리표시자 my-app-image로 설정되며, 버전을 생성할 때 특정 이미지로 대체됩니다.
확장 모드를 수동으로 설정하고 인스턴스 수를 0로 설정했습니다.
즉, 배포된 서비스가 트래픽을 수신할 수 없으며 실행 중인 인스턴스가 없으므로 알림이 트리거됩니다. 다음으로 이 알림을 구성합니다.
알림 정책 만들기
이 빠른 시작에서는 Google Cloud Observability 알림 정책을 사용합니다. 이 알림 정책은 이전에 만든 업타임 체크에서 Cloud Run 서비스가 실패할 때 알림을 생성합니다.
deploy-analysis-run-quickstart디렉터리에서 다음 내용이 포함된policy.yaml파일을 만듭니다.displayName: Cloud Run service uptime check userLabels: policy-for: analysis-run-pipeline combiner: OR conditions: - displayName: Failure of uptime check UPTIME_ID conditionThreshold: filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision" aggregations: - alignmentPeriod: 60s crossSeriesReducer: REDUCE_COUNT_FALSE groupByFields: - resource.label.* perSeriesAligner: ALIGN_NEXT_OLDER comparison: COMPARISON_GT duration: 60s thresholdValue: 1.0UPTIME_ID을 이전에 만든 가동시간 확인의 ID로 바꿉니다.다음 명령어를 실행하여 정책을 만듭니다.
gcloud monitoring policies create \ --policy-from-file=policy.yaml\ --project=PROJECT_IDPROJECT_ID를 프로젝트 ID로 바꿉니다.방금 실행한 명령어의 출력에서 정책 ID를 복사합니다.
이번에는 경로를 포함한 전체 리소스 ID를 복사합니다. 다음 섹션의 전송 파이프라인에 있는 분석 구성에서 이 ID를 사용합니다.
전달 파이프라인 및 대상 만들기
이 배포 파이프라인에는 하나의 대상(analysis-staging)에 대해 한 단계가 있습니다.
deploy-analysis-run-quickstart디렉터리에서 다음 콘텐츠로 새 파일clouddeploy.yaml을 만듭니다.apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-analysis-demo-app-run description: main application pipeline serialPipeline: stages: - targetId: analysis-staging profiles: [] strategy: standard: analysis: duration: 300s googleCloud: alertPolicyChecks: - id: check-1 alertPolicies: - ALERT_POLICY_ID --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: analysis-staging description: staging Run service run: location: projects/PROJECT_ID/locations/us-central1이 YAML에서
ALERT_POLICY_ID를 이전에 실행한gcloud monitoring policies list명령어의 출력으로 바꾸고PROJECT_ID를 사용 중인 프로젝트의 ID로 바꿉니다.Cloud Deploy 서비스에 파이프라인 및 대상을 등록합니다.
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID이제 애플리케이션을 배포할 수 있는 대상 하나가 포함된 배포 파이프라인이 있습니다.
파이프라인 및 대상을 확인합니다.
Google Cloud 콘솔에서 Cloud Deploy 배포 파이프라인 페이지로 이동하여 사용 가능한 배포 파이프라인 목록을 확인합니다.
방금 만든 배포 파이프라인이 표시되고 대상 하나가 대상 열에 나열됩니다.

출시 버전 만들기
출시 버전은 배포되는 변경사항을 나타내는 중앙 Cloud Deploy 리소스입니다. 배포 파이프라인은 해당 출시의 수명 주기를 정의합니다. 수명 주기에 대한 자세한 내용은 Cloud Deploy 서비스 아키텍처를 참조하세요.
deploy-analysis-run-quickstart 디렉터리에서 다음 명령어를 실행하여 배포할 컨테이너 이미지를 나타내는 release 리소스를 만듭니다.
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-analysis-demo-app-run \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
서비스 정의의 자리표시자 (my-app-image)를 SHA로 검증된 특정 이미지로 바꾸는 데 사용되는 --images= 플래그를 확인하세요. 이러한 방식으로 서비스 정의를 템플릿화하고 출시 생성 시 SHA로 한정된 이미지 이름을 사용하는 것이 좋습니다.
모든 출시 버전과 마찬가지로(--disable-initial-rollout을 포함하지 않는 경우) Cloud Deploy도 자동으로 출시 리소스를 만듭니다. 애플리케이션은 이 배포 파이프라인에 구성된 대상 하나에 자동으로 배포됩니다.
Google Cloud 콘솔에서 결과 보기
몇 분 후에 출시 버전이 대상 런타임에 배포됩니다. 볼 수 있습니다.
Google Cloud 콘솔에서 Cloud Deploy 배포 파이프라인 페이지로 이동하여 배포 파이프라인('deploy-analysis-demo-app-run')을 확인합니다.
배포 파이프라인 이름('deploy-analysis-demo-app-run')을 클릭합니다.
파이프라인 시각화에 앱의 배포 상태가 표시됩니다. 파이프라인에는 단계가 하나뿐이므로 시각화에 노드가 하나만 표시됩니다.

출시 버전은 배포 파이프라인 세부정보의 출시 탭에 표시됩니다.
배포 파이프라인 세부정보에서 출시 탭을 클릭합니다.
출시 이름을 클릭하여 출시 세부정보를 봅니다.
분석이 작업으로 나열됩니다.

분석 실패
배포 파이프라인 구성에 지정한 분석 작업은 애플리케이션이 배포된 후에 이 출시의 일부로 실행됩니다. 알림 정책에서 알림을 트리거해야 하므로 이 분석은 실패해야 합니다. 이 분석 실패로 인해 출시가 실패합니다.
변경한 후 다른 출시 버전을 만들면 성공할 것입니다.
서비스 정의를 변경하고 새 버전 만들기
이제 서비스 정의에서 인스턴스 수를 변경하여 서비스의 실행 중인 인스턴스가 있도록 하고 알림이 트리거되지 않도록 합니다.
Cloud Run 정의 파일
service.yaml을 수정하여run.googleapis.com/manualInstanceCount값을0에서1로 변경합니다.동일한
deploy-analysis-run-quickstart디렉터리에서 다음 명령어를 실행하여 다른release를 만듭니다.gcloud deploy releases create test-release-002 \ --project=PROJECT_ID \ --region=us-central1 \ --delivery-pipeline=deploy-analysis-demo-app-run \ --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
이번에는 출시가 성공해야 합니다. 이제 Cloud Run 서비스에 실행 중인 인스턴스가 하나 있으므로 가동시간 확인에서 알림 정책의 알림을 호출하지 않습니다.
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
Cloud Run 서비스를 삭제합니다.
gcloud run services delete my-analysis-run-service \ --region=us-central1 \ --project=PROJECT_ID배포 파이프라인, 대상, 출시 버전, 출시를 삭제하려면 배포 파이프라인 정의가 포함된 디렉터리에서 다음 명령어를 실행합니다.
gcloud deploy delete --file=clouddeploy.yaml \ --force \ --region=us-central1 \ --project=PROJECT_IDGoogle Cloud Observability 알림 정책을 삭제합니다.
gcloud monitoring policies delete ALERT_POLICY_IDCloud Deploy에서 만든 Cloud Storage 버킷을 삭제합니다.
하나는
_clouddeploy로 끝나고 다른 하나는[region].deploy-artifacts.[project].appspot.com입니다.
빠른 시작을 완료하셨습니다.