本文說明如何建立 VM 擴充功能政策,以便在 Compute Engine 虛擬機器 (VM) 叢集上自動安裝及管理擴充功能。定義政策後,您可以確保符合指定條件 (例如 VM 標籤) 的 VM 都會安裝並維護特定擴充功能。
事前準備
- 執行下列指令,安裝 Beta 版元件:
gcloud components install beta
- 查看 VM 擴充功能管理工具的基本概念。
- 查看 VM 擴充功能管理工具配額。
- 如果尚未啟用,請在 Google Cloud 專案中啟用 Compute Engine API。
- 確認 VM 執行客體代理程式
20241209.01以上版本。 - 如要查看 VM 擴充功能管理工具事件的偵錯記錄,請設定訪客代理程式的記錄設定。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要在本機開發環境中執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
必要的 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:在五天內推出政策。預設的發布計畫為緩慢發布。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-agentgoogle-cloud-sap-extensiongoogle-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:以半形逗號分隔的鍵/值配對清單,其中鍵是擴充功能名稱,值是該擴充功能的設定檔路徑。這個檔案位於執行gcloud指令的 VM 上,而不是安裝擴充功能的 VM 上。或者,如要以內嵌字串形式提供設定,請使用
--config旗標,而非--config-from-file,例如EXTENSION_NAME_1="CONFIG_1"。您可以使用--config-from-file或--config,但不能在同一個指令中同時使用兩者。KEY_1=VALUE_1:以半形逗號分隔的鍵/值組合清單,用於定義選取器的納入標籤。VM 必須具備選取器中的所有指定標籤,才能成為目標。如果您多次指定--inclusion-labels,政策會以符合任何所提供選取器 (邏輯 OR) 的 VM 為目標。如果省略這個標記,政策會以專案中所有可用區的所有 VM 為目標。PRIORITY:定義政策優先順序的整數。數字越大,表示優先順序越高。預設值為 0。如果多項政策的優先順序相同,系統會將最近更新的政策套用至 VM。ROLLOUT_PLAN:指定slow_rollout或fast_rollout。 如要使用自訂推出計畫,請使用--rollout-custom-plan標記,而非--rollout-predefined-plan,並指定計畫名稱,例如:--rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME更改下列內容:
PROJECT_NUMBER:定義推出計畫的專案。ROLLOUT_PLAN_NAME:您定義的自訂推出計畫名稱。 如未指定任何發布計畫旗標,系統會使用slow_rollout。
ROLLOUT_CONFLICT_BEHAVIOR:指定系統偵測到區域和全域政策之間發生衝突時的行為。可能的值包括:""(空字串):使用區域政策值。overwrite:全域政策會覆寫區域政策。
範例 1
下列指令會建立名為
global-test-extension-policy的政策,為專案test-project安裝ops-agent擴充功能。--config-from-file標記會指定包含 Ops Agent YAML 設定的本機檔案路徑,--rollout-predefined-plan則會指定slow_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
下列指令會建立名為
global-test-extension-policy-2的政策,在標籤為env=prod的 VM 上,為專案test-project安裝ops-agent擴充功能。政策優先順序設為500,而--config-from-file標記會指定本機檔案的路徑,其中包含 Ops Agent 的 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 要安裝這些擴充功能。
控制台
- 前往 Google Cloud 控制台的「VM extension policies」(VM 擴充功能政策) 頁面。
- 按一下「建立擴充功能政策」。
- 在「Name」(名稱) 欄位中,輸入政策名稱。
- 選用:在「Description」(說明) 欄位中輸入政策的說明。
- 在「優先順序」欄位中,指定優先順序編號,以解決政策之間的衝突。數字越小越優先。預設值為 1000。
- 在「Zone」(可用區) 清單中,選取要套用這項政策的可用區。
- 在「擴充功能」部分,按一下「新增擴充功能」,然後針對要在目標 VM 上安裝的每個擴充功能執行下列操作:
- 從「擴充功能」清單中選取擴充功能。請參閱「支援的擴充功能」。
- 從「版本」清單中指定擴充功能版本號碼。如要選取最新版本,請留空。
- 作業套件代理程式可指定
2.58.0以上版本。 - 如果是 SAP 擴充功能和 Compute 工作負載擴充功能,請將欄位留空,選取最新版本。
- 作業套件代理程式可指定
- 選用:在「設定檔內容」欄位中,輸入擴充功能的設定參數。
- 在「Target VM instances」(目標 VM 執行個體) 區段中,選取要套用政策的 VM。如要選取具有特定標籤的 VM,請按一下「新增標籤」,然後新增鍵/值組合。
- 點選「建立」。
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-agentgoogle-cloud-sap-extensiongoogle-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:以半形逗號分隔的鍵/值配對清單,其中鍵是擴充功能名稱,值是該擴充功能的設定檔路徑。這個路徑位於執行gcloud指令的 VM 上,而非安裝擴充功能的 VM。或者,如要以內嵌字串形式提供設定,請使用
--config旗標而非--config-from-file,例如EXTENSION_NAME_1="CONFIG_1"。您可以使用--config-from-file或--config,但不能在同一個指令中同時使用兩者。KEY_1=VALUE_1:以半形逗號分隔的鍵/值組合清單,用於定義選擇器的納入標籤。VM 必須具備選取器中的所有指定標籤,才能成為目標。如果您多次指定--inclusion-labels,政策會以符合任何所提供選取器 (邏輯 OR) 的 VM 為目標。如果省略這個標記,政策會以指定可用區中的所有 VM 為目標。PRIORITY:介於 0 到 65535 之間的整數,用於定義政策的優先順序。數字越小越優先。預設值為 1000。如果區域中已有指定名稱的政策,這項指令就會失敗。
範例 1
下列指令會建立名為
test-extension-policy的政策,在專案test-project的區域us-central1-f中安裝ops-agent擴充功能。--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
下列指令會建立名為
test-extension-policy-2的政策,在可用區us-central1-f中為專案test-project安裝ops-agent擴充功能,適用於標籤為env=prod的 VM。政策優先順序設為500,而--config-from-file標記會指定本機檔案的路徑,其中包含 Ops Agent 的 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
後續步驟
- 瞭解如何管理 VM 擴充功能。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2026-01-15 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2026-01-15 (世界標準時間)。"],[],[]] -