【发布时间】:2021-03-16 23:16:39
【问题描述】:
大多数服务网格都使用 Envoy 作为 Sidecar 代理,但这似乎不是 Linkerd 的默认选项。我们已经在使用 Envoy 作为入口,并且真的不想在混合中添加新的代理。我们可以将 Linkerd 与 Envoy 一起使用吗?
【问题讨论】:
标签: linkerd servicemesh
大多数服务网格都使用 Envoy 作为 Sidecar 代理,但这似乎不是 Linkerd 的默认选项。我们已经在使用 Envoy 作为入口,并且真的不想在混合中添加新的代理。我们可以将 Linkerd 与 Envoy 一起使用吗?
【问题讨论】:
标签: linkerd servicemesh
这个问题我听过好几次了,我觉得这里有两个问题:
第一个问题的答案是,您绝对可以使用带有 Envoy 的 Linkerd 作为 Ingress 控制器。 Ambassador 和 Contour 是开源项目的两个示例,它们使用 Envoy 作为代理来路由 Ingress 流量。
将 Linkerd 与任何入口控制器集成需要一些特定于每个入口控制器的配置。您还需要确保运行入口控制器容器的 Pod 注入了 Linkerd 代理,以便入口控制器和服务工作负载之间的流量成为 Linkerd 服务网格的一部分。
第二个问题的答案,我认为您要问的是,Linkerd 提供了自己的现成代理,名为linkerd2-proxy,专为管理 Kubernetes 中的微服务工作负载而构建。 Linkerd 控制平面提供 API 端点,旨在与 linkerd2-proxy 一起使用,因此 Envoy 无法开箱即用。
话虽如此,Linkerd 是一个开源项目,理论上您可以在 Linkerd 控制平面组件和 Envoy XSD API 之间编写一个适配器。在我的脑海中,我想不出一个常见的用例来构建这个适配器会给 Linkerd 带来额外的价值。
William Morgan 写了一篇很棒的blog post,描述了为什么 Linkerd 团队决定编写自己的代理而不是使用 Envoy。 tl;dr 是 Envoy 是一个通用代理,而 linkerd2-proxy 是专为以最有效且不引人注目的方式处理微服务流量而构建的。
【讨论】: