本步驟說明如何建立 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 建立服務帳戶」。
- 請確認已設定 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.
如果您是首次建立特定服務帳戶,工具會直接建立該帳戶,不會顯示其他提示。
不過,如果看到下列訊息和提示,請輸入 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 概念,請參閱「建立及管理服務帳戶」和「建立及管理服務帳戶金鑰」。
在 Google Cloud console 中或使用 gcloud 建立服務帳戶
如果您打算在 GKE 上使用工作負載身分驗證混合式執行階段元件,就不需要為服務帳戶建立及下載憑證檔案。因此請勿使用 create-service-account 工具。請改為在 Google Cloud console 中或使用 gcloud 中的 IAM API 建立服務帳戶。
否則,請跳至「使用 create-service-account 建立服務帳戶」。
控制台
請按照「建立服務帳戶」一文中的操作說明,建立下列服務帳戶並指派下列角色:
非正式環境
非正式環境安裝:
| 服務帳戶名稱 | 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 執行階段代理人 |
gcloud
使用下列指令建立服務帳戶並指派 IAM 角色。
非正式環境
非正式環境安裝:
- 建立
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 11