在符合 CNCF 標準的連結叢集上建立及管理標記

本頁說明如何在 GKE 連結叢集中建立及管理標記。

總覽

標記是可附加至 Google Cloud內資源的鍵/值組合。 您可以根據資源是否具備特定標記,有條件地允許或拒絕政策。

平台管理員可根據叢集是否具有特定標記,有條件地授予 Identity and Access Management (IAM) 角色。舉例來說,您可以設定 GKE,自動將 Identity and Access Management 角色授予約聘人員,讓他們存取通常只有全職員工才能存取的特定叢集。

建立標記後,您可以使用標記繫結,將標記以鍵/值組合的形式附加至 Google Cloud 資源。每個鍵只能附加一個值到資源。舉例來說,如果已將 env:dev 附加至叢集,就無法再附加 env:prodenv:test。每項資源最多可附加 50 個標記。

在 GKE 連結叢集中,您可以透過多種方法為資源加上註解,如下表所示:

註解類型 等級 說明 範例
標記 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 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。
  • 請確認您具備下列 IAM 角色,才能使用標記:

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

    如要瞭解這些角色授予的權限,請參閱「必要權限」。

建立標記鍵和值

如要將標記附加至 GKE 資源,請先建立標記並設定值。如要建立標記鍵和值,請參閱資源管理員文件中的「建立標記」和「新增標記值」。

將標記附加至叢集

如果您具備適當權限,可以使用 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。如要進一步瞭解標記 ID,請參閱「標記定義和 ID」。
  • RESOURCE_ID:叢集的完整資源名稱,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/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

如要將標記附加至資源,您必須先建立標記繫結的 JSON 表示法,其中包含標記值和資源的永久 ID。如要進一步瞭解標記繫結的格式,請參閱「TagBinding 參考資料」。

搭配叢集所在端點使用 tagBindings.create 方法。

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

LOCATION 替換為叢集所在位置,例如 us-central1。 Google Cloud

JSON 要求主體:

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

更改下列內容:

  • RESOURCE_ID:叢集的完整資源名稱,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/CLUSTER_NAME

    資源 ID:

    • PROJECT_ID:您的 Google Cloud 專案 ID
    • CLUSTER_NAME:叢集名稱。
  • TAG_VALUE_ID:要附加的標記值永久 ID 或命名空間名稱。例如:tagValues/4567890123。如要進一步瞭解標記 ID,請參閱「標記定義和 ID」。

輸出結果會與下列內容相似:

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
    "name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/attachedClusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/attachedClusters/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/attachedClusters/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/attachedClusters/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/attachedClusters/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。 如要進一步瞭解標記 ID,請參閱「標記定義和 ID」。

  • RESOURCE_ID:叢集的完整資源名稱,例如 //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/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

刪除標籤鍵和標籤值

刪除標記鍵和值之前,請確保標記已從所有資源卸離。然後參閱「刪除標記」一文,瞭解如何刪除鍵和值。

身分與存取權管理條件和標記

您可以使用標記和 IAM 條件,有條件地將角色繫結授予專案階層中的使用者。如果叢集附加的標記已變更或刪除,且叢集的身分與存取權管理政策含有條件式角色繫結,GKE 會根據更新後的條件重新評估存取權。

系統會在專案層級檢查列出及建立 GKE 叢集的授權,而非在個別叢集層級。如果您使用附帶叢集層級標記的條件式 IAM 角色繫結,限制特定叢集的存取權,使用者嘗試列出或建立專案中的叢集時,可能會發生錯誤。為避免發生這類錯誤,請將標記附加至父項專案,並使用條件式角色繫結授與清單或建立存取權。如要瞭解角色和權限,請參閱「IAM 角色參考資料」。

如要進一步瞭解 IAM 中的條件式存取權授予,請參閱「身分與存取權管理條件和標記」。

後續步驟