参考架构
GraphOS 企业版部署
虽然您可以在不考虑 Apollo 计划的情况下运行 Apollo 路由器核心Apollo Router Core,但将路由器连接到GraphOS并使用GraphOS Router需要一个企业计划。您可以通过注册免费企业试用进行测试。
在这个指南中,了解 Apollo 参考架构的基本概念和配置,该架构针对使用自托管 GraphOS 路由器进行 GraphOS 企业部署而设计。将此概述作为 Apollo 参考架构仓库的配套参考。
Apollo 参考架构简介
在现代的云原生堆栈中,您的组件必须具有可扩展性和高可用性。Apollo 路由器核心正是为此而构建的。该路由器比Apollo网关速度快很多,资源密集度也更低,这是Apollo的原始运行时。
Apollo为在企业云环境中使用Kubernetes和Helm自托管路由器和子图提供了参考架构。它展示了如何在云环境中部署路由器和子图,包括使用Apollo GraphOS以及以下企业GraphOS路由器功能:
此外,参考架构还展示了如何使用router与OpenTelemetry结合使用,以收集和分析您超级图性能和利用率指标,同时使用k6进行性能测试。
💡 提示
查看在Apollo中部署Apollo路由器博客文章,了解Apollo内部使用路由器的情况,包括性能改进和资源利用率降低。
入门
要开始参考架构的使用,请参考参考仓库中的README文件。README文件提供了一篇指南,详细介绍如何使用参考架构构建超级图。
架构概述
参考架构使用两个Kubernetes集群,一个用于开发环境,另一个用于生产环境。每个集群都有用于以下用途的Pod:
- 托管路由器
- 托管 子图s
- 托管客户端
- 收集跟踪信息
- 使用K6进行负载测试并在Grafana中查看结果
对于这两个环境,GraphOS作为模式注册表。每个subgraph将模式更新发布到注册表,并通过CI/CD进行验证和组合,形成超级图模式。路由器定期轮询名为Apollo Uplink的端点,以获取GraphOS的最新超级图模式和路由配置。
路由器还通过Uplink将性能和利用率指标推送到GraphOS,以便您在GraphOS Studio中分析它们。
开发环境
开发环境由在AWS或GCP中的Kubernetes集群中托管的路由器和子图组成。GraphOS使用模式检查验证子图模式,并通过Uplink将其提供给路由器。路由器还将使用情况指标回传到GraphOS。
生产环境
生产环境与开发环境类似,但有一些补充。
- 路由器和子图将它们的OpenTelemetry数据发送到收集器。您可以在Zipkin中查看这些数据。
- K6负载测试器将流量发送到路由器,并将负载测试结果存储在InfluxDB中,以便在Grafana中查看。
CI/CD
参考架构使用GitHub Actions进行CI/CD。这些操作包括:
- PR级模式检查
- 使用Docker构建容器
- 将子图模式发布到Apollo Uplink
- 部署
- 路由器
- 子图s
- 客户端
- OpenTelemetry 汇聚器
- Grafana
- 使用 k6 运行负载测试
开发动作
当一个 PR 被提交到子图中时,GitHub Actions 使用GraphOS通过模式检查来验证模式更改。
当 PR 被合并时,GitHub Actions 将 Schema 更新发布到 Uplink,GraphOS使用模式检查来验证它们,然后使它们可用于router。此外,子图服务将被部署。
生产部署
当你手动触发生产部署时,GitHub Actions 将 Schema 更新发布到 Uplink,GraphOS使用模式检查来验证它们,然后使它们可用于router。此外,子图服务将被部署。
部署路由器
当你手动触发路由器部署时,GitHub Actions 将路由器部署到 Kubernetes 集群。
部署 OpenTelemetry 汇聚器
当你手动触发 OpenTelemetry 部署时,GitHub Actions 将 OpenTelemetry 汇聚器和 Zipkin 部署到 Kubernetes 集群。
部署负载测试基础设施
当你手动触发负载测试基础设施部署时,GitHub Actions 将 K6 负载测试器、Grafana、负载测试和 InfluxDB 部署到 Kubernetes 集群。
运行负载测试
当你手动触发负载测试运行时,GitHub Actions 将触发 K6 负载测试器从环境中提取负载测试,针对router运行测试,并将结果存储在 InfluxDB 中。