将多个 Hybrid 组织添加到集群

本主题介绍如何将第二个 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 集群。

  1. 创建服务账号以用于新组织。请参阅创建服务账号
  2. 记下 certs 目录中的 TLS 证书文件(.key.pem)。如果您需要再次创建这些证书,请按照创建 TLS 证书中的说明操作。
  3. 将现有 overrides.yaml 复制到新文件,以用作配置新组织的起点。例如:new-overrides.yaml
  4. 使用以下配置修改新的替换文件:
    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 您为新组织创建的服务账号密钥文件所在的目录。

应用配置

将新的组织配置应用到集群:

  1. 执行试运行安装,检查是否存在任何问题:
    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml \
      --dry-run=server
    
  2. 如果没有问题,请应用组织级组件。此步骤会安装 Cassandra 作业(用户和架构)、Apigee Connect、Apigee Watcher 和 MART 服务:
    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f NEW_OVERRIDES_FILE.yaml
    
  3. 安装环境。此步骤会逐环境安装 apigee-runtime、同步器和 UDCA 组件:
    helm upgrade ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml \
      --dry-run=server
    
    helm upgrade ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml
    
  4. 应用负载均衡器更改。此步骤将 Ingress 配置为监听第二个组织的新虚拟主机:
    helm upgrade NEW_ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=NEW_ENV_GROUP_NAME \
      -f overrides.yaml \
      --dry-run=server
    
    helm upgrade NEW_ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=NEW_ENV_GROUP_NAME \
      -f overrides.yaml
    
  5. 按照启用同步器访问中的步骤为新组织启用同步器访问权限。
  6. 默认情况下,首次安装 Apigee Hybrid 运行时时,配置的遥测组件会停用 multiOrgCluster。请按照以下步骤为集群中的每个组织启用多组织遥测:
    1. 使用以下命令删除现有的遥测组件:
      helm delete telemetry
      
    2. 将以下行添加到现有组织的 overrides.yaml 文件中。
      multiOrgCluster: true
    3. 应用更改以为组织安装遥测组件。

      首先执行试运行:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f FIRST_OVERRIDES_FILE.yaml \
        --dry-run=server
      

      如果试运行成功,请应用更改并安装遥测组件:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f FIRST_OVERRIDES_FILE.yaml
      
    4. 确保每个新组织的 overrides.yaml 文件中都包含以下行:
      multiOrgCluster: true
    5. 应用更改以为每个新组织安装遥测组件。对多组织集群中的每个新组织重复此操作。

      首先执行试运行:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f NEW_OVERRIDES_FILE.yaml \
        --dry-run=server
      

      如果试运行成功,请应用更改并安装遥测组件:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f NEW_OVERRIDES_FILE.yaml