확장 프로그램 정책을 만들어 VM 확장 프로그램 설치

이 문서에서는 Compute Engine 가상 머신 (VM)의 전체에 확장 프로그램을 자동으로 설치하고 관리할 수 있는 VM 확장 프로그램 정책을 만드는 방법을 설명합니다. 정책을 정의하면 VM 라벨과 같이 지정한 기준과 일치하는 모든 VM에 특정 확장 프로그램이 설치되고 유지관리되도록 할 수 있습니다.

시작하기 전에

필요한 IAM 역할

확장 프로그램 정책을 만드는 데 필요한 권한을 얻으려면 관리자에게 VM 확장 프로그램 정책 관리자 (roles/compute.vmExtensionPolicyAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 확장 프로그램 정책을 만드는 데 필요한 compute.vmExtensionPolicies.create 권한이 포함되어 있습니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 가져올 수도 있습니다.

Compute Engine의 IAM 역할 및 권한에 대한 자세한 내용은 Compute Engine 역할 및 권한을 참고하세요.

정책 우선순위 및 충돌 해결

동일한 VM에 여러 정책이 적용되는 경우 VM Extension Manager는 정책 우선순위를 사용하여 충돌을 해결합니다.

동일한 확장자에 대해 두 정책이 충돌하는 경우 우선순위가 더 높은 정책이 우선합니다. 우선순위 값의 범위는 0~65535이며 숫자가 작을수록 우선순위가 높습니다. 기본 우선순위는 1000입니다. 여러 정책의 우선순위가 동일한 경우 VM 확장 프로그램 관리자는 가장 최근에 업데이트된 정책을 VM에 적용합니다. 우선순위가 낮은 정책이 VM에 계속 적용되는 경우 정책을 삭제해도 확장 프로그램이 삭제되지는 않습니다.

전역 VM 확장 프로그램 정책 만들기

출시 계획에 따라 프로젝트 내 여러 영역의 VM에 확장 프로그램을 설치하는 전역 VM 확장 프로그램 정책을 만들 수 있습니다. 전역 VM 확장 프로그램 정책은 VM에 직접 적용되지 않습니다. 대신 정책이 출시되면 VM 확장 프로그램 관리자가 출시 계획에 따라 각 영역에 정책을 만듭니다. 그런 다음 이러한 정책은 각 영역 내 VM의 확장 프로그램 설치를 관리합니다.

gcloud 또는 globalVmExtensionPolicies.insert 메서드를 사용하여 전역 확장 프로그램 정책을 만들 수 있습니다.

출시 계획 정보

전역 VM 확장 프로그램 정책은 출시 계획을 사용하여 여러 위치에 확장 프로그램의 배포를 관리합니다. 사전 정의된 출시 계획 중 하나를 사용하거나 맞춤 출시 계획을 만들 수 있습니다.

사전 정의된 출시 계획

  • slow_rollout: 5일 동안 정책을 출시합니다. 느린 출시가 기본 출시 계획입니다.
  • fast_rollout: 모든 영역에 정책을 즉시 출시합니다.

맞춤 출시 계획

rolloutPlans.insert 메서드를 사용하여 맞춤 출시 계획을 만들 수 있습니다. 예를 들어 다음 JSON은 두 개의 영역을 타겟팅하는 test-rollout-plan라는 출시 계획을 정의합니다.

{
  "name": "test-rollout-plan",
  "waves": [
    {
      "selectors": [
        {
          "locationSelector": {
            "includedLocations": [
              "us-central1-a",
              "us-west1-a"
            ]
          }
        }
      ],
      "validation": {
        "type": "time",
        "timeBasedValidationMetadata": {
          "waitDuration": "0s"
        }
      },
      "orchestrationOptions": {
        "maxConcurrentResourcesPerLocation": "10",
        "maxConcurrentLocations": "10"
      }
    }
  ]
}

그런 다음 예 2와 같이 전역 정책을 만들 때 이 맞춤 출시 계획을 사용할 수 있습니다.

전역 정책 만들기

gcloud beta compute global-vm-extension-policies create 명령어를 사용하여 전역 VM 확장 프로그램 정책을 만듭니다.

  gcloud beta compute global-vm-extension-policies create POLICY_NAME 
--description="DESCRIPTION"
--extensions=EXTENSION_NAME_1,EXTENSION_NAME_2
--version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2
--config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2
--inclusion-labels=KEY_1=VALUE_1
--priority=PRIORITY
--rollout-predefined-plan=ROLLOUT_PLAN
--rollout-conflict-behavior=ROLLOUT_CONFLICT_BEHAVIOR

다음을 바꿉니다.

  • POLICY_NAME: VM 확장 프로그램 정책의 이름입니다.
  • DESCRIPTION: 정책에 대한 설명입니다(선택사항).
  • EXTENSION_NAME_1,EXTENSION_NAME_2: 정책에 추가할 확장 프로그램의 쉼표로 구분된 목록입니다. 확장 프로그램을 하나 이상 지정해야 합니다. 확장자의 유효한 값은 다음과 같습니다.
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: 키가 확장 프로그램 이름이고 값이 확장 프로그램 버전인 키-값 쌍의 쉼표로 구분된 목록입니다. 확장 프로그램의 버전을 지정하지 않으면 VM 확장 프로그램 관리자가 사용 가능한 최신 버전을 사용하고 새 버전이 제공되면 자동으로 업그레이드합니다.

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: 키가 확장 프로그램 이름이고 값이 해당 확장 프로그램의 구성 파일 경로인 쉼표로 구분된 키-값 쌍 목록입니다. 이 파일은 확장 프로그램을 설치하는 VM이 아닌 gcloud 명령어를 실행하는 VM에 있습니다.

    또는 구성을 인라인 문자열로 제공하려면 --config-from-file 대신 --config 플래그를 사용합니다(예: EXTENSION_NAME_1="CONFIG_1"). --config-from-file 또는 --config 중 하나를 사용할 수 있지만 동일한 명령어에서 둘 다 사용할 수는 없습니다.

  • KEY_1=VALUE_1: 선택기의 포함 라벨을 정의하는 쉼표로 구분된 키-값 쌍 목록입니다. VM이 타겟팅되려면 선택기에 지정된 모든 라벨이 있어야 합니다. --inclusion-labels를 여러 번 지정하면 정책은 제공된 선택자 중 하나라도 일치하는 VM을 타겟팅합니다 (논리합). 이 플래그를 생략하면 정책이 모든 영역의 프로젝트에 있는 모든 VM을 타겟팅합니다.

  • PRIORITY: 정책의 우선순위를 정의하는 정수입니다. 숫자가 클수록 우선순위가 높습니다. 기본값은 0입니다. 여러 정책의 우선순위가 동일한 경우 가장 최근에 업데이트된 정책이 VM에 적용됩니다.

  • ROLLOUT_PLAN: slow_rollout 또는 fast_rollout을 지정합니다. 맞춤 출시 계획을 사용해야 하는 경우 --rollout-predefined-plan 대신 --rollout-custom-plan 플래그를 사용하고 계획 이름을 지정합니다. 예를 들면 다음과 같습니다.

      --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

    다음을 바꿉니다.

    • PROJECT_NUMBER: 출시 계획이 정의된 프로젝트입니다.
    • ROLLOUT_PLAN_NAME: 정의한 맞춤 출시 계획의 이름입니다. 롤아웃 계획 플래그가 지정되지 않으면 slow_rollout이 사용됩니다.
  • ROLLOUT_CONFLICT_BEHAVIOR: 영역 정책과 전역 정책 간에 충돌이 감지될 때의 동작을 지정합니다. 가능한 값은 다음과 같습니다.

    • "" (빈 문자열): 지역 정책 값이 사용됩니다.
    • overwrite: 전역 정책이 영역 정책을 덮어씁니다.

      자세한 내용은 --rollout-conflict-behavior 플래그를 참고하세요.

    예시 1

    다음 명령어는 test-project 프로젝트에 ops-agent 확장 프로그램을 설치하는 global-test-extension-policy라는 정책을 만듭니다. --config-from-file 플래그는 Ops Agent의 YAML 구성이 포함된 로컬 파일의 경로를 지정하고 --rollout-predefined-planslow_rollout 계획을 지정합니다.

    gcloud beta compute global-vm-extension-policies create global-test-extension-policy \
        --project=test-project \
        --extensions=ops-agent \
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
        --rollout-predefined-plan=slow_rollout

    예시 2

    다음 명령어는 라벨이 env=prod인 VM에 test-project 프로젝트의 ops-agent 확장 프로그램을 설치하는 global-test-extension-policy-2라는 정책을 만듭니다. 정책 우선순위는 500로 설정되고 --config-from-file 플래그는 운영 에이전트의 YAML 구성이 포함된 로컬 파일의 경로를 지정합니다. --rollout-custom-plan 플래그는 맞춤 출시 계획을 지정합니다.

     gcloud beta compute global-vm-extension-policies create global-test-extension-policy-2 \
        --project=test-project \
        --extensions=ops-agent \
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
        --priority=500 \
        --inclusion-labels=env=prod \
        --rollout-custom-plan=projects/12345678/locations/global/rolloutPlans/test-rollout-plan

영역 VM 확장 프로그램 정책 만들기

다음 방법 중 하나를 사용하여 영역 VM 확장 프로그램 정책을 만듭니다. 이 영역 정책은 특정 영역에서 설치할 확장 프로그램과 VM을 정의합니다.

콘솔

  1. Google Cloud 콘솔에서 VM 확장 프로그램 정책 페이지로 이동합니다.

    VM 확장 프로그램 정책으로 이동

  2. 확장 프로그램 정책 만들기를 클릭합니다.
  3. 이름 필드에 정책 이름을 입력합니다.
  4. 선택사항: 설명 필드에 정책에 대한 설명을 입력합니다.
  5. 우선순위 필드에서 정책 간 충돌을 해결할 우선순위 번호를 지정합니다. 숫자가 낮을수록 우선순위가 높습니다. 기본값은 1,000입니다.
  6. 영역 목록에서 이 정책을 적용할 영역을 선택합니다.
  7. 확장 프로그램 섹션에서 확장 프로그램 추가를 클릭하고 대상 VM에 설치하려는 각 확장 프로그램에 대해 다음 단계를 따릅니다.
    1. 확장 프로그램 목록에서 확장 프로그램을 선택합니다. 지원되는 확장 프로그램을 참고하세요.
    2. 버전 목록에서 확장 프로그램의 버전 번호를 지정합니다. 최신 버전을 선택하려면 비워 두세요.
      • 운영 에이전트의 경우 버전 2.58.0 이상을 지정할 수 있습니다.
      • SAP용 확장 프로그램 및 컴퓨팅 워크로드용 확장 프로그램의 경우 최신 버전을 선택하려면 필드를 비워 둡니다.
    3. 선택사항: 구성 파일 콘텐츠 필드에 확장 프로그램의 구성 매개변수를 입력합니다.
  8. 대상 VM 인스턴스 섹션에서 정책의 VM을 선택합니다. 특정 라벨이 있는 VM을 선택하려면 라벨 추가를 클릭하고 키-값 쌍을 추가합니다.
  9. 만들기를 클릭합니다.

gcloud

영역 VM 확장 프로그램 정책을 만들고 특정 영역의 VM에 정책을 출시하려면 gcloud beta compute zone-vm-extension-policies create 명령어를 사용합니다.

gcloud beta compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --description="DESCRIPTION" \
    --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
    --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
    --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
    --inclusion-labels=KEY_1=VALUE_1 \
    --priority=PRIORITY

다음을 바꿉니다.

  • POLICY_NAME: VM 확장 프로그램 정책의 이름입니다.
  • ZONE: 이 정책이 적용되는 영역입니다.
  • DESCRIPTION: 정책에 대한 설명입니다(선택사항).
  • EXTENSION_NAME_1,EXTENSION_NAME_2: 정책에 추가할 확장 프로그램의 쉼표로 구분된 목록입니다. 확장 프로그램을 하나 이상 지정해야 합니다. 확장자의 유효한 값은 다음과 같습니다.
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: 키가 확장 프로그램 이름이고 값이 확장 프로그램 버전인 쉼표로 구분된 키-값 쌍 목록입니다. 확장 프로그램의 버전을 지정하지 않으면 VM 확장 프로그램 관리자가 사용 가능한 최신 버전을 사용하고 새 버전이 제공되면 자동으로 업그레이드합니다.

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: 키가 확장 프로그램 이름이고 값이 해당 확장 프로그램의 구성 파일 경로인 쉼표로 구분된 키-값 쌍 목록입니다. 이 경로는 확장 프로그램을 설치하는 VM이 아닌 gcloud 명령어를 실행하는 VM에 있습니다.

    또는 구성을 인라인 문자열로 제공하려면 --config-from-file 대신 --config 플래그를 사용합니다(예: EXTENSION_NAME_1="CONFIG_1"). --config-from-file 또는 --config 중 하나를 사용할 수 있지만 동일한 명령어에서 둘 다 사용할 수는 없습니다.

  • KEY_1=VALUE_1: 선택기의 포함 라벨을 정의하는 쉼표로 구분된 키-값 쌍 목록입니다. VM이 타겟팅되려면 선택기에 지정된 모든 라벨이 있어야 합니다. --inclusion-labels를 여러 번 지정하면 정책은 제공된 선택기 중 하나라도 일치하는 VM을 타겟팅합니다 (논리합). 이 플래그를 생략하면 정책이 지정된 영역의 모든 VM을 타겟팅합니다.

  • PRIORITY: 정책의 우선순위를 정의하는 0~65535 사이의 정수입니다. 숫자가 낮을수록 우선순위가 높습니다. 기본값은 1000입니다.

    지정된 이름의 정책이 영역에 이미 있으면 명령어가 실패합니다.

예시 1

다음 명령어는 test-project 프로젝트의 us-central1-f 영역에 ops-agent 확장 프로그램을 설치하는 test-extension-policy라는 정책을 만듭니다. --config-from-file 플래그는 Ops Agent의 YAML 구성이 포함된 로컬 파일의 경로를 지정합니다.

gcloud beta compute zone-vm-extension-policies create test-extension-policy  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml"

예시 2

다음 명령어는 env=prod 라벨이 있는 VM의 us-central1-f 영역에 test-project 프로젝트용 ops-agent 확장 프로그램을 설치하는 test-extension-policy-2라는 정책을 만듭니다. 정책 우선순위는 500로 설정되고 --config-from-file 플래그는 운영 에이전트의 YAML 구성이 포함된 로컬 파일의 경로를 지정합니다.

 gcloud beta compute zone-vm-extension-policies create test-extension-policy-2  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --priority=500 \
    --inclusion-labels=env=prod

다음 단계