第 4 步:创建服务账号

概览

此步骤介绍了如何创建 Apigee Hybrid 运行所需的 Google Cloud 服务账号,并为其分配适当的 IAM 角色。

此过程使用第 2 步:下载 Apigee Helm 图表中定义的以下两个环境变量。这些变量是可选的。如果您没有定义这些变量,请将代码示例中的每个变量替换为适当的目录路径。

生产环境与非生产环境

本指南适用于生产安装和非生产安装。生产安装针对更高的使用容量、存储空间和可伸缩性进行了调整。非生产安装使用的资源更少,主要用于学习和演示。

为 Apigee Hybrid 创建和配置服务账号时,请务必了解目标安装类型。

对于生产安装,我们建议为每个 Apigee Hybrid 组件创建一个单独的服务账号。例如,runtime、mart、metrics、udca 等都有自己的服务账号。

对于非生产安装,您可以创建一个适用于所有组件的服务账号。

如需详细了解 Apigee 使用的服务账号及其分配的角色,请参阅 Hybrid 组件使用的服务账号和角色

GKE 上的 Workload Identity

对于 GKE 上的 Apigee Hybrid 安装,Google Cloud 提供了一个名为 Workload Identity 的选项,用于对 Hybrid 运行时组件进行身份验证。此选项不使用下载的证书文件对服务账号进行身份验证,而是将您在此步骤中创建的 Google Cloud 服务账号与 Kubernetes 集群中的 Kubernetes 服务账号相关联。

Workload Identity 仅适用于 GKE 安装。

创建服务账号

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 组件创建每个服务账号证书文件。

在接下来的步骤中,选择是配置生产安装还是非生产安装。

生产

  1. 确保已定义 PROJECT_ID 环境变量。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将 --project-id my_project_id 标志添加到 create-service-account 命令。

  2. 使用以下命令创建服务账号,其中 $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-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-watcher \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
  3. 通过检查每个图表的目录内容,验证是否已在正确的目录中创建服务账号文件。您的输出应如下所示:
    ls ./apigee-datastore
    Chart.yaml  my_project_id-apigee-cassandra.json  templates  values.yaml
    
    ls ./apigee-telemetry
    Chart.yaml  my_project_id-apigee-logger.json  my_project_id-apigee-metrics.json  templates  values.yaml
    
    ls ./apigee-org
    Chart.yaml                      my_project_id-apigee-udca.json     templates
    my_project_id-apigee-mart.json  my_project_id-apigee-watcher.json  values.yaml
    
    ls ./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
    

非生产

  1. 确保已定义 PROJECT_ID 环境变量。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。 如果未定义该变量,请使用您的 Google Cloud 项目 ID 定义它,或将 --project-id my_project_id 标志添加到 create-service-account 命令。

  2. 使用以下命令创建服务账号,其中 $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
  3. 验证在 apigee-datastore 目录中创建的服务账号文件的名称:
    ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    Chart.yaml  my_project_id-apigee-non-prod.json  templates  values.yaml
  4. 将服务账号文件复制到需要引用它的其他图表目录:
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME.json $APIGEE_HELM_CHARTS_HOME/apigee-env/

如需详细了解服务账号和 create-service-account 工具,请参阅:

现在,您已经创建了服务账号并分配了 Apigee Hybrid 组件所需的角色。接下来,创建混合入站流量网关所需的 TLS 证书。

1 2 3 4 (下一步)第 5 步:创建 TLS 证书 6 7 8 9 10 11 12