概览
本文档介绍了在 Hybrid 组织中为 Apigee 的创收功能启用周期性费用、充值费用和设置费用的操作步骤。
前提条件
- Apigee Hybrid 1.15.1 版或更高版本。如需了解升级说明,请参阅升级 Apigee Hybrid。
- 您的 Apigee Hybrid 项目已启用创收功能。请参阅启用 Apigee 创收。
过程
为 Apigee Hybrid 创收功能启用周期性费用、充值费用和设置费用需要创建并设置 apigee-mint-task-scheduler
Google 服务账号,并授予其对 Pub/Sub 数据流水线的访问权限。
- 如果您尚未下载 Helm 图表的 1.15.1 版,请使用以下命令拉取 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.15.1
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
工具创建。如需了解如何在全新安装 Hybrid 时创建服务账号,请参阅第 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
服务账号启用控制平面访问权限,请立即按照以下步骤操作。如需了解如何在全新安装 Hybrid 时启用控制平面访问权限,请参阅第 7 步:启用控制平面访问权限。- 如果您不是与 Apigee Hybrid 组织关联的 Google Cloud 项目的所有者,请确保您的 Google Cloud 用户账号具有 roles/apigee.admin (Apigee Organization Admin) 角色。您可以使用以下命令检查分配给您的角色:
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
用于指定控制平面数据的位置。这是存储代理软件包等客户核心内容的位置。如需查看列表,请参阅可用的 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 Organization Admin) 角色。您可以使用以下命令检查分配给您的角色:
- 将与创收相关的节添加到
overrides.yaml
文件中。将以下内容添加到您的
overrides.yaml
文件中:runtime: image: url: "gcr.io/apigee-release/hybrid/apigee-runtime" tag: "1.15.1" #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
对象。 -
将更改应用于
apigee-operator
、apigee-org
和apigee-env
图表。如果您已设置 $ORG_NAME 和 APIGEE_NAMESPACE 环境变量,则可以在以下命令中使用它们:
- 安装 Operator。
试运行:
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 指定环境。 如果您已在 shell 中设置 $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
- 安装 Operator。
- 仅限 GKE 上的 Workload Identity:为
apigee-mint-task-scheduler
服务账号配置 Workload Identity。如果您要执行全新安装,请执行此步骤以及第 11 步(可选):配置 Workload Identity 中的步骤。
当您使用
apigee-org
图表的--dry-run
标志运行 helm 升级时,输出将包含您需要使用的命令,以使用正确的 Google 服务账号和 Kubernetes 服务账号名称配置 Workload Identity。- 获取为
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
。 - 运行命令,为
apigee-mint-task-scheduler
设置 Workload Identity。
- 获取为
另请参阅
- 如需详细了解 Apigee 中的创收功能,请参阅启用 Apigee 创收。
mintTaskScheduler.serviceAccountPath
:为apigee-mint-task-scheduler
服务账号设置服务账号密钥文件的路径。mintTaskScheduler.serviceAccountRef
:设置包含apigee-mint-task-scheduler
服务账号的服务账号密钥的 Kubernetes Secret。mintTaskScheduler.gsa
:为apigee-mint-task-scheduler
服务账号设置 Google 服务账号。这必须是服务账号邮箱。