本文档介绍了如何创建虚拟机扩展政策,以便在 Compute Engine 虚拟机 (VM) 集群上自动安装和管理扩展程序。通过定义政策,您可以确保在符合您指定条件(例如虚拟机标签)的任何虚拟机上安装并维护特定扩展程序。
准备工作
- 通过运行以下命令安装 Beta 版组件:
gcloud components install beta
- 了解有关虚拟机扩展程序管理器的基础知识。
- 查看虚拟机扩展程序管理器配额。
- 如果尚未启用 Compute Engine API,请在 Google Cloud 项目中启用该 API。
- 确保您的虚拟机运行的是客机代理版本
20241209.01或更高版本。 - 如需查看虚拟机扩展程序管理器事件的调试日志,请为客机代理配置日志设置。
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 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 Extension Policy Admin (
roles/compute.vmExtensionPolicyAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含创建扩展政策所需的
compute.vmExtensionPolicies.create权限。如需详细了解 Compute Engine 中的 IAM 角色和权限,请参阅 Compute Engine 角色和权限。
创建虚拟机扩展程序政策
使用以下方法之一创建虚拟机扩展程序政策。此政策定义了要安装哪些扩展程序以及在哪些虚拟机上安装。
控制台
- 在 Google Cloud 控制台中,前往虚拟机扩展政策页面。
- 点击创建扩展程序政策。
- 在名称字段中,输入政策的名称。
- 可选:在说明字段中,输入政策的说明。
- 在优先级字段中,指定一个优先级编号,以解决政策之间的冲突。数字越小,优先级越高。默认值为 1000。
- 在可用区列表中,选择要应用此政策的可用区。
- 在扩展程序部分,点击添加扩展程序,然后针对要安装在目标虚拟机上的每个扩展程序执行以下操作:
- 从扩展程序列表中,选择一个扩展程序。请参阅支持的扩展程序。
- 在版本列表中,指定扩展程序的版本号。留空以选择最新版本。
- 对于 Ops Agent,您可以指定版本
2.58.0或更高版本。 - 对于 Extension for SAP 和 Extension for Compute 工作负载,请将此字段留空以选择最新版本。
- 对于 Ops Agent,您可以指定版本
- 可选:在配置文件内容字段中,输入扩展程序的配置参数。
- 在目标虚拟机实例部分中,选择要应用相应政策的虚拟机。如需选择具有特定标签的虚拟机,请点击添加标签,然后添加键值对。
- 点击创建。
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_1、EXTENSION_NAME_2:要添加到政策中的扩展程序的英文逗号分隔列表。您必须至少指定一个扩展程序。扩展名的有效值包括:ops-agentgoogle-cloud-sap-extensiongoogle-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
后续步骤
- 了解如何管理虚拟机扩展程序。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-12-10。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-12-10。"],[],[]] -