啟用 Apigee Hybrid 的營利功能

總覽

本文說明在 Hybrid 機構中,如何為 Apigee 的營利功能啟用週期性費用、加值費用和設定費用。

必要條件

程序

如要啟用 Apigee Hybrid 營利功能的週期性費用、加值費用和設定費用,請建立並設定 apigee-mint-task-scheduler Google 服務帳戶,並授予該帳戶 Pub/Sub 資料管道的存取權。

  1. 如果尚未下載 1.14.3 版的 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.14.3
    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-martapigee-mint-task-scheduler 服務帳戶啟用控制層存取權。

    如果您尚未為 apigee-martapigee-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-martapigee-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-martapigee-mint-task-schedulerapigee-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.14.3" #must be 1.14.3 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 新增至機構專屬的密鑰提供者類別。請參閱「建立 SecretProviderClass 物件」。

  5. 將變更套用至 apigee-operatorapigee-orgapigee-env 圖表。

    如果您已設定 $ORG_NAMEAPIGEE_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-releasedev-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 圖表執行 helm 升級時,輸出內容會包含設定 Workload Identity 的必要指令,並提供正確的 Google 服務帳戶和 Kubernetes 服務帳戶名稱。--dry-run

    1. 取得為 apigee-org 設定工作負載身分的指令,然後在輸出內容中,於 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-sa]" \
            --project PROJECT_ID
      

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

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

另請參閱