總覽
本文說明在 Hybrid 機構中,如何為 Apigee 的營利功能啟用週期性費用、加值費用和設定費用。
必要條件
- Apigee Hybrid 1.14.3 以上版本。如需升級操作說明,請參閱「升級 Apigee Hybrid」。
- 為 Apigee Hybrid 專案啟用營利功能。請參閱「啟用 Apigee 營利服務」。
程序
如要啟用 Apigee Hybrid 營利功能的週期性費用、加值費用和設定費用,請建立並設定 apigee-mint-task-scheduler
Google 服務帳戶,並授予該帳戶 Pub/Sub 資料管道的存取權。
- 如果尚未下載 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
- 建立
apigee-mint-task-scheduler
服務帳戶。如果您尚未建立
apigee-mint-task-scheduler
服務帳戶,請使用create-service-account
工具立即建立。如要瞭解如何建立服務帳戶,請參閱步驟 4:建立服務帳戶。-
在 $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
-
執行下列指令,建立
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
-
在 $APIGEE_HELM_CHARTS_HOME 目錄中找出
- 為
apigee-mart
和apigee-mint-task-scheduler
服務帳戶啟用控制層存取權。如果您尚未為
apigee-mart
和apigee-mint-task-scheduler
服務帳戶啟用控制平面存取權,請按照下列步驟操作。如要瞭解如何啟用控制層存取權 (混合式全新安裝程序的一部分),請參閱步驟 7:啟用控制層存取權。- 如果您不是與 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:啟用控制平面存取權」,瞭解如何新增角色,或請擁有該角色的使用者執行這個步驟。
- 呼叫 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
-
確認
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" ] }
- 如果您不是與 Apigee Hybrid 機構相關聯的 Google Cloud 專案擁有者,請確認您的 Google Cloud 使用者帳戶是否具備 roles/apigee.admin (Apigee 機構管理員) 角色。您可以使用下列指令,查看自己獲派的角色:
- 在
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
物件」。 -
將變更套用至
apigee-operator
、apigee-org
和apigee-env
圖表。如果您已設定 $ORG_NAME 和 APIGEE_NAMESPACE 環境變數,可以在下列指令中使用這些變數:
- 安裝運算子。
模擬測試:
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
- 安裝 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
- 安裝環境。針對每個環境重複這個步驟。
一次只能安裝一個環境。使用
--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
- 安裝運算子。
- 僅限 GKE 的 Workload Identity:為
apigee-mint-task-scheduler
服務帳戶設定 Workload Identity。如果您要全新安裝,除了步驟 11 (選用):設定 Workload Identity 中的步驟外,還需要執行這個步驟。
使用
apigee-org
圖表執行 helm 升級時,輸出內容會包含設定 Workload Identity 的必要指令,並提供正確的 Google 服務帳戶和 Kubernetes 服務帳戶名稱。--dry-run
- 取得為
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
。 - 執行指令,為
apigee-mint-task-scheduler
設定 Workload Identity。
- 取得為
另請參閱
- 如要進一步瞭解 Apigee 中的營利功能,請參閱「啟用 Apigee 營利服務」。
mintTaskScheduler.serviceAccountPath
:為apigee-mint-task-scheduler
服務帳戶設定服務帳戶金鑰檔案的路徑。mintTaskScheduler.serviceAccountRef
:設定 Kubernetes 密鑰,其中包含apigee-mint-task-scheduler
服務帳戶的服務帳戶金鑰。mintTaskScheduler.gsa
:為apigee-mint-task-scheduler
服務帳戶設定 Google 服務帳戶。這必須是服務帳戶的電子郵件地址。