服務帳戶和金鑰

本文說明在 Google Distributed Cloud 實作中建立叢集時,需要使用的 Google Cloud 服務帳戶和金鑰。

這裡的說明十分詳盡。如要簡短瞭解如何使用服務帳戶,請參閱「設定最少基礎架構」。

事前準備

建立 Google Cloud 專案

服務帳戶總覽

建立管理員和使用者叢集之前,您需要下列服務帳戶:

  • 元件存取服務帳戶
  • 連結並註冊服務帳戶
  • 記錄監控服務帳戶

視要啟用的功能而定,您可能也需要一些選用服務帳戶

瞭解服務帳戶和 Google Cloud 專案

建立服務帳戶時,請將其與 Google Cloud 專案建立關聯。 這個 Google Cloud 專案稱為服務帳戶的「父項專案」。本文中的所有 gcloud iam service-accounts create 指令都會使用預留位置變數 PROJECT_ID,這是服務帳戶父項專案的專案 ID。

如要判斷服務帳戶的父項專案,請查看服務帳戶的電子郵件地址。舉例來說,以下是名為 logger 的服務帳戶電子郵件地址。父項專案為 alice-123

logger@alice-123.iam.gserviceaccount.com

Identity and Access Management (IAM) 角色授予服務帳戶時,您是特定Google Cloud 專案,將角色授予服務帳戶。這遵循將資源的角色授予主體的通用模式

舉例來說,您可以將 bigquery.dataEditor 角色授予 bob-456 專案的 logger@alice-123.iam.gserviceaccount.com 服務帳戶。在本例中,服務帳戶是主體, Google Cloud 專案是資源。

您可以將角色授予服務帳戶,但專案不一定要是服務帳戶的父項專案,也可以是同一個專案。 Google Cloud 為提供這種彈性,本文中元件存取服務帳戶、connect-register 服務帳戶和記錄/監控服務帳戶的 gcloud projects add-iam-policy-binding 指令會使用 FLEET_HOST_PROJECT_ID 預留位置變數。這是機群主專案的 ID。在 gcloud projects add-iam-policy-binding 指令中指定為 FLEET_HOST_PROJECT_ID 的 ID 必須相同。

將角色授予服務帳戶的權限

您必須在相關的Google Cloud 專案中,為每個服務帳戶授予特定角色。舉例來說,您必須在車隊主機專案中,將 gkehub.editor 角色授予連線註冊服務帳戶。

如要授予 Google Cloud 專案角色,您必須具備該專案的特定權限。詳情請參閱「瞭解角色」一文中的roles/resourcemanager.projectIamAdmin

如果您具備必要權限,可以自行授予角色。 否則,貴機構的其他使用者必須授予您這些角色。

使用 gkeadm 自動建立服務帳戶

本頁面說明如何手動建立服務帳戶,以及如何將角色授予服務帳戶。除了手動執行這些步驟,您也可以在建立管理工作站時,讓 gkeadm 指令列工具建立部分服務帳戶並授予角色。即使您允許 gkeadm 建立服務帳戶,仍須手動建立元件存取服務帳戶,並授予必要的 IAM 角色,如下一節所述。如要進一步瞭解 gkeadm 可建立的服務帳戶,請參閱「建立管理工作站」。

元件存取服務帳戶

Google Distributed Cloud 會使用這個服務帳戶,代表您從 Artifact Registry 下載叢集元件。

  1. 建立元件存取服務帳戶:

    gcloud iam service-accounts create component-access-sa \
        --display-name "Component Access Service Account" \
        --project PROJECT_ID
    

    PROJECT_ID 替換為您要設為服務帳戶父項專案的 Google Cloud 專案 ID。

  2. 取得新建立的元件存取服務帳戶電子郵件地址:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. 為元件存取服務帳戶建立 JSON 金鑰:

    gcloud iam service-accounts keys create component-access-key.json \
    --iam-account COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL
    

    COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL 替換為元件存取服務帳戶的電子郵件地址。

將角色授予元件存取服務帳戶

您必須在專案中,為元件存取服務帳戶授予下列 IAM 角色。Google Distributed Cloud 必須具備下列角色,才能執行預檢檢查:

  • serviceusage.serviceUsageViewer
  • iam.roleViewer
  • iam.serviceAccountViewer
  • compute.viewer

如要授予角色:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.serviceAccountViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/compute.viewer"

FLEET_HOST_PROJECT_ID 替換為車隊主機專案的 ID。這可以是服務帳戶建立時所在的專案,也可以是其他專案。您在此指定的專案 ID,必須與授予 connect-register 服務帳戶和 logging-monitoring 服務帳戶 IAM 角色時指定的 ID 相同。

連結並註冊服務帳戶

Google Distributed Cloud 會使用這個服務帳戶,向車隊註冊叢集。

  1. 建立 connect-register 服務帳戶:

    gcloud iam service-accounts create connect-register-sa \
        --display-name "Connect-register Service Account" \
        --project PROJECT_ID
    

    PROJECT_ID 替換為您要設為 connect-register 服務帳戶父項的Google Cloud 專案 ID。

  2. 取得新建立的連結註冊服務帳戶電子郵件地址:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. 為連結註冊服務帳戶建立 JSON 金鑰:

    gcloud iam service-accounts keys create connect-register-key.json \
    --iam-account CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL
    

    CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL 替換為連結註冊服務帳戶的電子郵件地址。

  4. gkehub.editor 角色指派給 connect-register 服務帳戶:

    gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
        --member "serviceAccount:CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL" \
        --role "roles/gkehub.editor"
    

    您在此指定的專案 ID,必須與授予元件存取服務帳戶和記錄/監控服務帳戶 IAM 角色時指定的 ID 相同。

記錄監控服務帳戶

Google Distributed Cloud 會使用這個服務帳戶,將叢集的記錄檔和指標匯出至 Cloud LoggingCloud Monitoring

  1. 建立記錄/監控服務帳戶:

    gcloud iam service-accounts create logging-monitoring-sa \
        --display-name "Logging-monitoring Service Account" \
        --project=PROJECT_ID
    

    PROJECT_ID 替換為您要設為記錄/監控服務帳戶父項的Google Cloud 專案 ID。

  2. 取得新建立的記錄/監控服務帳戶電子郵件地址:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. 為記錄/監控服務帳戶建立 JSON 金鑰:

    gcloud iam service-accounts keys create logging-monitoring-key.json \
        --iam-account LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL
    

    LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL 替換為記錄監控服務帳戶的電子郵件地址。

將角色授予記錄檔監控服務帳戶

您必須在專案中將下列角色授予記錄/監控服務帳戶:

  • opsconfigmonitoring.resourceMetadata.writer
  • logging.logWriter
  • monitoring.metricWriter
  • monitoring.dashboardEditor
  • kubernetesmetadata.publisher

如要將必要角色授予記錄檔監控服務帳戶,請按照下列步驟操作:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.dashboardEditor"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/kubernetesmetadata.publisher"

您在此指定的專案 ID,必須與授予元件存取服務帳戶和連線註冊服務帳戶 IAM 角色時指定的 ID 相同。

選用服務帳戶

本節所述服務帳戶為選用。

稽核記錄服務帳戶

Google Distributed Cloud 會使用這個服務帳戶,將叢集的 Kubernetes 稽核記錄傳送至 Cloud 稽核記錄

如果您打算建立已啟用進階叢集的叢集 (設定拓撲網域時必須啟用),請使用稽核記錄的記錄/監控服務帳戶和金鑰,不必再建立其他服務帳戶。

  1. 建立稽核記錄服務帳戶:

    gcloud iam service-accounts create audit-logging-sa \
        --project PROJECT_ID
    

    PROJECT_ID 替換為您要設為稽核記錄服務帳戶上層的Google Cloud 專案 ID。

  2. 取得新建立的稽核記錄服務帳戶電子郵件地址:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. 為稽核記錄服務帳戶建立 JSON 金鑰:

    gcloud iam service-accounts keys create audit-logging-key.json \
    --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL 替換為稽核記錄服務帳戶的電子郵件地址。

您不需要授予稽核記錄服務帳戶任何角色。

二進位授權服務帳戶

Google Distributed Cloud 會使用這個服務帳戶呼叫 Binary Authorization API

如要瞭解如何建立二進位授權服務帳戶,請參閱「GKE On-Prem 適用的二進位授權」。

後續步驟

建立管理員工作站