使用 Telepresence 在本地构建和测试 Kubernetes 应用程序

  • Daniel Bryant
  • 谢丽

2017 年 10 月 26 日

话题:DevOps语言 & 开发Kubernetes

开发可以部署在容器调度平台上的微服务向工程师提出了新的挑战,尤其是在本地构建和测试有若干依赖项的服务。Kubernetes 1.3 包含一个基于 VM 的、可以在本地运行的单节点集群minikube,虽然这种方法很有用,但它会消耗大量的本地资源。开源工具Telepresence提供了另外一种方法,开发人员可以借助它在本地构建和测试服务,而该服务透明地集成(通过一个双向代理)了它所依赖的那些运行在远程集群上的服务。

开源工具 Telepresence 的创建者是来自 Datawire 的Abhay Saxena。近日,InfoQ 采访了他,内容包括:在将应用程序部署到类似 Kubernetes 这样的容器编排平台上之后,软件开发周期发生了怎样的变化;Kubernetes 为什么如此受欢迎;CNCF 在原生云领域中扮演什么角色。

InfoQ:嗨,Abhay,谢谢您今天接受 InfoQ 的采访。您能简单地介绍下自己以及 Telepresence Kubernetes 开发工具吗?

Saxena:我叫 Abhay Saxena,是一名来自Datawire的软件工程师。我维护着开源项目 Telepresence。以前,我们在 Kubernetes 上使用微服务架构构建一个云应用程序,我们发现,在 Kubernetes 上,开发 / 调试周期比较长。每次代码变更,我们都得走一遍容器构建 / 部署流程,这种额外的延迟拖慢了进度。

因此,我们就问自己,在开发时有没有办法彻底地省掉这个流程,于是就有了 Telepresence。借助 Telepresence,我们在本地编写并运行服务,其他的都运行在远程 Kubernetes 集群上。Telepresence 在本地服务和远程 Kubernetes 集群之间创建了一个双向代理,因此,本地服务拥有远程集群的全部访问权限,反之亦然。

最直接的效果就是,我现在可以改两行代码,然后立即测试。

InfoQ:Telepresence 的典型应用场景是什么?您见过什么没想到的用法吗?

Saxena:最常见的应用场景是快速开发。持续集成 / 持续部署管道是一个重要的工具,但对实际的开发来说非常恐怖。没有哪个开发人员愿意每次变更时都等待 CI 完成。第二个场景乍听起来有点让人奇怪,就是运行调试器。我们有用户希望借助 Telepresence 在微服务上使用调试器,这就跟在代码上运行调试器一样简单。

InfoQ:像 Telepresence 这样一个工具,如何纳入使用 Kubernetes 的整个软件开发生命周期?

Saxena:如果你将基本的 Kubernetes SDLC 想成“编码、(金丝雀)部署、监控”,Telepresence 针对的仅仅是“编码”阶段。在编码阶段,你得编写并测试服务,Telepresence 可以提高你在那个阶段的生产力。一旦要部署到生产环境,你就需要使用 CI/CD 管道了。也就是说,我们正在做一些工作,让 Telepresence 可以用在一些生产相关的场景中。敬请期待!

InfoQ:您认为 Kubernetes 为什么会如此受欢迎?未来,Kubernetes 会怎么样?

Saxena:我认为,他们开始时就有可靠的技术和设计,在此基础上,他们比社区中方方面面的其他所有人做得都好,从向终端用户布道,到获取额外贡献的良好流程。

长远来看,我认为,Kubernetes 有望成为类似 POSIX(POSIX 是云基础设施的交互操作标准)云版本这样的东西。最近发布的 DC/OS Kubernetes 就是这样一个例子,我说的就是这个意思。近期,我们一直关注的是与声明式应用程序管理相关的工作,因为应用程序开发是 Kubernetes 生态系统(Datawire 也在这个领域努力做着工作)中其中一个最不成熟的部分。

InfoQ:您对原生云计算基础(CNCF)有什么看法?您想过将类似 Telepresence 这样一个工具捐献给他们吗?

Saxena:我们是 CNCF 的忠实粉丝。他们在孵化原生云技术方面做了许多了不起的工作。实际上,我们在日常工作中使用了若干 CNCF 技术:当然包括 Kubernetes,还有 Envoy、Prometheus 及 Docker。随着项目的发展,我们愿意把 Telepresence 捐献给 CNCF。我们亲眼看到,CNCF 提供了 Envoy 支持,我们也希望看到他们支持 Telepresence。

InfoQ:您还有其他想和 InfoQ 的读者分享的东西吗?我们还想问一下,参与 Telepresence 项目的最佳方式是什么?

Saxena:Telepresence 既可以和 Kubernetes 一起使用,也可以和 OpenShift 一起使用。我们一直期待人们有更多的反馈和建议,因此,如果你觉得 Telepresence 可能有用,就请访问https://www.telepresence.io,亲自试一下!

其他容器调度平台提供了类似的工具,辅助本地开发,包括Docker for Mac/Windows、Red Hat OpenShift minishift及 Apache Mesos minimesos

查看英文原文Building and Testing Kubernetes Applications Locally Using Telepresence

DevOps语言 & 开发Kubernetes