概览
此步骤介绍了如何创建 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、udca 等都有自己的服务账号。
对于非生产安装,您可以创建一个适用于所有组件的服务账号。
如需详细了解 Apigee 使用的服务账号及其分配的角色,请参阅 Hybrid 组件使用的服务账号和角色。
对服务账号进行身份验证
Apigee Hybrid 支持三种对 Google 服务账号进行身份验证的方法:
AKS、EKS 或 GKE 上的 Workload Identity
对于 GKE 上的 Apigee Hybrid 安装,Google Cloud 提供了一个名为 Workload Identity 的选项,用于对 Hybrid 运行时组件进行身份验证。此选项不使用下载的证书文件对服务账号进行身份验证,而是将您在此步骤中创建的 Google Cloud 服务账号与 Kubernetes 集群中的 Kubernetes 服务账号相关联。 请参阅在 GKE 上启用 Workload Identity 或在 AKS 和 EKS 上启用工作负载身份联合。
创建服务账号
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-runtime |
无需角色 | apigee-env |
apigee-synchronizer |
Apigee Synchronizer Manager | 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
创建服务账号
由于 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 my_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
- 通过检查每个图表的目录内容,验证是否已在正确的目录中创建服务账号文件。您的输出应如下所示:
ls ./apigee-datastore
Chart.yaml my_project_id-apigee-cassandra.json templates values.yamlls ./apigee-telemetry
Chart.yaml my_project_id-apigee-logger.json my_project_id-apigee-metrics.json templates values.yamlls ./apigee-org
Chart.yaml my_project_id-apigee-udca.json templates my_project_id-apigee-mart.json my_project_id-apigee-watcher.json values.yamlls ./apigee-env
Chart.yaml my_project_id-apigee-runtime.json my_project_id-apigee-synchronizer.json my_project_id-apigee-udca.json templates 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 my_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 my_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
工具,请参阅:
现在,您已经创建了服务账号并分配了 Apigee Hybrid 组件所需的角色。接下来,创建混合入站流量网关所需的 TLS 证书。