步驟 4:建立服務帳戶

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

總覽

Apigee hybrid 會使用 Google Cloud 服務帳戶,讓混合式元件透過已授權的 API 呼叫進行通訊。

正式環境與非正式環境

本指南會提到「正式版」(「Prod」) 和「非正式版」(「Non-prod」) 安裝。實際工作環境安裝作業會針對更高的使用容量、儲存空間和擴充性進行調整。非正式安裝作業會使用較少資源,主要用於學習和示範。

為 Apigee hybrid 建立及設定服務帳戶時,請務必瞭解您要鎖定的安裝類型。

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

對於非正式環境安裝作業,您可以建立單一服務帳戶,套用至所有元件。

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

GKE 上的 Workload Identity

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

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

建立服務帳戶

create-service-account

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

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

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

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

    create-service-account 工具會讀取 PROJECT_ID 環境變數,在正確的專案中建立服務帳戶,因此 PROJECT_ID 必須設為 Google Cloud 專案 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 上安裝但不想使用工作負載身分,請使用 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 中建立服務帳戶,或使用 gcloud 中的 IAM API 建立服務帳戶。

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

控制台

非生產環境

非正式環境安裝:

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

正式版

正式安裝:

正式版安裝
服務帳戶名稱 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"

正式版

正式安裝:

請使用下列指令建立各個服務帳戶,並指派相應的 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 混合元件所需的角色。接下來,請建立混合式入口閘道所需的 TLS 憑證。

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