步驟 4:建立服務帳戶

總覽

這個步驟說明如何建立 Apigee hybrid 運作所需的 Google Cloud 服務帳戶,並為這些帳戶指派適當的 IAM 角色。

這項程序會使用「步驟 2:下載 Apigee Helm 圖表」中定義的下列兩個環境變數。這些變數為選用。如果未定義,請在程式碼範例中將每個變數替換為適當的目錄路徑。

正式環境與非正式環境

本指南會提及「正式版」Production和「非正式版」Non-production安裝。正式版安裝作業經過調整,可提供更高的使用容量、儲存空間和擴充性。非正式環境安裝作業使用的資源較少,主要用於學習和示範。

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

如果是正式版安裝作業,建議您為每個 Apigee hybrid 元件建立個別的服務帳戶。例如,執行階段、mart、指標、mint、udca 等每個元件都有專屬的服務帳戶。

如果是非正式安裝,您可以建立單一服務帳戶,並套用至所有元件。

如要進一步瞭解 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-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-udca Apigee 數據分析代理人 apigee-org
apigee-env
apigee-watcher Apigee 執行階段代理人 apigee-org

非正式環境

服務帳戶 IAM 角色 Apigee Helm 圖表
apigee-non-prod Storage 物件管理員
記錄檔寫入者
Apigee Connect 代理
Monitoring 指標寫入者
Apigee 同步處理工具管理員
Apigee 數據分析代理
Apigee 執行階段代理
apigee-datastore
apigee-telemetry
apigee-org
apigee-env

create-service-account 工具

Apigee 在 apigee-operator/etc/tools 目錄中提供 create-service-account 工具:

$APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account

這項工具會建立服務帳戶、為每個帳戶指派 IAM 角色,並下載每個帳戶的 JSON 格式憑證檔案。

確認您可以執行 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 Secret 中的服務帳戶金鑰檔案,您可以使用 create-service-account 工具建立服務帳戶金鑰檔案,並使用 --dir 旗標建立金鑰檔案的目錄。

正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立各個服務帳戶。回覆 y。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 檢查 service-accounts 目錄的內容,確認服務帳戶檔案已建立。輸出內容應如下所示:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json

非正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立服務帳戶。回覆 y。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 檢查 service-accounts 目錄的內容,確認服務帳戶檔案已建立。輸出內容應如下所示:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

JSON 檔案

由於 Helm 不支援參照圖表目錄以外的檔案,因此您必須在對應混合元件的圖表目錄中,建立各個服務帳戶憑證檔案。

在後續步驟中,選擇要設定正式環境或非正式環境安裝。

正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立各個服務帳戶。以 y 回覆。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-cassandra \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-logger \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mart \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-metrics \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-runtime \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-synchronizer \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-watcher \
      --env prod \
      --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 \
      --profile apigee-mint-task-scheduler \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
  3. 將 apigee-udca JSON 檔案複製到 apigee-env 圖表目錄。無論是組織範圍或環境範圍作業,都必須具備這項權限。
    cp $APIGEE_HELM_CHARTS_HOME/apigee-org/$PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
  4. 檢查每個圖表目錄的內容,確認服務帳戶檔案是在正確的目錄中建立。輸出內容應如下所示:
    ls ./apigee-datastore
    Chart.yaml  my-project-apigee-cassandra.json  templates  values.yaml
    
    ls ./apigee-telemetry
    Chart.yaml                     my-project-apigee-metrics.json  values.yaml
    my-project-apigee-logger.json  templates
    
    ls ./apigee-org
    Chart.yaml                                  my-project-apigee-udca.json
    my-project-apigee-mart.json                 my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json  values.yaml
    
    ls ./apigee-env
    Chart.yaml                      my-project-apigee-synchronizer.json  templates
    my-project-apigee-runtime.json  my-project-apigee-udca.json          values.yaml
    

非正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立各個服務帳戶。以 y 回覆。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
  3. 驗證在 apigee-datastore 目錄中建立的服務帳戶檔案名稱:
    ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    Chart.yaml  PROJECT_ID-apigee-non-prod.json  templates  values.yaml
  4. 將服務帳戶檔案複製到其他需要參照該檔案的圖表目錄:
    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 旗標建立金鑰檔案的目錄。

正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立各個服務帳戶。以 y 回覆。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 檢查 service-accounts 目錄的內容,確認服務帳戶檔案已建立。輸出內容應如下所示:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json
    

非正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立服務帳戶。以 y 回覆。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 檢查 service-accounts 目錄的內容,確認服務帳戶檔案已建立。輸出內容應如下所示:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

GKE 適用的 WIF

使用下列指令,為安裝作業建立服務帳戶:

正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立各個服務帳戶。回覆 y。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 使用下列指令,確認 Google 服務帳戶已建立:
    gcloud iam service-accounts list --project $PROJECT_ID

    輸出內容大致如下:

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@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-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

非正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立服務帳戶。回覆 y。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 使用下列指令,確認 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
    

選用:您不需要 GKE 適用的 Workload Identity Federation 服務帳戶金鑰檔案。完成後,您可以刪除 service-accounts 目錄。

其他平台上的 WIF

使用下列指令,為安裝作業建立服務帳戶:

正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立各個服務帳戶。回覆 y。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 使用下列指令,確認 Google 服務帳戶已建立:
    gcloud iam service-accounts list --project $PROJECT_ID

    輸出內容大致如下:

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@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-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

非正式環境

  1. 確認已定義 PROJECT_ID 環境變數。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。如果未定義,請使用 Google Cloud 專案 ID 定義,或在 create-service-account 指令中加入 --project-id PROJECT_ID 旗標。

  2. 使用下列指令建立服務帳戶,其中 $APIGEE_HELM_CHARTS_HOME 是您下載 Apigee Helm 圖表的路徑。系統可能會提示您建立服務帳戶。回覆 y。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 使用下列指令,確認 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
    

選用:您不需要 GKE 適用的 Workload Identity Federation 服務帳戶金鑰檔案。完成後,您可以刪除 service-accounts 目錄。

如要進一步瞭解服務帳戶和 create-service-account 工具,請參閱:

您現在已建立服務帳戶,並指派 Apigee hybrid 元件所需的角色。接下來,建立混合式 ingress 閘道所需的 TLS 憑證。

下一步

1 2 3 4 (下一步) 步驟 5:設定服務帳戶驗證 6 7 8 9 10 11