Kubernetes 开发工具Telepresence、Gefyra 和 mirrord对比

🤖 由 ChatGPT 生成的文章摘要

作者:Eyal Bukchin (MetalBear)

Kubernetes 开发周期是一个不断发展的格局,有无数的工具试图简化流程。每种工具都有其独特的方法,选择通常取决于各个项目的要求、团队的专业知识和首选的工作流程。

在各种解决方案中,出现了一个被我们称为“本地 K8S 开发工具”的类别,它旨在通过将本地运行的组件连接到 Kubernetes 集群来增强 Kubernetes 开发体验。这有助于在云环境中快速测试新代码,绕过 Docker 化、CI 和部署的传统周期。

在这篇文章中,我们比较了该类别中的三种解决方案:Telepresence、Gefyra 和我们自己的竞争者mirred。

Telepresence

Telepresence 是该类别中最古老且最完善的解决方案,它使用 VPN(或更具体地说,tundevice)来连接用户的机器(或本地运行的容器)和集群的网络。然后,它支持拦截集群中特定服务的传入流量,并将其重定向到本地端口。还可以过滤重定向的流量,以避免完全中断远程服务。它还提供补充功能来支持文件访问(通过本地安装安装到 Pod 的卷)和导入环境变量。网真需要在用户计算机上安装本地守护程序(需要 root 权限),并在集群上安装流量管理器组件。此外,它还运行一个代理作为pod上的sidecar来拦截所需的流量。

Gefyra

Gefyra与 Telepresence 类似,使用VPN连接到集群。但是,它仅支持将本地运行的Docker容器连接到集群。这种方法增强了跨不同操作系统和本地设置的可移植性。然而,缺点是它不支持本机运行非容器化代码。

Gefyra主要关注网络流量,不支持文件访问和环境变量。与网真不同,它不会改变集群中的工作负载,从而确保在出现问题时进行简单的清理过程。

mirrd

作为这三个工具中最新的,mirrord采用了不同的方法,将自身注入到本地二进制文件中(LD_PRELOAD在Linux或DYLD_INSERT_LIBRARIESmacOS 上使用),并覆盖libc函数调用,然后代理在集群中运行的临时代理。例如,当本地进程尝试读取文件时,mirrord 会拦截该调用并将其发送到代理,然后代理从远程pod读取文件。这种方法允许镜像覆盖进程的所有输入和输出——统一覆盖网络访问、文件访问和环境变量。

通过在进程级别工作,mirrd支持同时运行多个本地进程,每个进程都在集群中各自pod的上下文中,无需将它们容器化,也不需要用户计算机上的root 权限。

工具对比图

Kubernetes 开发工具Telepresence、Gefyra 和 mirrord对比

总结

Telepresence、Gefyra 和Mirrord 都提供了简化 Kubernetes 开发周期的独特方法,各有其优点和缺点。Telepresence 功能丰富但也很复杂,mirred 提供无缝体验并支持各种功能,而 Gefyra 则追求简单性和稳健性。

您在它们之间的选择应取决于项目的具体要求、团队对工具的熟悉程度以及所需的开发工作流程。无论您选择哪种工具,我们相信本地 Kubernetes 开发方法可以为 Kubernetes 开发周期的瓶颈提供简单、有效且廉价的解决方案,并且随着这些工具的不断创新和发展,这种方法将变得更加普遍。

原文连接

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索