Sidecar、Ambassador和Adapter模式的区别

Posted

技术标签:

【中文标题】Sidecar、Ambassador和Adapter模式的区别【英文标题】:Differences between Sidecar and Ambassador and Adapter pattern 【发布时间】:2020-04-14 11:46:33 【问题描述】:

我对多容器 Pod 设计模式感到困惑。 (边车、适配器、大使)

我的理解是:Sidecar:容器+容器(共享相同资源并做其他功能)适配器:容器+适配器(用于检查其他容器的状态。例如监控大使:容器+代理(到外部网络)

但是,根据Istio -Installing the Sidecar,他们引入了代理作为边车模式。

Adapter 是容器,Proxy 也是容器。

那么,我的问题是Sidecar模式和Adapter&Ambassador模式有什么区别?

Sidecar 模式概念是否包含 Adapter&Ambassador 模式?

【问题讨论】:

【参考方案1】:

首先,您是对的,术语 sidecar 容器现在已成为描述您的 pod 中的一个额外容器 的词。 Originally(?) 这是一种特定的多容器设计模式。

多容器设计模式

边车模式

您的 pod 中的一个额外容器,用于增强扩展主容器的功能。

大使图案

将网络连接代理到主容器的容器。

适配器模式

转换主容器的输出的容器。

这摘自2015年的原始文章:Patterns for Composite Containers

总结

你的笔记

但是,根据 Istio -Installing the Sidecar,他们引入了代理作为 Sidecar 模式。

在上述模式中,AmbassadorAdapter 实际上都必须代理 网络连接,但目的不同。使用 Istio,这是完成的,例如终止 mTLS 连接,收集指标等以增强您的主容器。所以它实际上是一个 sidecar 模式,但令人困惑的是,正如您正确指出的那样,所有模式 代理连接 - 但目的不同。

【讨论】:

【参考方案2】:

Sidecar 是一个附加容器,它扩展了主容器的功能。随处给出的示例是您想将日志发送到某个外部系统。在不改变业务逻辑(主容器)的情况下,您可以将日志代理部署为边车容器。

Ambassador 是一个容器,它是系统其他部分的代理。一个很好的例子是您部署了具有 Kubernetes API 凭据的大使容器,因此您不必使用来自客户端的身份验证。另一个很好的例子是使用Ambassador as proxy to the Redis caching cluster。


现在,令人困惑的是,这两种模式都不限于 Kubernetes。但是,在 Kubernetes 中实现 Ambassador 通常使用 Sidecar。换句话说,Ambassador 通常被实现为一个 sidecar 容器(如 here 解释的那样)。

Istio envoy 绝对是使用 sidecar 容器实现的。我从未见过它被描述为大使,可能是因为它不仅仅是将请求转发到系统的其他部分。


这两篇文章很好地解释了 Sidecar Ambassador 和 Adapter 模式:

Kubernetes Patterns : The Ambassador Pattern 7 container design patterns you need to know

【讨论】:

以上是关于Sidecar、Ambassador和Adapter模式的区别的主要内容,如果未能解决你的问题,请参考以下文章

Ambassador 部署过程和简单使用

ambassador 学习九 多ambassador部署说明

Ambassador和Istio:边缘代理和服务网格

ambassador 学习一基本试用

ambassador 学习二 认证

sidecar和servicemesh