總覽
本步驟說明如何建立 Apigee Hybrid 運作所需的 Google Cloud 服務帳戶,並為這些帳戶指派適當的 IAM 角色。
這個程序會使用步驟 2:下載 Apigee Helm 圖表中定義的下列兩個環境變數。這些變數為選用項目。如果您未定義這些變數,請在程式碼範例中,將每個變數替換成適當的目錄路徑。
$APIGEE_HELM_CHARTS_HOME:您下載 Apigee Helm 圖表的目錄,如步驟 2:下載 Apigee Helm 圖表中所定義。$PROJECT_ID:您的 Google Cloud 雲端專案 ID,定義於 第 1 部分:專案和機構設定 - 步驟 1:啟用 API。
正式與非正式環境
本指南會提及正式版 (「正式版」) 和非正式版 (「非正式版」) 安裝作業。實際工作環境安裝作業會經過調整,以提高使用容量、儲存空間和擴充性。非實際工作環境安裝使用的資源較少,主要用於學習和示範。
為 Apigee Hybrid 建立及設定服務帳戶時,請務必留意目標安裝類型。
對於正式環境安裝作業,建議您為每個 Apigee Hybrid 元件建立專屬的服務帳戶。例如:執行階段、mart、指標、mint 等。每個元件都有專屬服務帳戶。
如果是非正式版安裝作業,您可以建立單一服務帳戶,並套用至所有元件。
如要進一步瞭解 Apigee 使用的服務帳戶和指派的角色,請參閱混合式元件使用的服務帳戶和角色。
驗證服務帳戶
Apigee Hybrid 支援下列 Google 服務帳戶驗證方法:
- Kubernetes Secret
- 服務帳戶 JSON 金鑰檔案 (以下各節選取分頁中的「JSON 檔案」)。
- 保管箱
- Workload Identity Federation for GKE (以下章節的選取分頁中為「WIF for GKE」)。
- 其他平台上的 Workload Identity Federation (以下章節選取分頁中的「其他平台上的 WIF」)。
在下一節中,選擇您打算使用的驗證類型程序。
建立服務帳戶
Apigee Hybrid 會使用下列服務帳戶:
正式環境
| 服務帳戶 | IAM 角色 | Apigee Helm 圖表 |
|---|---|---|
apigee-cassandra |
Storage 物件管理員 | apigee-datastore |
apigee-guardrails |
服務使用情形檢視者 | apigee-operator |
apigee-logger |
記錄寫入者 | apigee-telemetry |
apigee-mart |
Apigee Connect 代理程式 | apigee-org |
apigee-metrics |
Monitoring 指標寫入者 | apigee-telemetry |
apigee-mint-task-scheduler(僅在使用 Apigee Hybrid 適用的營利功能時為必填) |
不需要角色 | apigee-org |
apigee-runtime |
不需要角色 | apigee-env |
apigee-synchronizer |
Apigee 同步處理工具管理員 Storage 物件管理員 |
apigee-env |
apigee-watcher |
Apigee 執行階段代理程式 | apigee-org |
非正式環境
| 服務帳戶 | IAM 角色 | Apigee Helm 圖表 |
|---|---|---|
apigee-non-prod |
Storage 物件管理員 服務使用情形檢視者 記錄寫入者 Apigee Connect 代理程式 監控指標寫入者 Apigee Synchronizer 管理員 Apigee 執行階段代理程式 |
apigee-datastoreapigee-operatorapigee-telemetryapigee-orgapigee-env |
create-service-account 工具
Apigee 提供工具,
create-service-account,位於 apigee-operator/etc/tools 目錄中:
$APIGEE_HELM_CHARTS_HOME/ └── apigee-operator/ └── etc/ └── tools/ └── create-service-account
這項工具會建立服務帳戶、為每個帳戶指派 IAM 角色,並以 JSON 格式下載每個帳戶的憑證檔案。
使用下列標記來控管 create-service-account 建立的服務帳戶,以及使用的專案和目錄:
-
--prod建立所有支援的正式版服務帳戶。 這是預設行為:如果您執行create-service-account時未指定--prod或--non-prod,系統會將其視為您已傳遞--prod。 -
--prod SA_NAME會建立單一具名的正式版服務帳戶,例如--prod apigee-cassandra。 -
--non-prod建立具有所有 IAM 角色的單一非正式環境服務帳戶。帳戶名稱為「apigee-non-prod」。 -
--non-prod SA_NAME會建立名為 SA_NAME 的單一非正式環境服務帳戶,而非預設的apigee-non-prod,例如--non-prod my-non-prod-sa。 -
--name NAME(或-n NAME) 為單一建立的服務帳戶 NAME 命名。--name只會變更帳戶的名稱,不會變更帳戶獲得的 IAM 角色。使用--prod SA_NAME --name NAME為單一正式版服務帳戶命名,名稱不能是 SA_NAME。--name不適用於裸露的--prod(這會為每個支援的正式版服務帳戶名稱建立個別帳戶),且--non-prod的優先順序高於位置 SA_NAME。 -
--project-id PROJECT_ID會設定 Google Cloud 專案 ID。如果同時設定--project-id和PROJECT_ID環境變數,系統會優先採用--project-id,且工具會記錄警告。工具一律會記錄使用的專案 ID 來源,並在建立任何服務帳戶前,列印已解析的部署類型、專案和輸出目錄。 -
--dir DIRECTORY會將服務帳戶金鑰檔案寫入 DIRECTORY。 -
--skip-key-download會建立服務帳戶並指派 IAM 角色,但不會下載 JSON 金鑰檔案。如果您不需要金鑰檔案 (例如使用 Workload Identity Federation for GKE 驗證方法),請使用這個旗標。 -
--help會列印完整用量,包括支援的正式版服務帳戶名稱清單。
確認你可以執行 create-service-account。如果您剛下載圖表,create-service-account 檔案可能不是可執行模式。在 APIGEE_HELM_CHARTS_HOME 目錄中執行下列指令:
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --help
如果輸出內容顯示 permission denied,您需要讓檔案可執行,例如在 Linux、MacOS 或 UNIX 中使用 chmod,或在 Windows 檔案總管中,或在 Windows 中使用 icacls 指令。例如:
chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
建立服務帳戶
請選擇要在安裝作業中使用的服務帳戶驗證方法程序。詳情請參閱「Apigee Hybrid 中的服務帳戶驗證方法」。
Kubernetes Secret
如要準備服務帳戶金鑰檔案以儲存在 Kubernetes 密鑰中,可以使用 create-service-account 工具,並透過 --dir 旗標建立金鑰檔案的目錄,藉此建立服務帳戶金鑰檔案。
正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
使用下列指令建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊套件的路徑。系統可能會提示您建立每個服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
- 檢查
service-accounts目錄的內容,確認是否已建立服務帳戶檔案。輸出內容應如下所示:ls $APIGEE_HELM_CHARTS_HOME/service-accounts/my-project-apigee-cassandra.json my-project-apigee-mint-task-scheduler.json my-project-apigee-guardrails.json my-project-apigee-runtime.json my-project-apigee-logger.json my-project-apigee-synchronizer.json my-project-apigee-mart.json my-project-apigee-watcher.json my-project-apigee-metrics.json
非正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
執行下列指令來建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊圖表的路徑。系統可能會提示您建立服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
- 檢查
service-accounts目錄的內容,確認服務帳戶檔案是否已建立。輸出內容應如下所示:ls $APIGEE_HELM_CHARTS_HOME/service-accounts/my-project-apigee-non-prod.json
JSON 檔案
由於 Helm 不支援參照圖表目錄外的檔案,因此您要在圖表目錄中,為對應的混合式元件建立每個服務帳戶憑證檔案。
接下來,請選擇要設定正式或非正式安裝作業。
正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或在PROJECT_IDenvironment variablecreate-service-account指令中加入--project-id PROJECT_ID標記。 -
使用下列指令建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊套件的路徑。系統可能會提示您建立每個服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-cassandra \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-guardrails \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-operator$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-logger \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-mart \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-org$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-metrics \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-runtime \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-env$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-synchronizer \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-env$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-watcher \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-org如要啟用 Apigee Hybrid 營利功能 (Apigee Hybrid v1.15.1和後續版本):
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod apigee-mint-task-scheduler \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
- 檢查每個圖表的目錄內容,確認服務帳戶檔案是否已在正確的目錄中建立。輸出內容應如下所示:
ls ./apigee-operatorChart.yaml my-project-apigee-guardrails.json tests etc templates values.yamlls ./apigee-datastoreChart.yaml my-project-apigee-cassandra.json templates values.yamlls ./apigee-telemetryChart.yaml my-project-apigee-metrics.json values.yaml my-project-apigee-logger.json templatesls ./apigee-orgChart.yaml my-project-apigee-watcher.json my-project-apigee-mart.json values.yaml my-project-apigee-mint-task-scheduler.jsonls ./apigee-envChart.yaml templates my-project-apigee-runtime.json values.yaml my-project-apigee-synchronizer.json
非正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或在PROJECT_IDenvironment variablecreate-service-account指令中加入--project-id PROJECT_ID標記。 -
使用下列指令建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊套件的路徑。系統可能會提示您建立每個服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
- 確認在
apigee-datastore目錄中建立的服務帳戶檔案名稱:ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
Chart.yaml PROJECT_ID-apigee-non-prod.json templates values.yaml
- 將服務帳戶檔案複製到需要參照該檔案的其他圖表目錄:
cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-operator/
cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-org/
cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-env/
保管箱
如要準備服務帳戶金鑰檔案以儲存在 Vault 中,可以使用 create-service-account 工具,並透過 --dir 旗標建立金鑰檔案的目錄,藉此建立服務帳戶金鑰檔案。
正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
使用下列指令建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊套件的路徑。系統可能會提示您建立每個服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
- 檢查
service-accounts目錄的內容,確認是否已建立服務帳戶檔案。輸出內容應如下所示:ls $APIGEE_HELM_CHARTS_HOME/service-accounts/my-project-apigee-cassandra.json my-project-apigee-mint-task-scheduler.json my-project-apigee-guardrails.json my-project-apigee-runtime.json my-project-apigee-logger.json my-project-apigee-synchronizer.json my-project-apigee-mart.json my-project-apigee-watcher.json my-project-apigee-metrics.json
非正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
執行下列指令來建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊圖表的路徑。系統可能會提示您建立服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
- 檢查
service-accounts目錄的內容,確認服務帳戶檔案是否已建立。輸出內容應如下所示:ls $APIGEE_HELM_CHARTS_HOME/service-accounts/my-project-apigee-non-prod.json
GKE 適用的 WIF
使用下列指令為安裝作業建立服務帳戶:
正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
使用下列指令建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊套件的路徑。系統可能會提示您建立每個服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
-
使用下列指令驗證 Google 服務帳戶的建立作業:
gcloud iam service-accounts list --project $PROJECT_ID
輸出內容應如下所示:
DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my-project.iam.gserviceaccount.com False apigee-guardrails apigee-guardrails@my-project.iam.gserviceaccount.com False apigee-mart apigee-mart@my-project.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my-project.iam.gserviceaccount.com False apigee-mint-task-scheduler apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my-project.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my-project.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my-project.iam.gserviceaccount.com False
非正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
執行下列指令來建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊圖表的路徑。系統可能會提示您建立服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
-
使用下列指令驗證 Google 服務帳戶的建立作業:
gcloud iam service-accounts list --project $PROJECT_ID
輸出內容應如下所示:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my-project.iam.gserviceaccount.com False
選用:您不需要 Workload Identity Federation for GKE 的服務帳戶金鑰檔案。完成後,即可刪除 service-accounts 目錄。
其他平台上的 WIF
使用下列指令為安裝作業建立服務帳戶:
正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
使用下列指令建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊套件的路徑。系統可能會提示您建立每個服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
-
使用下列指令驗證 Google 服務帳戶的建立作業:
gcloud iam service-accounts list --project $PROJECT_ID
輸出內容應如下所示:
DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my-project.iam.gserviceaccount.com False apigee-guardrails apigee-guardrails@my-project.iam.gserviceaccount.com False apigee-mart apigee-mart@my-project.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my-project.iam.gserviceaccount.com False apigee-mint-task-scheduler apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my-project.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my-project.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my-project.iam.gserviceaccount.com False
非正式環境
- 確認已定義
PROJECT_ID環境變數。echo $PROJECT_ID
create-service-account tool uses the value of the。如未定義,請使用 Google Cloud 專案 ID 定義,或將PROJECT_IDenvironment variable--project-id PROJECT_ID標記新增至create-service-account指令。 -
執行下列指令來建立服務帳戶,其中
$APIGEE_HELM_CHARTS_HOME是您下載 Apigee Helm 資訊圖表的路徑。系統可能會提示您建立服務帳戶。請以y回覆。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
-
使用下列指令驗證 Google 服務帳戶的建立作業:
gcloud iam service-accounts list --project $PROJECT_ID
輸出內容應如下所示:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my-project.iam.gserviceaccount.com False
選用:您不需要 Workload Identity Federation for GKE 的服務帳戶金鑰檔案。完成後,即可刪除 service-accounts 目錄。
如要進一步瞭解服務帳戶和 create-service-account 工具,請參閱:
您現在已建立服務帳戶,並指派 Apigee Hybrid 元件所需的角色。接著,建立混合式 Ingress 閘道所需的 TLS 憑證。