정책을 사용하여 배포 동작 제한

이 문서에서는 배포 정책을 사용하여 수동 또는 자동 배포 파이프라인 작업을 제한하는 방법을 설명합니다.

배포정책은 선택한 배포 파이프라인 또는 대상(또는 모든 파이프라인 또는 대상)에 대한 수동 또는 자동 작업을 제한하는 데 사용할 수 있는 Cloud Deploy 리소스입니다.

어떤 동작을 제한할 수 있나요?

배포 정책을 만들어 Cloud Deploy가 출시 시 특정 작업을 수행하지 못하도록 제한하거나 방지할 수 있습니다. 예를 들어 정책에 따라 지정된 기간에는 주어진 배포 파이프라인에 대해 출시 생성을 방지할 수 있습니다. 예를 들어 계절적인 제한에 따라 이를 사용할 수 있습니다.

정책 평가 및 시행 방법

모든 수동 또는 자동 작업에 대해 Cloud Deploy는 다음을 수행합니다.

  1. Identity and Access Management 권한을 확인합니다.

    사용자 또는 서비스 계정에 적절한 IAM 권한이 없으면 작업이 수행되지 않고 배포 정책을 평가할 필요가 없습니다.

  2. 대상 또는 배포 파이프라인에 대해 적용 가능한 정책이 있는지 확인하고, 있으면 해당 정책이 평가됩니다.

    • Cloud Deploy는 이 규칙을 적용할 수 있는지 확인하기 위해 수행되는 조치를 평가합니다.

      즉, 작업 유형과 호출자가 정책과 일치하는지 확인합니다.

    • Cloud Deploy는 정책에 정의된 날짜 및 시간 범위를 확인하여 요청 시 해당 정책의 효과가 적용되었는지 확인합니다.

    • 정책의 효과가 적용되었고 규칙이 배포 파이프라인 또는 대상 및 작업에 적용되었을 경우에는 규칙이 적용되고 작업이 차단됩니다.

요구사항 및 제한사항

  • 각 정책에는 선택자가 하나 이상 있어야 합니다.

  • 각 정책에는 규칙이 하나 이상 있어야 합니다.

    모든 규칙 ID는 배포 정책 내에서 고유해야 합니다.

  • 각 규칙에는 timeWindows가 하나 이상 있어야 하고 timeWindows 내에 oneTimeWindows 또는 weeklyWindows가 있어야 합니다.

    시간 블록 사용에 대한 자세한 내용은 날짜 및 시간을 참조하세요.

  • 배포 정책은 프로젝트/위치당 1,000개를 초과할 수 없습니다.

필수 Identity and Access Management 역할 및 권한

Cloud Deploy 배포 파이프라인을 실행하는 데 필요한 권한 외에도 정책으로 제한되는 태스크를 수행하기 위해서는 정책 리소스에 대해 특정 작업을 수행하기 위해 필요한 몇 가지 권한이 있습니다.

  • clouddeploy.deployPolicies.create
  • clouddeploy.deployPolicies.delete
  • clouddeploy.deployPolicies.get
  • clouddeploy.deployPolicies.list
  • clouddeploy.deployPolicies.update
  • clouddeploy.deployPolicies.override

이러한 권한은 roles/clouddeploy.policyAdmin 역할에 포함되어 있습니다. 또한 roles/clouddeploy.policyOverrider 역할에는 .override 권한이 포함되어 있습니다.

배포 정책 만들기

배포 정책 리소스 만들기는 다음 단계로 구성됩니다.

  1. 배포 정책 구성으로 YAML 파일을 만듭니다.

    구성에는 리소스를 배포 정책으로 식별하는 헤더가 포함됩니다. name은 필수 항목입니다.

     apiVersion: deploy.cloud.google.com/v1
     kind: DeployPolicy
     metadata:
       name: 
     description: 
    
  2. 정책이 적용되는 배포 파이프라인 및 대상에 참조를 추가합니다(selectors).

    정책 선택자 및 이를 구성하는 방법에 대한 자세한 내용은 배포 정책 선택자구성 스키마 참조를 확인하세요.

  3. 정책 rules를 하나 이상 추가합니다.

    각 규칙은 제한사항과 그러한 제한사항이 적용되는 상황을 설명합니다. 정책 규칙 및 이를 구성하는 방법은 배포 정책 규칙구성 스키마 참조를 확인하세요.

  4. gcloud deploy apply --filename=을 사용해서 이 파일을 적용하고 리소스를 만듭니다.

이제 배포-정책 리소스의 규칙에 따라 참조된 배포 파이프라인 또는 대상이 제한됩니다.

배포 정책 선택자

배포 정책 구성에 정의된 선택자에 따라 주어진 규칙이 어떤 배포 파이프라인 및 대상에 영향을 주는지 결정됩니다.

선택자는 배포 정책 구성에서 selectors 스탠자에 최상위 속성으로 정의됩니다.

selectors:
- deliveryPipeline:
    id:
    labels:
  target:
    id:
    labels:

이 구성 YAML에서 deliveryPipeline.id는 배포 파이프라인의 이름을 나타내고 target.id는 대상의 이름을 나타냅니다(두 경우 모두 metadata.name).

id: *를 사용하여 모든 배포 파이프라인 또는 모든 대상을 선택할 수 있습니다. 또한 라벨을 사용해서 특정 배포 파이프라인, 대상 또는 둘 다를 필터링하고 선택할 수도 있습니다.

주어진 선택자 내에서 항목은 함께 AND로 연산됩니다. 여러 선택자는 OR로 연산됩니다. 즉, 주어진 요청이 정책으로 제한되기 위해서는 최소한 하나 이상의 선택자에 적용되어야 합니다. 하지만 선택자 내에서 요청은 모든 항목을 매칭해야 합니다.

배포 정책 규칙

각 배포 정책에는 선택한 배포 파이프라인 또는 대상에서 제한되는 작업을 정의하는 하나 이상의 정책 규칙이 포함됩니다. 규칙은 또한 규칙이 적용되는 상황에 따라 정의됩니다.

다음 규칙을 사용할 수 있습니다.

  • rolloutRestriction

rolloutRestriction 규칙은 지정된 출시 작업이 특정 배포 파이프라인에 사용되는 일부 대상에서 수행되지 않도록 방지합니다. 이 규칙은 선택한 배포 파이프라인 및 대상에 대해 출시를 만들 수 없는 시간을 정의하는 기간 범위를 사용합니다. 배포 정책 규칙에서 날짜 및 시간을 지정하는 방법에 대한 설명은 날짜 및 시간을 참조하세요.

규칙이 적용되는 동안 다음 작업을 제한할 수 있습니다.

  • ADVANCE

    출시 단계를 다음 단계로 진행할 수 없습니다.

  • APPROVE

    출시 프로모션을 승인할 수 없습니다.

  • CANCEL

    출시를 취소할 수 없습니다.

  • CREATE

    출시를 만들 수 없습니다. 정책에서 이 작업을 방지하는 경우에도 출시 버전을 만들 수 있지만 출시가 트리거되지는 않습니다.

  • IGNORE_JOB

    작업을 무시할 수 없습니다.

  • RETRY_JOB

    작업을 재시도할 수 없습니다.

  • ROLLBACK

    출시를 롤백할 수 없습니다.

  • TERMINATE_JOBRUN

    작업 실행을 종료할 수 없습니다.

    이 규칙의 YAML 구조는 구성 스키마 참조를 확인하세요.

rolloutRestriction 규칙의 날짜 및 시간

배포 정책이 적용되는 동안 반복 및 비반복 기간을 지정하도록 날짜 및 시간 블록을 구성합니다.

다음은 날짜 및 시간을 표현하기 위한 요구사항입니다.

  • 날짜는 yyyy-mm-dd로 표시됩니다.

  • 하루 중 시간을 표시할 때 하루의 시작 시간은 00:00이고 종료 시간은 24:00입니다.

  • oneTimeWindows의 경우 날짜에 시간이 포함되어야 합니다. weeklyWindows의 경우에는 하루 중 시간을 생략할 수 있습니다. 하지만 startTime을 포함할 경우에는 endTime을 포함해야 하고, 반대의 경우도 마찬가지입니다.

    예를 들어 일요일에만 동결을 설정하면 다음과 같이 됩니다.

    - daysOfWeek: [SUNDAY]
      startTime: "00:00"
      endTime: "24:00"
    

    다음과 같은 방법도 가능합니다.

    - daysOfWeek: [SUNDAY]
    

    하지만 다음은 허용되지 않습니다.

    - daysOfWeek: [SUNDAY]
      startTime: "00:00"
    
  • timeWindows 스탠자에 시간대를 포함해야 합니다.

    예를 들면 timeZone: America/New_York입니다.

반복되지 않는 시간 범위

반복되지 않는 시간 범위는 특정 날짜 및 시간에 시작하고 종료합니다. 출시를 제한하려는 시간 블록에 이를 사용할 수 있습니다.

반복되지 않는 시간 범위는 oneTimeWindows 스탠자를 사용해서 구성됩니다.

반복 시간 범위

반복 시간 범위는 출시를 제한하려는 반복되는 시간 블록을 나타냅니다. 예를 들어 이를 사용해서 주말에 출시를 제한할 수 있습니다.

반복 시간 범위는 weeklyWindows 스탠자를 사용해서 구성됩니다.

예시

이 섹션에서는 배포 정책 적용 시간을 구성하도록 날짜 및 시간을 사용하는 예시를 보여줍니다.

연간 동결

1년 중 특정 시간에 출시를 동결해야 하는 경우 이를 위해 oneTimeWindows 블록을 구성할 수 있습니다. 하지만 매년 날짜가 반복되더라도 매년 여러 개의 oneTimeWindow 블록을 사용해야 합니다.

다음 YAML은 연간 동결을 위해 배포 정책을 적용하는 일회성(비반복) 시간 범위를 보여줍니다.

timeWindows:
  timeZone: "America/New_York"
  oneTimeWindows:
  - start: "2024-12-22 17:00"
    end: "2025-01-02 09:00"

이 YAML은 2024년 12월 22일 오후 5시부터 2025년 1월 2일 오전 9시까지의 시간 범위를 보여줍니다.

반복되는 주말 동결

다음 YAML은 금요일 오후 5시부터 월요일 오전 9시까지 주말에 출시를 제한하는 배포 정책을 적용하는 반복 시간 범위를 보여줍니다.

timeWindows:
  timeZone: "America/New_York"
  weeklyWindows:
  - daysOfWeek: [FRIDAY]
    startTime: "17:00"
    endTime: "24:00"
  - daysOfWeek: [SATURDAY, SUNDAY]
    startTime: "00:00"
    endTime: "24:00"
  - daysOfWeek: [MONDAY]
    startTime: "00:00"
    endTime: "09:00"

배포 정책 업데이트

배포 정책 업데이트는 다음 단계로 구성됩니다.

  1. 정책 구성 YAML을 수정합니다.

    Google Cloud 콘솔을 사용해서 정책을 만든 경우 배포 정책 세부정보 페이지에서 YAML 탭을 선택하여 YAML 구성을 가져올 수 있습니다. 그런 후 이 텍스트를 파일에 로컬로 복사하고 여기에서 수정할 수 있습니다.

  2. gcloud deploy apply --filename=을 사용하여 파일을 적용합니다.

    이렇게 하면 배포 정책 리소스가 새 구성으로 업데이트됩니다.

제한된 작업이 시도되면 배포 정책이 평가되기 때문에 모든 Cloud Deploy 리소스에 대한 모든 해당 작업에 업데이트된 정책이 적용됩니다. 즉 이전 제한사항은 잔여 효과가 없습니다. 예를 들어 12월 전체 기간 동안 restrictRollouts 차단이 있었고 12월 14일에 정책을 업데이트하여 12월 15일에 제한이 종료되었으면 12월 15일 이후부터 출시가 더 이상 차단되지 않습니다.

배포 정책 재정의

필요한 경우 배포 정책을 재정의할 수 있습니다. 예를 들어 프로덕션에서 배포 문제가 있어서 이를 롤백해야 하지만 출시를 방해하는 배포 정책이 있다면 잘못된 출시를 롤백하기 위해 이 정책을 재정의할 수 있습니다.

배포 정책을 재정의하려면 clouddeploy.deployPolicies.override IAM 권한이 있어야 합니다.

gcloud CLI 또는 Google Cloud 콘솔을 사용해서 정책을 재정의할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 정책으로 차단되는 작업 수행을 시도합니다.

    배포 정책에 따라 작업이 차단되었음을 나타내는 대화상자가 표시됩니다. 이 대화상자에는 이 작업을 차단하는 특정 정책에 대한 링크가 포함되어 있습니다.

  2. 제공된 텍스트 필드에 정책 이름을 입력하고 정책 재정의 시도를 클릭합니다.

    정책 재정의 권한이 있으면 이제 Cloud Deploy가 작업을 실행합니다.

gcloud CLI

gcloud CLI를 사용하여 배포 정책을 재정의하려면 해당 정책으로 방해되는 작업에 대한 명령어에 --override-deploy-policies를 추가합니다. 예를 들어 다음 명령어는 출시를 프로모션하고 다른 경우에 프로모션을 방지하는 특정 배포 정책을 재정의합니다.

 gcloud deploy releases promote --release=my-release-001 \
   --project=my-policy-testing-project \
   --region=us-central1 \
   --delivery-pipeline=my-pipeline \
   --to-target=prod-target \
   --override-deploy-policies=my-deploy-policy

배포 정책 삭제

배포 정책을 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 Cloud Deploy 배포 정책 페이지로 이동합니다.

    배포 정책 페이지 열기

    이 페이지에는 현재 프로젝트에서 사용 가능한 배포 정책 목록이 포함되어 있습니다.

  2. 삭제하려는 정책에 대해 작업 버튼을 선택하고 배포 정책 삭제를 클릭합니다.

  3. 배포 정책 이름을 입력하여 삭제를 확인하고 확인을 클릭합니다.

    이제 정책이 삭제되고 정책으로 제한되던 작업을 수행할 수 있습니다.

gcloud CLI

gcloud CLI를 사용해서 배포 정책을 삭제하려면 다음 명령어를 실행합니다.

 gcloud deploy deploy-policies delete \
    --project=[PROJECT] \
    --region=[REGION] \
    [POLICY_NAME]

다음을 바꿉니다.

  • [POLICY_NAME]

    정책 구성 파일에 정의된 정책의 이름입니다.

  • [PROJECT]

    배포 정책을 만든 Google Cloud 프로젝트의 프로젝트 ID입니다.

  • [REGION]

    배포 정책을 만든 리전입니다.

배포 정책 리소스를 삭제한 후, 영향을 받는 배포 파이프라인과 대상은 더 이상 정책의 적용을 받지 않으며, 다른 배포 정책의 영향을 받지 않는 한 제한되지 않습니다.

배포 정책 로깅

배포 정책이 평가될 때는 다음 작업에 대해 플랫폼 로그 항목이 생성됩니다.

  • 정책 평가

    요청이 평가되고 정책을 위반하면 플랫폼 로그가 작성됩니다. 요청이 정책을 위반하지만 정책이 일시중지되었거나 재정의되었기 때문에 요청이 허용되는 경우에도 로그가 작성됩니다. 정책을 위반하지 않기 때문에 요청에 권한이 부여된 경우에는 로그가 작성되지 않습니다.

  • 배포 정책 리소스가 변경되면 Pub/Sub 알림 실패가 발생합니다.

다음 단계