概览
此步骤介绍了如何创建 Apigee Hybrid 运行所需的 Google Cloud 服务账号,并为其分配适当的 IAM 角色。
此过程使用第 2 步:下载 Apigee Helm 图表中定义的以下两个环境变量。这些变量是可选的。如果您没有定义这些变量,请将代码示例中的每个变量替换为适当的目录路径。
$APIGEE_HELM_CHARTS_HOME
:您下载 Apigee Helm 图表的目录,其定义见第 2 步:下载 Apigee Helm 图表。$PROJECT_ID
:您的 Google Cloud 项目 ID,其定义见第 1 部分:项目和组织设置 - 第 1 步:启用 API。
生产环境与非生产环境
本指南适用于生产安装和非生产安装。生产安装针对更高的使用容量、存储空间和可伸缩性进行了调整。非生产安装使用的资源更少,主要用于学习和演示。
为 Apigee Hybrid 创建和配置服务账号时,请务必了解目标安装类型。
对于生产安装,我们建议为每个 Apigee Hybrid 组件创建一个单独的服务账号。例如,runtime、mart、metrics、mint、udca 等每个组件都有专门的服务账号。
对于非生产安装,您可以创建一个适用于所有组件的服务账号。
如需详细了解 Apigee 使用的服务账号及其分配的角色,请参阅 Hybrid 组件使用的服务账号和角色。
对服务账号进行身份验证
Apigee Hybrid 支持以下 Google 服务账号身份验证方法:
- Kubernetes Secret
- 服务账号 JSON 密钥文件(以下部分的选择标签页中的“JSON 文件”)。
- 保险柜
- 适用于 GKE 的工作负载身份联合(以下部分的选择标签页中简称为“适用于 GKE 的 WIF”)。
- 其他平台上的工作负载身份联合(以下部分中的选择标签页中称为“其他平台上的 WIF”)。
在下一部分中,选择您计划使用的身份验证类型所对应的步骤。
创建服务账号
Apigee Hybrid 使用以下服务账号:
生产
服务账号 | IAM 角色 | Apigee Helm 图表 |
---|---|---|
apigee-cassandra |
Storage Object Admin | apigee-datastore |
apigee-logger |
日志写入者 | apigee-telemetry |
apigee-mart |
Apigee Connect Agent | apigee-org |
apigee-metrics |
Monitoring Metric Writer | apigee-telemetry |
apigee-mint-task-scheduler (仅当您使用 Monetization for Apigee Hybrid 时是必填字段) |
无需角色 | apigee-org |
apigee-runtime |
无需角色 | apigee-env |
apigee-synchronizer |
Apigee Synchronizer Manager Storage Object Admin |
apigee-env |
apigee-udca |
Apigee Analytics Agent | apigee-org apigee-env |
apigee-watcher |
Apigee Runtime Agent | apigee-org |
非生产
服务账号 | IAM 角色 | Apigee Helm 图表 |
---|---|---|
apigee-non-prod |
Storage Object Admin Logs Writer Apigee Connect Agent Monitoring Metric Writer Apigee Synchronizer Manager Apigee Analytics Agent Apigee Runtime Agent |
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 中或者在 Windows 资源管理器中使用 chmod
,在 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
标志为密钥文件创建目录。
生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
- 通过检查
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
非生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
- 通过检查
service-accounts
目录的内容,验证服务账号文件是否已创建。您的输出应如下所示:ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
my-project-apigee-non-prod.json
JSON 文件
由于 Helm 不支持引用图表目录之外的文件,因此您将在图表目录中为相应的 Hybrid 组件创建每个服务账号证书文件。
在接下来的步骤中,选择是配置生产安装还是非生产安装。
生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
- 将
apigee-udca
JSON 文件复制到apigee-env
图表目录。组织范围和环境范围操作都需要它。cp $APIGEE_HELM_CHARTS_HOME/apigee-org/$PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
- 通过检查每个图表的目录内容,验证是否已在正确的目录中创建服务账号文件。您的输出应如下所示:
ls ./apigee-datastore
Chart.yaml my-project-apigee-cassandra.json templates values.yamlls ./apigee-telemetry
Chart.yaml my-project-apigee-metrics.json values.yaml my-project-apigee-logger.json templatesls ./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.yamlls ./apigee-env
Chart.yaml my-project-apigee-synchronizer.json templates my-project-apigee-runtime.json my-project-apigee-udca.json values.yaml
非生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
- 验证在
apigee-datastore
目录中创建的服务账号文件的名称:ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
Chart.yaml PROJECT_ID-apigee-non-prod.json templates values.yaml
- 将服务账号文件复制到需要引用它的其他图表目录:
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/
保险柜
如需准备好服务账号密钥文件以存储在保险柜中,您可以使用 create-service-account
工具创建服务账号密钥文件,并使用 --dir
标志为密钥文件创建目录。
生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
- 通过检查
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
非生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
- 通过检查
service-accounts
目录的内容,验证是否已创建服务账号文件。您的输出应如下所示:ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
my-project-apigee-non-prod.json
适用于 GKE 的 WIF
使用以下命令为您的安装创建服务账号:
生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
-
使用以下命令验证 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
非生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
-
使用以下命令验证 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
可选:您将不需要 Workload Identity Federation for GKE 的服务账号密钥文件。完成后,您可以删除 service-accounts
目录。
其他平台上的 WIF
使用以下命令为您的安装创建服务账号:
生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
-
使用以下命令验证 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
非生产
- 确保已定义
PROJECT_ID
环境变量。echo $PROJECT_ID
create-service-account tool uses the value of the
。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将PROJECT_ID
environment variable--project-id PROJECT_ID
标志添加到create-service-account
命令。 -
使用以下命令创建服务账号,其中
$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
-
使用以下命令验证 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
可选:您将不需要 Workload Identity Federation for GKE 的服务账号密钥文件。完成后,您可以删除 service-accounts
目录。
如需详细了解服务账号和 create-service-account
工具,请参阅:
现在,您已经创建了服务账号并分配了 Apigee Hybrid 组件所需的角色。接下来,创建混合入站流量网关所需的 TLS 证书。