通过创建扩展程序政策来安装虚拟机扩展程序

本文档介绍了如何创建虚拟机扩展政策,以便在 Compute Engine 虚拟机 (VM) 集群上自动安装和管理扩展程序。通过定义政策,您可以确保在符合您指定条件(例如虚拟机标签)的任何虚拟机上安装并维护特定扩展程序。

准备工作

所需 IAM 角色

如需获得创建扩展政策所需的权限,请让您的管理员为您授予 VM Extension Policy Admin (roles/compute.vmExtensionPolicyAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建扩展政策所需的 compute.vmExtensionPolicies.create 权限。

您也可以使用自定义角色或其他预定义角色来获取此权限。

如需详细了解 Compute Engine 中的 IAM 角色和权限,请参阅 Compute Engine 角色和权限

创建虚拟机扩展程序政策

使用以下方法之一创建虚拟机扩展程序政策。此政策定义了要安装哪些扩展程序以及在哪些虚拟机上安装。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机扩展政策页面。

    前往“虚拟机扩展程序政策”页面

  2. 点击创建扩展程序政策
  3. 名称字段中,输入政策的名称。
  4. 可选:在说明字段中,输入政策的说明。
  5. 优先级字段中,指定一个优先级编号,以解决政策之间的冲突。数字越小,优先级越高。默认值为 1000。
  6. 可用区列表中,选择要应用此政策的可用区。
  7. 扩展程序部分,点击添加扩展程序,然后针对要安装在目标虚拟机上的每个扩展程序执行以下操作:
    1. 扩展程序列表中,选择一个扩展程序。请参阅支持的扩展程序
    2. 版本列表中,指定扩展程序的版本号。留空以选择最新版本。
      • 对于 Ops Agent,您可以指定版本 2.58.0 或更高版本。
      • 对于 Extension for SAP 和 Extension for Compute 工作负载,请将此字段留空以选择最新版本。
    3. 可选:在配置文件内容字段中,输入扩展程序的配置参数。
  8. 目标虚拟机实例部分中,选择要应用相应政策的虚拟机。如需选择具有特定标签的虚拟机,请点击添加标签,然后添加键值对。
  9. 点击创建

gcloud

如需创建虚拟机扩展程序政策并将该政策部署到特定可用区中的虚拟机,请使用 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:虚拟机扩展政策的名称。
  • ZONE:此政策适用的可用区。
  • DESCRIPTION:政策的可选说明。
  • EXTENSION_NAME_1EXTENSION_NAME_2:要添加到政策中的扩展程序的英文逗号分隔列表。您必须至少指定一个扩展程序。扩展名的有效值包括:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2:以英文逗号分隔的键值对列表,其中键是扩展程序名称,值是扩展程序版本。如果您未指定扩展程序的版本,虚拟机扩展程序管理器会使用最新可用版本,并在有新版本可用时自动升级。

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2:以英文逗号分隔的键值对列表,其中键是扩展程序名称,值是相应扩展程序的配置文件路径。此路径位于运行 gcloud 命令的虚拟机上,而不是安装扩展程序的虚拟机上。

    或者,如需以内嵌字符串的形式提供配置,请使用 --config 标志,而不是 --config-from-file,例如 EXTENSION_NAME_1="CONFIG_1"。您可以使用 --config-from-file--config,但不能在同一命令中同时使用这两者。

  • KEY_1=VALUE_1:以英文逗号分隔的键值对列表,用于定义选择器的包含标签。虚拟机必须具有选择器中的所有指定标签才能成为目标对象。如果您多次指定 --inclusion-labels,则政策会定位到与所提供的任何选择器匹配的虚拟机(逻辑“或”)。如果省略此标志,则政策会以指定可用区中的所有虚拟机为目标。

  • PRIORITY:一个介于 0 到 65535 之间的整数,用于定义政策的优先级。数字越小,优先级越高。默认值为 1000。

    如果相应政策已存在于该可用区中,则该命令会失败。

示例 1

以下命令会创建一个名为 test-extension-policy 的政策,该政策会在可用区 us-central1-f 中为项目 test-project 安装 ops-agent 扩展程序。 --config-from-file 标志用于指定包含 Ops 代理 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 在具有标签 env=prod 的虚拟机上安装 ops-agent 扩展程序。政策优先级设置为 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

后续步骤