@lsmn
2017-10-26T07:33:29.000000Z
字数 2306
阅读 3085
微服务
Kubernetes
Docker
开发可以部署在容器调度平台上的微服务向工程师提出了新的挑战,尤其是在本地构建和测试有若干依赖项的服务。本文将介绍工具Telepresence,开发人员可以借助它在本地构建和测试服务,而该服务透明地集成了它所依赖的那些运行在远程集群上的服务。
开发可以部署在容器调度平台上的微服务向工程师提出了新的挑战,尤其是在本地构建和测试有若干依赖项的服务。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