本主题介绍如何将第二个 Apigee Hybrid 组织 (org) 添加到现有 Kubernetes 集群。在此多组织配置中,两个组织使用并共享相同的 Cassandra 环。每个组织可以配置多个环境和环境组。
限制
支持每个集群多个组织的配置,但存在以下限制。在这些限制得到缓解之前,我们不建议您使用此配置:
- 如果您将会拥有多个 Apigee Hybrid 实例,则每个实例都应该有自己的集群。多个 Apigee Hybrid 实例在同一 Kubernetes 集群上运行可能导致不稳定问题,进而可能产生停机时间。
- 来自 pod 的所有日志记录都会发送到配置的第一个 Google Cloud 项目。此限制在 Cloud Logging 工具中最明显。其他 Apigee 组织的日志将不会发送到匹配的 Google Cloud 项目。日志仍然在 pod 级别捕获,并且可以使用
kubectl
命令检索。但是,无法通过 Cloud Logging 将它们发送到正确的 Cloud 项目。 - 您不能在 Cassandra 数据库中仅删除一个组织的组织数据。这意味着您无法有选择地移除组织。对数据库配置的任何修改都会影响部署到该集群的所有组织。
- Hybrid 升级过程会一次升级整个集群。
- 备份和恢复以集群形式完成,无法针对特定组织完成。
- Apigee API Monitoring 功能(时间轴、最近、调查)仅适用于第一个已配置和部署的组织。不适用于多组织集群中的其他组织。
多组织选项
本部分介绍 Apigee 支持团队如何处理现有的多组织集群以及未来部署的建议:
- 如果您在现有非生产环境中部署了多组织 Kubernetes 集群,则 Apigee 支持将继续支持这些集群。但是,请注意下一部分中介绍的技术限制。我们建议您将未来的任何生产部署更改为每个集群使用一个 Apigee 组织。
- 如果您在非生产环境中具有现有的多组织集群,Apigee 支持将继续支持它们。我们建议您将任何生产集群迁移到每个集群使用一个 Apigee 组织的新配置。
前提条件
在继续操作之前,请注意以下事项:
- 您必须有一个现有 Hybrid 组织,并在现有的 Kubernetes 集群中安装和配置一个或多个环境。请参阅 Hybrid 安装说明。
- 在单个集群中组合多个组织时,Hybrid 版本必须全部匹配。在向集群添加第二个组织之前,如有必要,请升级现有 Hybrid 安装。请参阅升级 Apigee Hybrid。
创建要添加到现有集群的组织
如需创建其他组织,请按照第 1 部分:项目和组织设置中的步骤操作。
配置新组织
在以下步骤中,您将创建一个新的替换文件,并为新组织进行配置。overrides.yaml
文件只能支持一个组织的信息。因此,您必须创建新的 overrides.yaml
文件并将其应用于现有 Kubernetes 集群。
- 创建服务账号以用于新组织。请参阅创建服务账号。
- 记下
certs
目录中的 TLS 证书文件(.key
和.pem
)。如果您需要再次创建这些证书,请按照创建 TLS 证书中的说明操作。 - 将现有
overrides.yaml
复制到新文件,以用作配置新组织的起点。例如:new-overrides.yaml
。 - 使用以下配置修改新的替换文件:
org: "new-org-name" instanceID: "instance-id" ## Must match the instanceID of your existing org. multiOrgCluster: true ## Enables exporting metrics for this org to the Google Cloud Project named with gcp:projectID k8sCluster: name: "existing-cluster-name" region: "existing-cluster-analytics-region" gcp: projectID: "new-project-id" name: "new-project-id" region: "new-project-default-location" namespace: namespace ## must be the same for both new and existing orgs virtualhosts: - name: new-environment-group-name sslCertPath: ./certs/cert-file-name # .crt or .pem sslKeyPath: ./certs/key-file-name # .key envs: - name: new-environment-name serviceAccountPaths: runtime: ./new-service-accounts-directory/new-project-id-apigee-runtime.json synchronizer: ./new-service-accounts-directory/new-project-id-apigee-synchronizer.json udca: ./new-service-accounts-directory/new-project-id-apigee-udca.json connectAgent: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-mart.json mart: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-mart.json metrics: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-metrics.json watcher: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-watcher.json
下表介绍了您必须在替换文件中提供的每个属性值。如需了解详情,请参阅配置属性参考。
变量 说明 new-org-name 新组织的名称。 instance-id 此集群中的所有组织都必须具有相同的实例 ID。因此,这必须与原始组织的替换文件中的 instanceID
条目匹配。existing-cluster-name 您要将此组织添加到的集群的名称。它必须与原始集群的替换文件中的 k8sCluster.name
条目匹配。existing-cluster-analytics-region 预配原始集群的区域。它必须与原始集群的替换文件中的 k8sCluster.region
条目匹配。new-project-id 新项目的项目 ID。项目 ID 和组织名称相同。 new-project-default-location 您在创建新组织时指定的分析区域。它不必与现有组织的区域相同。 namespace 集群中的所有组织必须共享同一命名空间。请务必使用与原始组织相同的命名空间。请注意,默认命名空间为 apigee
。new-environment-group-name 您为新组织创建的新环境组。 cert-file-name 和
key-file-name您在本部分的第 1 步中检查或创建的集群的 TLS 证书和密钥文件。 new-environment-name 您为新组织创建的环境的名称。 new-service-accounts-directory 您为新组织创建的服务账号密钥文件所在的目录。
应用配置
将新的组织配置应用到集群:
- 执行试运行安装,检查是否存在任何问题:
apigeectl apply -f overrides/new-overrides.yaml --org --dry-run=client
- 如果没有问题,请应用组织级组件。此步骤会安装 Cassandra 作业(用户和架构)、Apigee Connect、Apigee Watcher 和 MART 服务:
apigeectl apply -f overrides/new-overrides.yaml --org
- 安装环境。此步骤会逐环境安装 apigee-runtime、同步器和 UDCA 组件:
apigeectl apply -f overrides/new-overrides.yaml --env ${ENV_NAME} --dry-run=client
apigeectl apply -f overrides/new-overrides.yaml --env ${ENV_NAME}
- 应用负载均衡器更改。此步骤将 Ingress 配置为监听第二个组织的新虚拟主机:
apigeectl apply -f overrides/new-overrides.yaml --settings virtualhosts --dry-run=client
apigeectl apply -f overrides/new-overrides.yaml --settings virtualhosts
- 按照启用同步器访问中的步骤为新组织启用同步器访问权限。
- 默认情况下,首次安装 Apigee Hybrid 运行时时,配置的遥测组件会停用
multiOrgCluster
。请按照以下步骤为集群中的每个组织启用多组织遥测:- 使用以下命令删除现有的遥测组件:
首先执行试运行:
apigeectl delete -f path-to-first-org-overrides.yaml --telemetry --dry-run=client
如果试运行成功,请删除遥测组件:
apigeectl delete -f path-to-first-org-overrides.yaml --telemetry
- 将以下行添加到现有组织的
overrides.yaml
文件中。multiOrgCluster: true
- 应用更改以为组织安装遥测组件。
首先执行试运行:
apigeectl apply -f path-to-first-org-overrides.yaml --telemetry --dry-run=client
如果试运行成功,请应用更改并安装遥测组件:
apigeectl apply -f path-to-first-org-overrides.yaml --telemetry
- 确保每个新组织的
overrides.yaml
文件中都包含以下行:multiOrgCluster: true
- 应用更改以为每个新组织安装遥测组件。对多组织集群中的每个新组织重复此操作。
首先执行试运行:
apigeectl apply -f path-to-new-org-overrides.yaml --telemetry --dry-run=client
如果试运行成功,请应用更改并安装组件:
apigeectl apply -f path-to-new-org-overrides.yaml --telemetry
- 使用以下命令删除现有的遥测组件: