管理專案標記

本文說明如何管理現有的標籤鍵/值組合,以便在 Google Distributed Cloud (GDC) Air-gapped 中整理專案。管理員可使用 Identity and Access Management (IAM) 權限查看標記。您可以為標記鍵/值組合設定權限,強制規定哪些使用者在標記繫結至專案時可以查看。您也可以查看現有代碼屬性,追蹤貴機構中代碼的套用方式,例如:

如要進一步瞭解標記,請參閱「標記總覽」。

本文適用於平台管理員群組中的 IT 管理員,負責在 GDC 領域中整理及管理專案。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

事前準備

  • 如要取得授予其他使用者標記權限或檢查標記鍵/值組合命名空間所需的權限,請要求機構組織 IAM 管理員授予您「標記管理員」角色 (tag-admin)。

  • 如要取得列出含標記專案所需的權限,請要求組織 IAM 管理員授予您專案檢視者角色 (project-viewer)。

將權限套用至代碼鍵/值組合

使用者必須具備特定角色繫結,才能存取及管理每個標記鍵和標記值。

為標記鍵和值設定適當的角色,以套用權限。

  1. 找出您要使用的角色名稱和必要命名空間,以便套用該角色。詳情請參閱「標記用量」。

  2. 為每個已定義的命名空間套用 RoleBinding 資源,授予標記的角色權限:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: BINDING_NAME
      namespace: NAMESPACE
    subjects:
    - kind: GROUP_SUBJECT
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: TAG_ROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    EOF
    

    更改下列內容:

    • BINDING_NAME:角色綁定的自訂名稱。

    • NAMESPACE:要套用角色繫結的命名空間,例如 platform、標記鍵的管理命名空間,或標記值的政策命名空間

    • GROUP_SUBJECT:要套用角色權限的主體類型。這個值可以是 UserGroupServiceAccount。詳情請參閱 Kubernetes 說明文件的「參照主體」。

    • GROUP_NAME:自訂群組名稱。

    • TAG_ROLE_NAME:要套用的標記角色名稱,例如 tag-admintag-KEY_NAME-admin

    舉例來說,如要將 tag-admin 角色權限授予使用者,以存取標記鍵/值組合,請將下列 RoleBinding 自訂資源部署至 platform 命名空間、標記鍵的 managementNamespace,以及標記值的 policyNamespace

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-binding
      namespace: platform
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-mgmt-binding
      namespace: g-t-tag-key-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-policy-binding
      namespace: g-t-tag-value-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    EOF
    

尋找管理命名空間

管理命名空間是系統為標記鍵建立的命名空間。

  • 找出特定標記鍵的管理命名空間:

    kubectl get tagkey TAG_KEY_NAME --namespace platform \
        -o jsonpath='{.status.managementNamespace}'
    

    TAG_KEY_NAME 替換為標記鍵的名稱。

找出政策命名空間

政策命名空間是系統為標記值建立的命名空間。

  • 找出特定標記值的政策命名空間:

    kubectl get tagvalue TAG_VALUE_NAME --namespace MANAGEMENT_NAMESPACE \
        -o jsonpath='{.status.policyNamespace}'
    

    更改下列內容:

    • TAG_VALUE_NAME:標記值的名稱。
    • MANAGEMENT_NAMESPACE:標記值對應標記鍵的管理命名空間名稱。詳情請參閱「尋找管理命名空間」。

列出含有標記的專案

如要列出與特定鍵/值組合繫結的所有專案,請完成下列步驟:

  • 列出所有符合標記鍵/值組合的專案:

    kubectl get project --namespace platform --label tag.resourcemanager.gdc.goog/TAG_KEY_NAME=TAG_VALUE_NAME
    

    更改下列內容:

    • TAG_KEY_NAME:標記鍵的名稱。
    • TAG_VALUE_NAME:標記值的名稱。

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

    NAME            AGE
    project-1       17d
    project-2       10d
    project-3       4d
    

後續步驟