步驟 4:建立服務帳戶

本步驟說明如何建立 Apigee Hybrid 運作所需的 Google Cloud 服務帳戶。

總覽

Apigee Hybrid 會使用 Google Cloud 服務帳戶,允許 Hybrid 元件透過發出已授權的 API 呼叫進行通訊。

正式環境與非正式環境

本指南會提及正式版 (「正式版」) 和非正式版 (「非正式版」) 安裝作業。實際工作環境安裝作業會經過調整,以提高使用容量、儲存空間和擴充性。非實際工作環境安裝使用的資源較少,主要用於學習和示範。

為 Apigee Hybrid 建立及設定服務帳戶時,請務必留意目標安裝類型。

對於正式環境安裝作業,建議您為每個 Apigee Hybrid 元件建立個別的服務帳戶。舉例來說,執行階段、集市、指標、UDCA 等都會取得專屬的服務帳戶。

如果是非正式版安裝作業,您可以建立適用於所有元件的單一服務帳戶。

如要進一步瞭解 Apigee 使用的服務帳戶,以及指派給這些帳戶的角色,請參閱混合式元件使用的服務帳戶和角色

GKE 的 Workload Identity

在 GKE 上安裝 Apigee Hybrid 時,Google Cloud 提供「工作負載身分」選項,用於驗證 Hybrid 執行階段元件。這個選項不會使用下載的憑證檔案驗證服務帳戶,而是將您在這個步驟中建立的 Google Cloud 服務帳戶,與 Kubernetes 叢集中的 Kubernetes 服務帳戶建立關聯。

Workload Identity 僅適用於 GKE 安裝作業。

建立服務帳戶

create-service-account

在下列情況下使用 create-service-account 工具:

  • 您要在 GKE 以外的平台安裝
  • 您要在 GKE 上安裝,但不打算使用工作負載身分。

否則,請跳至「在 Google Cloud console 中建立服務帳戶,或使用 gcloud」。

  1. 請確認已設定 HYBRID_FILESPROJECT_ID 環境變數。

    PROJECT_ID 必須設為您的 Google Cloud 專案 ID,因為 create-service-account 工具會讀取 PROJECT_ID 環境變數,在正確的專案中建立服務帳戶。

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. 使用下列指令建立服務帳戶:

    非正式環境

    這個指令會建立名為 apigee-non-prod 的單一服務帳戶,用於非正式版安裝作業,並將服務帳戶的金鑰檔案下載至 $HYBRID_FILES/service-accounts 目錄。

    $HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts

    正式環境

    這個指令會為正式版安裝建立所有個別服務帳戶,並將服務帳戶的金鑰檔案下載至 $HYBRID_FILES/service-accounts 目錄。

    $HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts

    如果看到下列提示,請輸入 y

    [INFO]: gcloud configured project ID is project_id.
    Enter: y to proceed with creating service account in project: project_id
    Enter: n to abort.

    如果您要在 GKE 以外的平台安裝 Apigee Hybrid,或是在 GKE 上安裝但不想使用 Workload Identity,請使用 Apigee 提供的工具 create-service-account 建立服務帳戶、將角色指派給服務帳戶,並透過單一指令建立及下載服務帳戶的金鑰檔案。

    如果您是首次建立特定服務帳戶,工具會直接建立該帳戶,不會顯示其他提示。

    不過,如果看到下列訊息和提示,請輸入 y 來產生新金鑰:

    [INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists.
    ...
    [INFO]: The service account might have keys associated with it. It is recommended to use existing keys.
    Press: y to generate new keys.(this does not deactivate existing keys)
    Press: n to skip generating new keys.
  3. 使用下列指令,確認服務帳戶金鑰是否已建立。您必須妥善儲存這些私密金鑰。金鑰檔案名稱會加上 Google Cloud 專案名稱做為前置字元。
    ls $HYBRID_FILES/service-accounts

    結果應如下所示:

    project_id-apigee-non-prod.json

如果您打算在 GKE 上使用工作負載身分驗證混合式執行階段元件,就不需要為服務帳戶建立及下載憑證檔案。因此請勿使用 create-service-account 工具。請改為在 Google Cloud console 中或使用 IAM API 建立服務帳戶。gcloud

請按照「使用建立服務帳戶」一文中的操作說明,建立下列服務帳戶並指派下列角色:

控制台

非正式環境

非正式環境安裝:

服務帳戶名稱 IAM 角色
apigee-non-prod
  • Apigee 數據分析代理人
  • Apigee Connect 代理人
  • Apigee 執行階段代理人
  • Apigee 同步處理工具管理員
  • 記錄寫入者
  • Monitoring 指標寫入者
  • Storage 物件管理員

Production

正式版安裝:

正式版安裝
服務帳戶名稱 IAM 角色
apigee-cassandra Storage 物件管理員
apigee-logger 記錄寫入者
apigee-mart Apigee Connect 代理人
apigee-metrics Monitoring 指標寫入者
apigee-runtime 不需任何角色
apigee-synchronizer Apigee 同步處理工具管理員
apigee-udca Apigee 數據分析代理人
apigee-watcher Apigee 執行階段代理人

使用下列指令建立服務帳戶並指派 IAM 角色。

gcloud

非正式環境

非正式環境安裝:

  1. 建立 apigee-non-prod 服務帳戶:
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. 將 IAM 角色指派給服務帳戶:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"
  3. 驗證角色繫結:
    gcloud projects get-iam-policy ${PROJECT_ID} \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"

Production

正式版安裝:

使用下列指令建立每個服務帳戶,並指派對應的 IAM 角色。

  1. apigee-cassandra 服務帳戶:
    gcloud iam service-accounts create apigee-cassandra \
      --display-name="apigee-cassandra" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
  2. apigee-logger 服務帳戶:
    gcloud iam service-accounts create apigee-logger \
      --display-name="apigee-logger" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  3. apigee-mart 服務帳戶:
    gcloud iam service-accounts create apigee-mart \
      --display-name="apigee-mart" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
  4. apigee-metrics 服務帳戶:
    gcloud iam service-accounts create apigee-metrics \
      --display-name="apigee-metrics" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  5. apigee-runtime 服務帳戶:
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. apigee-synchronizer 服務帳戶:
    gcloud iam service-accounts create apigee-synchronizer \
      --display-name="apigee-synchronizer" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
  7. apigee-udca 服務帳戶:
    gcloud iam service-accounts create apigee-udca \
      --display-name="apigee-udca" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
  8. apigee-watcher 服務帳戶:
    gcloud iam service-accounts create apigee-watcher \
      --display-name="apigee-watcher" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"

如要進一步瞭解如何使用 gcloud 建立服務帳戶,請參閱「建立服務帳戶」。

您現在已建立服務帳戶,並指派 Apigee Hybrid 元件所需的角色。接著,請建立混合式 Ingress 閘道所需的 TLS 憑證。

1 2 3 4 (下一步) 步驟 5:建立 TLS 憑證 6 7 8 9 10