0

大多数服务网格使用 Envoy 作为 sidecar 代理,但这似乎不是 Linkerd 的默认选项。我们已经在使用 Envoy 作为入口,并且真的不想在混合中添加新的代理。我们可以将 Linkerd 与 Envoy 一起使用吗?

4

1 回答 1

2

这个问题我听过好几次了,我想这里有两个问题:

  1. 你可以使用带有 Envoy 的 Linkerd 作为 Ingress 控制器吗?
  2. Linkerd 控制平面是否支持使用 Envoy 作为数据平面代理?

第一个问题的答案是,您绝对可以使用带有 Envoy 的 Linkerd 作为 Ingress 控制器。AmbassadorContour是开源项目的两个示例,它们使用 Envoy 作为路由 Ingress 流量的代理。

将 Linkerd 与任何入口控制器集成需要一些特定于每个入口控制器的配置。您还需要确保运行入口控制器容器的 Pod 注入了 Linkerd 代理,以便入口控制器和服务工作负载之间的流量成为 Linkerd 服务网格的一部分。

第二个问题的答案,我认为您要问的是,Linkerd 提供了自己的代理,名为linkerd2-proxy,专门用于管理 Kubernetes 中的微服务工作负载。Linkerd 控制平面提供 API 端点,旨在与 linkerd2-proxy 一起使用,因此 Envoy 无法开箱即用。

话虽如此,Linkerd 是一个开源项目,理论上您可以在 Linkerd 控制平面组件和 Envoy XSD API 之间编写一个适配器。在我的脑海中,我想不出一个常见的用例来构建这个适配器会为 Linkerd 带来额外的价值。

William Morgan 写了一篇很棒的博客文章,描述了为什么 Linkerd 团队决定编写自己的代理而不是使用 Envoy。tl;dr 是 Envoy 是一个通用代理,而 linkerd2-proxy 是专为以最有效和不引人注目的方式处理微服务流量而构建的。

于 2020-12-06T20:24:29.090 回答