Cloud Deploy에서 주석 및 라벨 사용

주석 및 라벨을 Cloud Deploy 리소스에 연결할 수 있습니다. 필수 사항이 아닙니다.

이 문서에서는 라벨 및 주석을 연결할 수 있는 리소스를 나열하고 이를 사용하는 방법과 볼 수 있는 위치를 설명합니다.

주석 및 라벨 정보

주석은 자유 형식 텍스트의 키-값 쌍입니다. 주석을 사용하여 리소스와 연결된 임의의 정보를 연결할 수 있습니다.

라벨을 사용하여 리소스를 구성할 수 있습니다. 예를 들어 라벨 선택을 기반으로 로직을 적용할 수 있습니다.

주석과 마찬가지로 라벨은 키-값 쌍입니다. 하지만 다음과 같은 제한사항을 준수해야 합니다.

  • Cloud Deploy 리소스에는 라벨이 64개를 초과할 수 없습니다.

  • 키와 값 모두 128바이트 이하여야 합니다.

  • 키와 값에는 소문자, 숫자, 밑줄, 대시만 사용할 수 있습니다.

  • 키는 소문자나 국제 문자로 시작해야 합니다.

  • 모든 문자는 UTF-8 인코딩을 사용해야 합니다. 국제 문자가 허용됩니다.

--labels 플래그(예: gcloud deploy releases create)는 키-값 쌍 목록을 가져올 수 있습니다.

"name=wrench,mass=1.3kg,count=3"

자세한 내용은 Cloud Deploy API 문서를 참조하세요.

Cloud Deploy 리소스에 주석 및 라벨 추가

다음 Cloud Deploy 리소스에 주석 및 라벨을 추가할 수 있습니다.

  • 배포 파이프라인

    배포 파이프라인의 경우 YAML 구성 파일에 주석과 라벨을 추가합니다.

apiVersion: deploy.cloud.google.com/v1
  kind: DeliveryPipeline
  metadata:
   name:
   annotations:
     key: "value"
   labels:
     key: "value"
  description:
  serialPipeline:
   stages:
   - targetId:
     profiles: []
   - targetId:
     profiles: []
  • 대상

    대상 구성 YAML의 대사에 주석 및 라벨을 추가합니다.

    예를 들어 애플리케이션의 서드 파티 모니터링에 대한 자세한 정보로 연결되는 링크를 포함할 수 있습니다. 하지만 대상을 공유하는 경우 둘 이상의 애플리케이션에 사용될 수 있으므로 애플리케이션별 링크여서는 안 됩니다.

  • 출시

    gcloud deploy releases create 명령어에서 --labels--annotations 플래그를 사용하여 출시 버전에 주석이나 라벨 또는 둘 다 추가할 수 있습니다. 출시 버전에 추가하는 라벨과 주석은 결과 출시에 라벨 또는 주석으로 전달되지 않습니다.

    예를 들어 주석을 사용해서 배포할 변경사항을 포함하여 Git PR에 대한 참조, 저자 또는 Git 커밋의 SHA 해시를 포함할 수 있습니다. 자세한 내용은 주석을 사용하여 출시 버전 출처 추적을 참조하세요.

  • 출시

    gcloud deploy releases promote 명령어에 --labels 또는 --annotations를 지정하여 새 출시에 주석 및 라벨을 추가할 수 있습니다.

    gcloud deploy releases create 명령어에 --initial-rollout-labels 또는 --initial-rollout-annotations를 지정하여 첫 번째 출시에 주석 및 라벨을 추가할 수 있습니다.

    출시에서 주석을 사용하여 수행할 수 있는 작업은 다음과 같습니다.

    • 테스트 결과를 가리키는 URL이 포함된 주석을 만듭니다.
    • 워크플로 관리 시스템에서 관련 티켓 번호가 포함된 주석을 만듭니다.

리소스의 주석은 어디에서 찾을 수 있나요?

리소스의 describe 명령어를 사용하거나 Google Cloud 콘솔에서 리소스의 메타데이터를 확인하여 지원되는 리소스의 주석 및 라벨을 볼 수 있습니다.

gcloud CLI 사용

명령줄에서 리소스의 주석과 라벨을 보려면 해당 리소스에 describe 명령어를 사용합니다. 다음 예시는 대상의 세부정보를 보여줍니다.

 $ gcloud deploy targets describe qsprod --delivery-pipeline=my-demo-app-1 \
                                              --region=us-central1 \
                                              --project=quickstart-basic8

위의 명령어는 다음 출력을 반환합니다.

 Target:
   annotations:
     approver_ticket_queue_url: https://workflows.example.com/deploy_approvals/4985729
   createTime: '2021-10-28T19:33:56.907887878Z'
   description: development cluster
   etag: 5b3bbee48f693cd7
   gke:
     cluster: projects/quickstart-basic8/locations/us-central1/clusters/quickstart-cluster-qsdev
   name: projects/quickstart-basic8/locations/us-central1/targets/qsdev
   uid: 3f3a5f8e7e0648e3bb17898ee531455d
   updateTime: '2021-11-10T16:55:11.502660604Z'

이 출력에는 target_name 주석이 포함되어 있습니다.

Google Cloud 콘솔 사용

이러한 메타데이터가 있는 Cloud Deploy 리소스의 주석 및 라벨을 보려면 Google Cloud 콘솔에서 리소스 세부정보를 확인합니다.

예를 들어 주석이 포함된 파이프라인의 배포 파이프라인 세부정보는 다음과 같습니다.

Google Cloud Console의 배포 파이프라인 세부정보

출시 버전 관련 세부정보는 다음과 같습니다.

Google Cloud 콘솔의 출시 세부정보

Cloud Deploy의 자동 라벨

기본적으로 Cloud Deploy는 렌더링된 매니페스트에 다음 라벨을 추가합니다.

  • app.kubernetes.io/managed-by:

    배포 도구를 나타내는 표준 라벨입니다. 이는 워크로드 원점을 식별하기 위해 항상 google-cloud-deploy로 설정됩니다.

  • deploy.cloud.google.com/location:

    배포된 배포 파이프라인의 위치입니다(예: us-central1).

  • deploy.cloud.google.com/project-id:

    배포된 배포 파이프라인의 프로젝트 ID입니다.

  • deploy.cloud.google.com/delivery-pipeline-id:

    사용된 배포 파이프라인의 리소스 ID입니다. 출시 버전 스냅샷에서 가져옵니다.

  • deploy.cloud.google.com/release-id:

    배포된 출시 버전의 리소스 ID입니다.

  • deploy.cloud.google.com/target-id:

    배포 대상의 리소스 ID입니다. 출시 버전 스냅샷에서 가져옵니다.

사용 예시

이러한 자동으로 적용되는 라벨 사용에 대한 한 가지 예시는 Google Cloud Observability 내에서 Cloud Deploy 속성별로 컨테이너 측정항목을 집계하는 그래프를 만드는 것입니다.

fetch k8s_container
| metric 'kubernetes.io/container/cpu/core_usage_time'
| filter metadata.user.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
      sum(val())
| rate 1m

커스텀 측정항목에서도 이를 사용할 수 있습니다. 예를 들어 PodMonitor가 app.kubernetes.io/managed-by: google-cloud-deploy와 일치하는 라벨로 구성된 경우 쿼리를 사용하여 커스텀 측정항목의 그래프를 정의할 수 있습니다.

fetch k8s_container
| metric workload.googleapis.com/example_requests_total
| filter metadata.user_labels.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
    sum(val())
| rate 1m

자동 라벨 사용 중지

조직에서 규제, 규정 준수 또는 기타 이유로 이러한 자동 라벨을 허용하지 않을 수 있습니다. 이를 지원하기 위해 조직 정책 서비스에서 이러한 라벨의 적용 여부를 제어하는 제약조건을 제공합니다.

Cloud Deploy가 렌더링된 매니페스트에 자동으로 라벨을 추가하지 못하도록 하려면 조직 정책 서비스 제약조건 clouddeploy.disableServiceLabelGeneration을 적용합니다. 이 제약조건을 시행해도 수동으로 라벨을 지정하지 못하거나 기존 출시에서 라벨이 삭제되지 않습니다.

제약조건 사용 설정에 대한 자세한 내용은 조직 정책에서 불리언 제약조건 사용을 참조하세요.