设置托管联邦
将您的 supergraph 连接到 Apollo GraphOS
本文描述了如何将您的supergraph连接到Apollo GraphOS以启用托管联邦功能。
ⓘ 注意
像所有变更一样,您应该首先在生产环境之外,例如预演环境中,设置托管联邦。为了支持这一点,您可以在GraphOS Studio中创建您的 supergraph 的多个变体。每个变体代表相同图的不同环境的独立版本。
1. 开始使用
首先,完成以下教程中的设置 Apollo 工具步骤此教程,包括:
- 创建 Apollo 账户
- 在 Studio 中创建图
- 安装并认证Rover CLI
2. 发布所有子图模式
在 supergraph 架构中,您的每个子图都使用 Rover CLI 将其模式发布到GraphOS:
对您的每个子图执行以下操作:
获得以下值,这些值对于
rover subgraph publish
命令是必需的:- 在整个图内部唯一标识子图的名字(例如,
products
)。 - 您的路由器将以URL的形式与subgraph< span >(例如,
http://products-graphql.svc.cluster.local:4001/
)
- 在整个图内部唯一标识子图的名字(例如,
运行
rover subgraph publish
命令,并使用以下方式之一提供您的subgraph< span >的模式:# Provide a local .graphql file pathrover subgraph publish my-graph@my-variant --name products --routing-url http://products-graphql.svc.cluster.local:4001/ --schema ./schema.graphql# Provide an introspection result via stdinrover subgraph introspect https://127.0.0.1:4000 | rover subgraph publish my-graph@my-variant --name products --routing-url http://products-graphql.svc.cluster.local:4001/ --schema -
您注册subgraph 架构时,模式注册库试图将它们的最新版本组合成一个单独的supergraph 架构。每次组合成功时,您的受管理router可以从GraphOS中获取最新的supergraph 架构。
您也可以使用rover supergraph fetch
命令手动获取最新的supergraph架构,或从GraphOS Studio的架构 > SDL选项卡中获取。
3. 修改路由器启动命令
如果您已经设置了Apollo Federation但没有将路由器连接到GraphOS,您可能已在GraphOS Router的启动命令中传递了--supergraph
(或-s
)选项:
./router --config ./router.yaml --supergraph ./your-local-supergraph.graphql
在以下情况下,--supergraph
选项适用:路由器不通过轮询Apollo Uplink来检索超级图模式。这包括:
启用不同部署环境引用单个图变体,例如,用于蓝绿部署:使用包含平台API的工作流程来合成和检索每个环境的超级图模式。这使得每个环境的路由器都能使用该环境的超级图模式,然后单个图变体可以捕获和分析任何环境中部署时的操作和流量。
非管理型联邦:Rover CLI合成超级图模式和通过
--supergraph
选项将模式文件的路径传递给路由器。
对于其他从Apollo Uplink检索超级图模式的路由器,移除--supergraph
选项(但如果存在则保留--config
):
./router --config ./router.yaml
由GraphOS管理的联盟,组合是在子图模式发布时进行的,路由器定期从Apollo Uplink轮询更新后的超图模式。这使得您可以不重启路由器即可添加、删除和修改您的子图。
4. 将您的路由器连接到GraphOS
和您的子图一样,您的路由器使用一个图API密钥来识别自己给GraphOS。
在获得您的图API密钥后,请在路由器环境中设置以下环境变量:
APOLLO_KEY
(设置为您图API密钥)APOLLO_GRAPH_REF
- 该变量告诉路由器使用哪个图的哪个变体(例如,
docs-example-graph@production
)。您可以在GraphOS Studio的它的README页面的顶部找到您变体的图引用
- 该变量告诉路由器使用哪个图的哪个变体(例如,
5. 部署修改过的路由器
现在,您可以部署修改过的路由器,该路由器可在启动时从GraphOS获取其超图模式或指定特定环境中部署的超图模式。然后,它可以开始在您的子图上执行操作。