在 GKE on Azure 中创建和管理标记

本页面介绍如何在 GKE on Azure 集群中创建和管理标记。

概览

标记是一种可附加到 Google Cloud中的资源的键值对。您可以使用标记,根据资源是否有特定标记,有条件地允许或拒绝政策。

作为平台管理员,标记的一个用例可能是根据集群是否具有特定标记,有条件地授予 Identity and Access Management (IAM) 角色。例如,您可以将 GKE 配置为自动将 Identity and Access Management 角色授予承包商用户,以便他们可以访问通常仅供全职员工使用的特定集群。

创建标记后,您可以使用标记绑定将标记作为键值对附加到 Google Cloud 资源。对于每个键,您可以将一个值附加到资源。例如,如果您已将 env:dev 附加到 GKE on Azure 集群,则不能同时附加 env:prodenv:test。您最多可以向每个资源附加 50 个标记。

在 GKE on Azure 中,您可以通过多种方法为资源添加注解,如下表所示:

注释类型 级别 说明 示例
标签 GKE 集群

根据标记有条件地允许或拒绝政策。

如需了解详情,请参阅 Resource Manager 文档中的标记概览

自动向承包商用户授予访问权限,以访问通常仅供全职员工访问的特定集群。
GKE 集群标签 GKE 集群

整理 GKE 资源以跟踪使用情况和结算信息。

如需了解详情,请参阅集群标签

区分组织中特定成本中心或团队拥有的集群。
Kubernetes 标签 GKE 集群

将集群组件与资源相互关联,并管理资源生命周期。

如需了解更多信息,请参阅 Kubernetes 标签和选择器

要求在具有特定标签的节点上调度工作负载。

须知事项

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。
  • 确保您拥有以下 IAM 角色,以使用标记:

    • roles/resourcemanager.tagAdmin
    • roles/resourcemanager.tagUser

    如需了解这些角色授予的权限,请参阅 Resource Manager 文档中的所需权限

创建标记键和标记值

在将标记附加到 GKE 资源之前,您需要创建标记并配置其值。如需创建标记键和值,请参阅 Resource Manager 文档中的创建标记添加标记值

将标记附加到集群

如果您具有正确的权限,则可以使用 Google Cloud CLI、 Google Cloud 控制台或 Tags API 将标记附加到现有集群。

gcloud

如需创建标记绑定以将标记附加到集群,请运行以下命令:

gcloud resource-manager tags bindings create \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

请替换以下内容:

  • TAG_VALUE_ID:要附加的标记值的永久 ID 或命名空间名称。例如 tagValues/4567890123。如需详细了解标记标识符,请参阅标记定义和标识符
  • RESOURCE_ID:集群的完整资源名称,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/azureClusters/CLUSTER_NAME

    在资源 ID 中:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • CLUSTER_NAME:您的集群的名称。
  • CLUSTER_LOCATION:从中管理集群的 Google Cloud位置的名称。

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 元数据部分的标记旁边,点击 修改标记

  4. 如果您的组织未显示在标记面板中,请点击选择范围。选择您的组织,然后点击打开

  5. 标记面板中,选择添加标记

  6. 从列表中选择要附加的标记的键。您可以通过输入关键字来过滤列表。

  7. 从列表中选择要附加的标记的值。您可以通过输入关键字来过滤列表。

  8. 点击保存

  9. 确认对话框中,点击确认以附加标记。

    系统会显示一条通知以确认您的标记已更新。

API

要将标记附加到资源,必须首先创建包含标记值和资源永久 ID 的标记绑定的 JSON 表示法。如需详细了解标记绑定的格式,请参阅 TagBinding 参考文档

使用带有集群所在端点的 tagBindings.create 方法。

POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

LOCATION 替换为集群所在的 Google Cloud位置,例如 us-central1

JSON 请求正文:

{
  "parent": "RESOURCE_ID",
  "tagValue": "TAG_VALUE_ID"
}

请替换以下内容:

  • RESOURCE_ID:集群的完整资源名称,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/azureClusters/CLUSTER_NAME

    在资源 ID 中:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • CLUSTER_NAME:您的集群的名称。
  • TAG_VALUE_ID:要附加的标记值的永久 ID 或命名空间名称。例如 tagValues/4567890123。如需详细了解标记标识符,请参阅标记定义和标识符

输出类似于以下内容:

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
    "name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/azureClusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/azureClusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
}

列出附加到集群的标记

您可以使用 gcloud CLI、 Google Cloud 控制台或 Tags API 列出附加到集群的标记。

gcloud

如需获取附加到集群的标记绑定列表,请运行以下命令:

gcloud resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

替换以下内容:

  • RESOURCE_ID:集群的完整资源名称,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/azureClusters/CLUSTER_NAME

    在资源 ID 中:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • CLUSTER_NAME:您的集群的名称。
  • CLUSTER_LOCATION:您的集群所在的 Google Cloud位置。

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 在集群列表中,点击您要查看的集群的名称。

  3. 元数据部分的标记旁边,寻找当前附加的标记值。

API

如需获取集群的标记绑定列表,请使用带有集群所在端点的 tagBindings.list 方法。

GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

JSON 请求正文:

{
  "parent": RESOURCE_ID,
}

请替换以下内容:

  • RESOURCE_ID:集群的完整资源名称,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/azureClusters/CLUSTER_NAME

    在资源 ID 中:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • CLUSTER_NAME:您的集群的名称。

输出类似于以下内容:

"tagBindings": [
  {
    "name": "tagBindings/%2F%2Fcontainer.googleapis.com%2Fprojects%2Ftags-bugbash-project%2Flocations%2Fus-central1%2Fclusters%2Ftestcluster/tagValues/758072120217",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/azureClusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
]

从集群分离标记

您可以使用 gcloud CLI、Google Cloud 控制台或 Tags API 删除附加到集群的标记绑定资源,以从集群分离标记。如果您需要删除标记,必须先将标记从所有附加的资源分离。

gcloud

如需分离附加到集群的标记绑定,请运行以下命令:

gcloud resource-manager tags bindings delete \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

请替换以下内容:

  • TAG_VALUE_ID:要分离的标记值的永久性 ID 或命名空间名称。例如 tagValues/4567890123。 如需详细了解标记标识符,请参阅标记定义和标识符

  • RESOURCE_ID:集群的完整资源名称,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/azureClusters/CLUSTER_NAME

    在资源 ID 中:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • CLUSTER_NAME:您的集群的名称。
  • CLUSTER_LOCATION:您的集群所在的 Google Cloud 位置。

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 元数据部分的标记旁边,点击 修改标记

  4. 标记面板中,点击要分离的标记旁边的 删除项

  5. 点击保存

  6. 确认对话框中,点击确认以分离标记。

    系统会显示一条通知以确认您的标记已更新。

API

如需删除集群的标记绑定,请使用带有您的集群所在的端点的 tagBindings.delete 方法。

DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAG_BINDING_NAME

TAG_BINDING_NAME 替换为您要分离的 tagBinding 对象的完整资源名称。例如 tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID

删除标记键和标记值

在删除标记键和值之前,请确保标记已从所有资源分离。然后,请参阅删除标记,以删除相关键和值。

Identity and Access Management 条件和标记

您可以使用标记和 IAM 条件来有条件地向项目层次结构中的用户授予角色绑定。当您更改或删除附加到具有 IAM 政策(包含条件角色绑定)的集群的标记时,GKE 会根据更新的条件重新评估访问权限。

系统会在项目级(而不是在个别集群级)检查列出和创建 GKE 集群所需的授权。如果您将条件 IAM 角色绑定与集群级层标记结合使用来限制对特定集群的访问,则用户在项目中尝试列出或创建集群时可能会遇到错误。为避免这些错误,可以将标记附加到父项目,并使用条件角色绑定来授予列出或创建权限。如需了解角色和权限,请参阅 IAM 角色参考文档

如需详细了解 IAM 中的条件访问授权,请参阅 Identity and Access Management 条件和标记

后续步骤