此步骤介绍如何创建 Apigee Hybrid 运行所需的 Google Cloud 服务账号。
概览
Apigee Hybrid 使用 Google Cloud 服务账号来允许 Hybrid 组件通过授权的 API 调用进行通信。
生产环境与非生产环境
本指南适用于生产安装和非生产安装。生产安装针对使用容量、存储空间和可伸缩性进行了优化。非生产安装使用的资源更少,主要用于学习和演示。
为 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 安装。
创建服务账号
按照以下步骤为 Hybrid 安装创建 Google Cloud 服务账号:
create-service-account
工具:如果您在非 GKE 平台上安装 Apigee Hybrid,或者在 GKE 上安装但不想使用 Workload Identity,请使用 Apigee 提供的工具create-service-account
,在一个命令中创建服务账号、将角色分配给服务账号以及创建和下载服务账号的密钥文件。请按照
使用create-service-account
创建服务账号中的步骤操作。- Google Cloud 控制台或
gcloud
:如果您在 GKE 上安装 Apigee Hybrid 并计划使用 Workload Identity,请使用 Google Cloud 控制台或gcloud
创建服务账号,无需下载证书文件。请按照
在 Google Cloud 控制台中或使用gcloud
创建服务账号中的步骤操作。
使用 create-service-account
创建服务账号
在以下情况下使用 create-service-account
工具:
- 您在 GKE 以外的平台上安装
- 您在 GKE 上安装,但不打算使用 Workload Identity。
否则,请跳至在 Google Cloud 控制台中或使用 gcloud
创建服务账号。
- 确保已设置 HYBRID_FILES 和 HYBRID_FILES 环境变量。
PROJECT_ID 必须设置为您的 Google Cloud 项目 ID,因为
create-service-account
工具会读取 PROJECT_ID 环境变量以在正确的项目中创建服务账号。echo $HYBRID_FILES
echo $PROJECT_ID
- 使用以下命令创建服务账号:
非生产
此命令会创建一个用于非生产安装的名为
apigee-non-prod
的服务账号,并将服务账号的密钥文件下载到$HYBRID_FILES/service-accounts
目录中。$HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts
生产
此命令会为生产安装创建所有单独的服务账号,并将服务账号的密钥文件下载到
$HYBRID_FILES/service-accounts
目录中。$HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts
当您看到以下提示时,请输入 y:
[INFO]: gcloud configured project ID is project_id. Enter: y to proceed with creating service account in project: project_id Enter: n to abort.
如果这是您第一次创建特定服务账号,则该工具会在没有进一步提示的情况下创建该账号。
但是,如果您看到以下消息和提示,请输入 y 以生成新的密钥:
[INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists. ... [INFO]: The service account might have keys associated with it. It is recommended to use existing keys. Press: y to generate new keys.(this does not deactivate existing keys) Press: n to skip generating new keys.
-
使用以下命令验证是否已创建服务账号密钥。您需要确保安全地存储这些私钥。密钥文件名以您的 Google Cloud 项目的名称为前缀。
ls $HYBRID_FILES/service-accounts
结果应该类似如下所示:
project_id-apigee-non-prod.json
- 如需详细了解
create-service-account
及其所有选项,请参阅create-service-account
。 - 如需了解相关的 Google Cloud 概念,请参阅创建和管理服务账号以及创建和管理服务账号密钥。
在 Google Cloud 控制台中或使用 gcloud
创建服务账号
如果您打算在 GKE 上使用 Workload Identity 对 Hybrid 运行时组件进行身份验证,则无需为服务账号创建和下载证书文件。因此,请勿使用 create-service-account
工具。请改为在 Google Cloud 控制台中或使用 gcloud
中的 IAM API 创建服务账号。
否则,请跳至使用 create-service-account
创建服务账号。
控制台
按照创建服务账号中的说明创建以下服务账号并为其分配以下角色:
非生产
对于非生产安装:
服务账号名称 | IAM 角色 |
---|---|
apigee-non-prod |
|
生产
对于生产安装:
生产安装 | |
---|---|
服务账号名称 | IAM 角色 |
apigee-cassandra |
Storage Object Admin |
apigee-logger |
日志写入者 |
apigee-mart |
Apigee Connect Agent |
apigee-metrics |
Monitoring Metric Writer |
apigee-runtime |
无需角色 |
apigee-synchronizer |
Apigee Synchronizer Manager |
apigee-udca |
Apigee Analytics Agent |
apigee-watcher |
Apigee Runtime Agent |
gcloud
使用以下命令创建服务账号并分配 IAM 角色。
非生产
对于非生产安装:
- 创建
apigee-non-prod
服务账号:gcloud iam service-accounts create apigee-non-prod \ --display-name="apigee-non-prod" \ --project=$PROJECT_ID
- 向服务账号分配 IAM 角色:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectAdmin"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigeeconnect.Agent"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.synchronizerManager"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.analyticsAgent"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.runtimeAgent"
- 验证角色绑定:
gcloud projects get-iam-policy ${PROJECT_ID} \ --flatten="bindings[].members" \ --format='table(bindings.role)' \ --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"
生产
对于生产安装:
使用以下命令创建每个服务账号并分配相应的 IAM 角色。
apigee-cassandra
服务账号:gcloud iam service-accounts create apigee-cassandra \ --display-name="apigee-cassandra" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectAdmin"
apigee-logger
服务账号:gcloud iam service-accounts create apigee-logger \ --display-name="apigee-logger" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
apigee-mart
服务账号:gcloud iam service-accounts create apigee-mart \ --display-name="apigee-mart" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigeeconnect.Agent"
apigee-metrics
服务账号:gcloud iam service-accounts create apigee-metrics \ --display-name="apigee-metrics" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
apigee-runtime
服务账号:gcloud iam service-accounts create apigee-runtime \ --display-name="apigee-runtime" \ --project=$PROJECT_ID
apigee-synchronizer
服务账号:gcloud iam service-accounts create apigee-synchronizer \ --display-name="apigee-synchronizer" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.synchronizerManager"
apigee-udca
服务账号:gcloud iam service-accounts create apigee-udca \ --display-name="apigee-udca" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.analyticsAgent"
apigee-watcher
服务账号:gcloud iam service-accounts create apigee-watcher \ --display-name="apigee-watcher" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.runtimeAgent"
如需详细了解如何使用 gcloud
创建服务账号,请参阅创建服务账号。
现在,您已经创建了服务账号并分配了 Apigee Hybrid 组件所需的角色。接下来,创建混合入站流量网关所需的 TLS 证书。
1 2 3 4 (下一步)第 5 步:创建 TLS 证书 6 7 8 9 10