create-service-account

create-serice-account概览

create-serice-account 是随 Apigee Hybrid 提供的命令行工具,可创建具有的角色允许各个 Apigee Hybrid 组件进行已获授权的 API 调用并下载关联服务账号密钥文件的 Google Cloud 服务账号。您可以在配置替换文件中使用此命令生成的服务账号密钥文件。

create-service-account 会在您当前的 Google Cloud 项目或您指定的项目中创建一个或多个服务账号,为服务账号分配正确的 IAM 角色,并将服务账号的证书文件下载到本地机器上的目录中。

如需详细了解服务账号并查看建议用于生产环境的服务账号的完整列表,请参阅以下内容:

您还可以在 Google Cloud 控制台中创建服务账号。另请参阅创建和管理服务账号

前提条件

角色

create-service-account 工具要求安装 gcloud CLI。调用该实用程序的用户应具有 Service Account Admin 角色。

项目

服务账号会绑定到特定的 Google Cloud 项目。create-service-account 会在当前项目或您指定的项目中创建服务账号,并将 IAM 角色绑定到该项目中的服务账号。create-service-account 还会将项目 ID 用作服务账号密钥文件名和电子邮件的一部分。例如,如果您的项目名为 my-hybrid-project,则 apigee-logger 服务账号密钥文件将命名为 my-hybrid-project-apigee-logger.json,服务账号的电子邮件地址地址将为 apigee-logger@my-hybrid-project.iam.gserviceaccount.com

您可以通过定义 PROJECT_ID 环境变量或使用 --project-id 标志来指定项目。create-service-account 会读取 PROJECT_ID 环境变量的值。如果不存在,您可以使用 --project-id 标志。

如果您未指定 Cloud 项目 ID,则 create-service-account 会使用当前 gcloud 项目配置中的项目。

您可以使用以下命令检查当前设置的 gcloud 项目配置:

gcloud config list project

如果需要更改当前项目 ID,请使用以下命令:

gcloud config set project PROJECT_ID

其中 PROJECT_ID 是当前 Cloud 项目的 ID。第 2 步:创建 Google Cloud 项目中介绍了创建 Cloud 项目的说明。

文件位置

您可以在以下目录中找到 create-service-account 工具:

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/

验证 create-service-account 工具是否可执行

验证您可以执行 create-service-account。如果您刚刚下载了 Apigee Helm 图表,则命令行工具可能尚未处于可执行模式。进入 create-service-account 的安装目录,然后使用 --help 运行该工具来验证它是否可执行:

./create-service-account --help

如果输出显示 permission denied,则需要使该文件可执行,例如在 Linux、MacOS 或 UNIX 中或者在 Windows 资源管理器中使用 chmod,在 Windows 中使用 icacls 命令。例如:

chmod +x ./create-service-account

使用 create-service-account

以下示例展示了如何使用 create-service-account 执行常见的 Apigee Hybrid 设置任务。

创建适用于生产环境的服务账号

在生产混合环境中,Apigee 建议您对每个组件使用单独的服务账号。使用以下命令在默认目录中采用默认名称为混合组件创建所有服务账号。

./tools/create-service-account --env prod

这将使用在 ./tools/service-accounts 目录中下载的证书文件创建以下服务账号:

服务账号 IAM 角色 电子邮件 证书文件
apigee-cassandra roles/storage.objectAdmin apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-cassandra.json
apigee-logger roles/logging.logWriter apigee-logger@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-logger.json
apigee-mart roles/apigeeconnect.Agent apigee-mart@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-mart.json
apigee-metrics roles/monitoring.metricWriter apigee-metrics@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-metrics.json
apigee-runtime 未分配任何角色 apigee-runtime@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-runtime.json
apigee-synchronizer roles/apigee.synchronizerManager apigee-synchronizer@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-synchronizer.json
apigee-udca roles/apigee.analyticsAgent apigee-udca@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-udca.json
apigee-watcher roles/apigee.runtimeAgent apigee-watcher@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-watcher.json

创建适用于非生产环境的单个服务账号

对于非生产环境(例如实验环境或演示环境),您可以创建一个名为“apigee-non-prod”的服务账号,将其用于所有组件。此服务账号将获得上一示例中的所有 IAM 角色。

./tools/create-service-account --env non-prod

此命令将创建一个名为 apigee-non-prod 的服务账号,并下载 ./tools/service-accounts 目录中的证书文件:

服务账号 IAM 角色 电子邮件 证书文件
apigee-non-prod roles/apigee.analyticsAgent
roles/apigee.runtimeAgent
roles/apigee.synchronizerManager
roles/apigeeconnect.Agent
roles/logging.logWriter
roles/monitoring.metricWriter
roles/storage.objectAdmin
apigee-non-prod@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-non-prod.json

create-service-account syntax

create-service-account 工具使用以下语法:

create-service-account [flags] 

下表列出了 create-service-account 标志:

标志 说明
--dir
-d
目录名称 指定服务账号密钥文件的输出目录。如果目录不存在,create-service-account 将创建目录。如果目录已存在,则 create-service-account 将覆盖目录中与其创建的密钥文件同名的任何文件。

如果您未指定输出目录,create-service-account 会将服务账号文件写入 create-service-account 所在目录中的 service-accounts/ 目录。

--env
-e
prod
non-prod
指定您要为生产 (prod) 环境还是非生产 (non-prod) 环境创建服务账号。
  • --env prod 用于为生产混合环境创建服务账号。

    在生产环境中,建议您为每个 Apigee 服务使用一个服务账号。创建的每个角色都有一个与之关联的 IAM 角色。

    create-service-account -env prod 将创建 Apigee Hybrid 使用的所有服务账号,除非您使用 --profile 指定特定服务账号。

  • --env non-prod 会创建一个服务账号,其中绑定了所有 IAM 角色。这对于非生产环境(例如实验性或演示安装)非常有用。

    除非您使用 --name 标志指定名称,否则服务账号将命名为 apigee-non-prod

如果您在没有 --env 的情况下运行 create-service-account,则系统会提示您输入 prodnon-prod

--help
-h
显示帮助文本。
--name
-n
服务账号名称 指定服务账号的名称。--name 仅适用于通过 --profile--env non-prod 指定的单个服务账号。

该名称也是服务账号证书名称和电子邮件地址的一部分。例如,如果您运行 create-service-account --profile apigee-logger --name my-logger(假设此示例中的当前 Cloud 项目为 my-hybrid-project),create-service-account 将创建一个:

  • 名称my-logger
  • 电子邮件my-logger@my-hybrid-project.iam.gserviceaccount.com
  • 证书文件my-hybrid-project-my-logger.json

如果您未指定 --namecreate-service-account 使用配置文件的名称作为服务账号的名称,或者指定“apigee-non-prod”--env non-prod

‑‑profile
-p
apigee‑cassandra
apigee‑logger
apigee‑mart
apigee‑metrics
apigee‑runtime
apigee‑synchronizer
apigee‑udca
apigee‑watcher
仅适用于生产环境,指定要创建的单个服务账号。

您可以使用 --name 标志指定服务账号的名称。

需要指定 --env prod

‑‑project‑id
-i
项目 ID 您在其中创建服务账号的 Google Cloud 项目的 ID。

create-service-account 会读取 PROJECT_ID 环境变量的值。如果不存在,您可以使用 --project-id 标志。

如果您未指定项目 ID,则 create-service-account 将使用当前 gcloud 配置中的项目 ID。

如需详细了解 Apigee Hybrid 使用的服务账号,请参阅关于服务账号

您还可以在 Google Cloud 控制台中创建服务账号。另请参阅创建和管理服务账号