步驟 4:建立服務帳戶

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

總覽

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

正式環境與非正式環境

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

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

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

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

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

GKE 的工作負載身分

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

工作負載身分僅適用於 GKE 安裝作業。

建立服務帳戶

請按照下列程序,為混合式安裝建立 Google Cloud 服務帳戶:

  • create-service-account 工具:如果您要在 GKE 以外的平台安裝 Apigee Hybrid,或是在 GKE 上安裝但不想使用工作負載身分,請使用 Apigee 提供的 create-service-account 工具,以單一指令建立服務帳戶、將角色指派給服務帳戶,以及建立並下載服務帳戶的金鑰檔案。按照「
    使用 建立服務帳戶create-service-account」一文中的程序操作。
  • Google Cloud console 或 gcloud如果您要在 GKE 上安裝 Apigee Hybrid,並打算使用 Workload Identity,請使用 Google Cloud console 或 gcloud建立服務帳戶,不必下載憑證檔案。請按照「
    在 Google Cloud console 中或使用 gcloud 建立服務帳戶」一文中的程序操作。

使用 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.

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

    不過,如果看到下列訊息和提示,請輸入 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

在 Google Cloud console 中或使用 gcloud 建立服務帳戶

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

否則,請跳至「使用 create-service-account 建立服務帳戶」。

控制台

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

非正式環境

非正式環境安裝:

服務帳戶名稱 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 執行階段代理人

gcloud

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

非正式環境

非正式環境安裝:

  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 11