本步驟說明如何建立 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」。
- 請確認已設定 HYBRID_FILES 和 PROJECT_ID 環境變數。
PROJECT_ID 必須設為您的 Google Cloud 專案 ID,因為
create-service-account工具會讀取 PROJECT_ID 環境變數,在正確的專案中建立服務帳戶。echo $HYBRID_FILES
echo $PROJECT_ID - 使用下列指令建立服務帳戶:
非正式環境
這個指令會建立名為
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.
-
使用下列指令,確認服務帳戶金鑰是否已建立。您必須妥善儲存這些私密金鑰。金鑰檔案名稱會加上 Google Cloud 專案名稱做為前置字元。
ls $HYBRID_FILES/service-accounts
結果應如下所示:
project_id-apigee-non-prod.json
- 如要進一步瞭解
create-service-account和所有選項,請參閱create-service-account。 - 如要瞭解相關的 Google Cloud 概念,請參閱「建立及管理服務帳戶」和「建立及管理服務帳戶金鑰」。
如果您打算在 GKE 上使用工作負載身分驗證混合式執行階段元件,就不需要為服務帳戶建立及下載憑證檔案。因此請勿使用 create-service-account 工具。請改為在 Google Cloud console 中或使用 IAM API 建立服務帳戶。gcloud
請按照「使用建立服務帳戶」一文中的操作說明,建立下列服務帳戶並指派下列角色:
控制台
非正式環境
非正式環境安裝:
| 服務帳戶名稱 | IAM 角色 |
|---|---|
apigee-non-prod |
|
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
非正式環境
非正式環境安裝:
- 建立
apigee-non-prod服務帳戶:gcloud iam service-accounts create apigee-non-prod \ --display-name="apigee-non-prod" \ --project=$PROJECT_ID
- 將 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"
- 驗證角色繫結:
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 角色。
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"
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"
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"
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"
apigee-runtime服務帳戶:gcloud iam service-accounts create apigee-runtime \ --display-name="apigee-runtime" \ --project=$PROJECT_ID
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"
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"
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