文章插图
图片
同一 Service 上的多个路由这里的前提条件是这些路由都位于同一命名空间下,即同为生产者路由,或同为消费者路由 。这种情况将会遵循 路由合并规则[8] 多这个路由进行合并,如果要为同一命名空间下的多个工作负载配置不同的消费者路由,目前还无法实现 。唯一的
比如下面定义了两个消费者路由 smiley-route-50 和 smiley-route-100
kind: HTTPRoutemetadata:name: smiley-route-50namespace: fast-clientsspec:parentRefs:- name: smileynamespace: faceskind: Servicegroup: coreport: 80rules:...timeouts:request: 50ms---kind: HTTPRoutemetadata:name: smiley-route-100namespace: fast-clientsspec:parentRefs:- name: smileynamespace: faceskind: Servicegroup: coreport: 80rules:...timeouts:request: 100ms
路由与策略之前也写文介绍过 Gateway API 中的策略,有兴趣的可以看一下 一文搞懂 Kubernetes Gateway API 的 Policy Attachment[9] 。
在网格中策略附加可以非常简单 。策略可以应用于任何命名空间中的任何资源,但如果目标位于不同的命名空间中,则它只能应用于来自同一命名空间的请求(跟随消费者路由的逻辑) 。
文章插图
图片
网格一致性测试首先来看下何为 一致性配置文件[10]:
Gateway API 会提供用于一致性测试的配置文件,在运行一致性测试可以选择这些配置文件 。然后将一致性结果报告回网关 API 项目并获得认证(例如徽章) 。除了测试核心的功能,也可以自主添加厂商的特定实现中的扩展功能进行测试 。目前有 HTTP、TLS、TLSPassthrough(基本上都是根据 xRoute 来进行组织,因此后续也会有 GRPC、TCP、UDP) 。针对服务网格,也提出了 `mesh` 配置文件[12] 。
这些 Gateway API 的实现会将测试报告提交到 官方仓库的一致性测试报告目录[11] 中,可以作为大家选型时的依据之一 。
官方博客[13] 中提到 Kuma 2.3+、Linkerd 2.14+、和 Istio 1.16+ 中的 Gateway API 实现已经全部通过 mesh一致性测试,但截止目前未看到测试报告,估计还在上传中 。
参考资料[1] Gateway API 宣布在 0.8.0 中支持服务网格: https://gateway-api.sigs.k8s.io/blog/2023/0829-mesh-support/#service-mesh-support-in-gateway-api
[2] GAMMA: https://gateway-api.sigs.k8s.io/concepts/gamma/
[3] SMI 与 Gateway API 的 GAMMA 倡议意味着什么?: https://atbug.com/why-smi-collaborating-in-gateway-api-gamma/
[4] 过了几个月仍未提交: https://Github.com/servicemeshinterface/smi-spec/issues/254
[5] Gateway 资源: https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.Gateway
[6] 生产者路由(Producer Route): https://gateway-api.sigs.k8s.io/concepts/glossary#producer-route
[7] 消费者路由(Consumer Route): https://gateway-api.sigs.k8s.io/concepts/glossary#consumer-route
[8] 路由合并规则: https://gateway-api.sigs.k8s.io/api-types/httproute#merging
[9] 一文搞懂 Kubernetes Gateway API 的 Policy Attachment: https://atbug.com/explore-k8s-gateway-api-policy-attachment/
[10] 一致性配置文件: https://gateway-api.sigs.k8s.io/geps/gep-1709/
[11] 官方仓库的一致性测试报告目录: https://github.com/kubernetes-sigs/gateway-api/tree/mAIn/conformance/reports
[12] mesh 配置文件: https://gateway-api.sigs.k8s.io/geps/gep-1686/
[13] 官方博客: https://gateway-api.sigs.k8s.io/blog/2023/0829-mesh-support/
推荐阅读
- K8s 多集群实践思考和探索
- 【星座秘籍大揭秘】探索十二星座最佳职业!
- 探索数字孪生技术:工业领域数字化转型的未来之路
- GPT-4写代码不如ChatGPT,误用率高达62%!加州大学两位华人开源代码可靠性基准RobustAPI
- Java 应用通过 OpenTelemetry API 实现手动埋点
- 职场进阶利器,探索四款隐藏的效率工具,让你事业腾飞
- oneAPI用于大规模图计算异构加速框架设计
- 使用 *attr* DTO 为我们的 API 提供支持
- 防止误删除文件/目录:深入探索Linux命令chattr
- 详解API接口如何安全的传输数据