本步驟說明如何建立 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
建立服務帳戶」一節。
- 確認已設定 HYBRID_FILES 和 PROJECT_ID 環境變數。
create-service-account
工具會讀取 PROJECT_ID 環境變數,在正確的專案中建立服務帳戶,因此 PROJECT_ID 必須設為 Google Cloud 專案 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 上安裝但不想使用工作負載身分,請使用 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 中建立服務帳戶,或使用 gcloud
中的 IAM API 建立服務帳戶。
請按照「使用」一文中的操作說明,建立下列服務帳戶,並指派下列角色:
控制台
非生產環境
非正式環境安裝:
服務帳戶名稱 | IAM 角色 |
---|---|
apigee-non-prod |
|
正式版
正式安裝:
正式版安裝 | |
---|---|
服務帳戶名稱 | 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"
正式版
正式安裝:
請使用下列指令建立各個服務帳戶,並指派相應的 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 混合元件所需的角色。接下來,請建立混合式入口閘道所需的 TLS 憑證。
1 2 3 4 (NEXT) 步驟 5:建立 TLS 憑證 6 7 9 10