啟用 Apigee Hybrid 的營利功能

總覽

本文說明如何在混合式組織中,為 Apigee 的營利功能啟用週期性費用、儲值費用和設定費用。

必要條件

程序

如要為 Apigee hybrid 混合型營利功能啟用週期性費用、儲值費用和設定費用,您必須建立並設定 apigee-mint-task-scheduler Google 服務帳戶,並授予該帳戶 Pub/Sub 資料管道的存取權。

  1. 如果您尚未下載 1.16.13 版 Helm 圖表,請使用下列指令提取 Helm 圖表:

    在 $APIGEE_HELM_CHARTS_HOME 目錄中,使用 pull 指令將所有 Apigee hybrid Helm 圖表複製到本機儲存空間:

    export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
    export CHART_VERSION=1.16.13
    helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
    
  2. 建立 apigee-mint-task-scheduler 服務帳戶。

    如果您尚未建立 apigee-mint-task-scheduler 服務帳戶,請立即使用 create-service-account 工具建立。如要瞭解如何在全新混合安裝中建立服務帳戶,請參閱「步驟 4:建立服務帳戶」。

    1. 在 $APIGEE_HELM_CHARTS_HOME 目錄中找出 create-service-account 工具:
      $APIGEE_HELM_CHARTS_HOME/
          └── apigee-operator/
              └── etc/
                  └── tools/
                      └── create-service-account

      確認您可以執行 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
    2. 使用下列指令建立 apigee-mint-task-scheduler 服務帳戶,並將下載的憑證檔案儲存在 apigee-org 圖表目錄中:
      $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-mart 和 apigee-mint-task-scheduler 服務帳戶啟用控制層存取權。

    如果您尚未為 apigee-mart 和 apigee-mint-task-scheduler 服務帳戶啟用控制層存取權,請立即按照下列步驟操作。如要瞭解如何在全新混合安裝中啟用控制層存取權,請參閱「步驟 7:啟用控制層存取權」。

    1. 如果您不是與 Apigee hybrid 組織相關聯的 Google Cloud 雲端專案擁有者,請確認您的 Google Cloud 使用者帳戶具備 roles/apigee.admin (Apigee 組織管理員) 角色。您可以使用下列指令,查看指派給您的角色:
      gcloud projects get-iam-policy ${PROJECT_ID}  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:your_account_email"
      

      如果輸出內容不含 roles/apigee.admin,請參閱「步驟 7:啟用控制層存取權」一節,瞭解如何新增角色,或請具備該角色的使用者執行這個步驟。

    2. 呼叫 updateControlPlaneAccess API,並使用下列指令啟用必要權限:

      無資料落地

      curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
        -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      其中,下列是服務帳戶的電子郵件地址:

      • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com

      資料落地設定

      curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
        -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      其中:

      • 如果混合式安裝使用資料落地,CONTROL_PLANE_LOCATION 是控制層資料的位置。這是儲存客戶核心內容 (例如 Proxy 繫結) 的位置。如需清單,請參閱「可用的 Apigee API 控制層區域」。
      • 服務帳戶的電子郵件地址如下:

        • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com
    3. 驗證 apigee-mart 和 apigee-mint-task-scheduler 服務帳戶的控制層存取權。

      無資料落地

      curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess"

      資料落地設定

      curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess"

      輸出內容應包含 apigee-mart、apigee-mint-task-scheduler 和 apigee-runtime 服務帳戶,如下所示:

      {
        "synchronizerIdentities": [
          "serviceAccount:apigee-synchronizer@$ORG_NAME.iam.gserviceaccount.com"
        ],
        "analyticsPublisherIdentities": [
          "serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com"
        ]
      }
  4. 在 overrides.yaml 檔案中新增營利專屬段落。

    在 overrides.yaml 檔案中新增下列段落:

    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.16.13" #must be 1.15.1 or higher.
    
    mintTaskScheduler:
      # if using stored SA cert files:
      serviceAccountPath: MINT_TASK_SCHEDULER_SA_CERT_FILE.json
      # if using stored Kubernetes secrets:
      serviceAccountRef: MINT_TASK_SCHEDULER_SA_K8S_SECRET
      # if using Workload Identity on GKE:
      gsa: "apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com"
    
    # or if using Vault:
    serviceAccountSecretProviderClass: apigee-orgsakeys-spc
    

    如果您使用的是 Kubernetes Secret,請參閱「將資料儲存在 Kubernetes Secret 中」。

    如果您使用 Vault,請參閱「在 Hashicorp Vault 中儲存服務帳戶金鑰」。

    如果您使用 Vault,請務必將 mint 新增至組織專屬的 Secret 提供者類別。請參閱「建立 SecretProviderClass 物件」。

  5. 將變更套用至 apigee-operator、apigee-org 和 apigee-env 圖表。

    如果您已設定 $ORG_NAME 和 APIGEE_NAMESPACE 環境變數,可以在下列指令中使用:

    1. 安裝運算子。

      模擬測試:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

      安裝圖表:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    2. 安裝 Apigee 組織。

      模擬測試:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

      安裝圖表:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 安裝環境。為每個環境重複這個步驟。

      一次只能安裝一個環境。使用 --set env=ENV_NAME 指定環境。如果您已在殼層中設定 $ENV_NAME 環境變數,可以在下列指令中使用該變數:

      模擬測試:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_RELEASE_NAME 是用來追蹤 apigee-env 圖表安裝和升級作業的名稱。這個名稱不得與安裝作業中的其他 Helm 版本名稱重複。通常與 ENV_NAME 相同。不過,如果環境與環境群組同名,則必須為環境和環境群組使用不同的版本名稱,例如 dev-env-release 和 dev-envgroup-release。如要進一步瞭解 Helm 中的版本,請參閱 Helm 說明文件中的三大概念。

      安裝圖表:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
  6. 僅限 GKE 上的 Workload Identity:為 apigee-mint-task-scheduler 服務帳戶設定 Workload Identity。

    如果是全新安裝,除了步驟 11 (選用):設定 Workload Identity 中的步驟外,也請執行這個步驟。

    使用 apigee-org 圖表的 --dry-run 旗標執行 helm 升級時,輸出內容會包含設定 Workload Identity 所需的指令,以及正確的 Google 服務帳戶和 Kubernetes 服務帳戶名稱。

    1. 取得為 apigee-org 設定 Workload Identity 的指令,並在輸出內容中執行 NOTES: 下方的指令。

      helm upgrade $ORG_NAME apigee-org/ \
        --namespace $NAMESPACE \
        -f overrides.yaml \
        --dry-run=server

      輸出內容應包含與以下類似的指示 (位於 NOTES: 下方):

      NOTES:
      ...
      For organization GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective Kubernetes SA (KSA).
      gcloud iam service-accounts add-iam-policy-binding apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com \
            --role roles/iam.workloadIdentityUser \
            --member "serviceAccount:PROJECT_ID.svc.id.goog[APIGEE_NAMESPACE/apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID]" \
            --project PROJECT_ID
      

      Kubernetes 服務帳戶名稱的格式為 apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID。

    2. 執行指令,為 apigee-mint-task-scheduler 設定 Workload Identity。

另請參閱