Kubernetes 开发流程中的三个关键步骤


作者 | Daniel Thiry

译者 | 弯月,责编 | 杨碧玉

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

以下为译文:

建立有效的Kubernetes开发工作流程对于Kubernetes的成功采用和接纳至关重要。

如今,使用Kubernetes开发人员越来越多了。这意味着他们的工作流程也必须相应地改变,才能更好地利用这项本不是为开发人员而生的技术。然而,将Kubernetes集成到有效的开发工作流程中并不容易,你需要考虑如下几个方面。

设置Kubernetes的工作环境

建立有效的Kubernetes开发工作流程的第一步是确定应使用哪种工作环境。你不仅需要考虑使用哪种云环境或托管的Kubernetes服务,而且要考虑是否应该完全使用云环境。与生产系统相比,开发可以只在本地的Kubernetes环境中进行。

1、本地Kubernetes还是基于云的Kubernetes 

当然,本地Kubernetes与基于云的Kubernetes工作环境各有利弊:Minikube之类的本地环境可以免费使用,但云环境却要花钱。另外,本地环境也可以离线使用,并且完全独立于其他开发人员和基础设施。

云环境的优势在于,它们提供更多的计算资源,可以运行“标准”的Kubernetes(而不仅是只能在本地计算机上运行的版本),而且易于上手。你甚至可以使用内部的Kubernetes平台自动提供这类环境,所以不要求开发人员承担任何工作或掌握任何有关Kubernetes的知识。

2、Kubernetes工作环境的设置过程

从工作流程的角度来看,建立标准的方法来构建开发人员的工作环境非常重要。当然,这在很大程度上取决于你使用的工作环境的类型。每个开发人员都需要分别设置本地环境,因为这些环境只能在本地计算机上运行,无法集中设置。因此,你需要提供有关如何启动本地环境的详细说明。另外,你还需要确定使用哪个本地Kubernetes解决方案。

如果使用远程Kubernetes环境,则面临着完全不同的挑战:尽管创建基于云的工作环境很容易,但是你需要确定开发人员访问这些环境的方式。有些公司可能会让管理员集中创建环境,然后单独为开发人员提供访问权限。然而,这会成为创建过程的瓶颈,从而降低整个开发流程的速度。因此,让开发人员按需创建这些环境更加有效。Spotify等公司针对这种情况的解决方法是构建内部自助服务命名空间平台。另外,我们还有一些现成的软件解决方案,例如loft可以为任何Kubernetes集群提供这项功能。


开发

在开发人员可以访问Kubernetes工作环境后,接下来我们需要确定实际的开发阶段。这里的开发阶段指的是软件工程中的编程、构建以及观察/测试结果等。

1、如何使用Kubernetes

尽管大多数工程师没有设置Kubernetes环境(步骤1)的经验,但他们非常熟悉软件的各个开发阶段。即便如此,在引入Kubernetes后,他们的工作流程可能也会发生重大变化。

通常,开发人员非常了解他们使用的编程语言、框架和工具的特性,但是Kubernetes带来了一些新挑战,而且这些挑战大多与实际的软件无关:如何容器化软件?如何在Kubernetes中构建和启动容器?如何将代码更改部署到容器中,以便开发人员查看更改内容?如何调试软件?

所有这些问题都需要解决,所有解决方案都应成为标准化的工作流程。对于该项任务,通常我们并不需要每一位开发人员都参与解决最初的一次性问题(例如初始容器化),其实只需要一位工程师或一个小型团队来建立新的工作流程,才更为合理。

2、Kubernetes的开发工具

由于许多公司将Kubernetes引入开发阶段时,都遇到了相同的问题,因此已经有人开发了一些开源工具来解决这一领域的问题,例如DevSpace、Skaffold、Tilt和Telepresence等。

这些工具解决的问题都很类似,但采用的概念和技术方法略有不同:DevSpace提供双向的实时代码同步,可以对容器进行热重载,这样无需重启容器就可以看到代码的更改内容。(现在其他工具也提供了部分功能。)此外,它专注于基于云的Kubernetes环境中的开发。与此相反,Tilt则非常专注于使用本地Kubernetes环境进行开发,而Telepresence支持开发本地运行的应用程序,然后再通过远程与其他部分进行交互。最后,Skaffold与DevSpace和Tilt相似,但它更关注快速部署工作流程。

一般,这些工具的目的都相同,而且用途相对广泛(例如Tilt也可以用于远程环境,DevSpace可以与本地环境或CI / CD管道一起使用)。你需要根据个人的具体情况,选择最适合的解决方案,最后的决定实际上取决于你的偏好和需求。

无论团队采用哪种工具,你都应该提供通用的配置,以方便开发人员的使用。例如,减少开发人员在有效使用Kubernetes时需要用到的命令,如devspace dev或skaffold debug等。当然,这需要一些初始配置和文档编制工作,但是这项工作很快就会收到回报。


部署

1、如何部署到Kubernetes系统

关系到Kubernetes开发工作流程的最后一步是部署。这意味着开发人员需要通过一种方式,轻松地将他们的代码推送到预发布环境或测试环境,并最终推送到生产环境。

Kubernetes工作流程中的这一难题相对比较容易解决,因为大多数开发人员和公司已经习惯了这一点,而且已经有了适当的解决方案。尽管如此,对于开发人员而言,这个阶段应该很容易,而且速度很快,这有这样才能鼓励他们随时有需要就部署应用程序。

2、Kubernetes的部署工具

部署到Kubernetes的解决方案包含前面提到的开发工具,最常用的是Skaffold和DevSpace,它们也可以集成到更复杂的CI / CD管道中。例如,如果DevSpace的配置得当,则开发人员只需使用命令devspace deploy即可将代码部署到预先指定的Kubernetes集群中,并在其中执行代码。这对于快速部署非常实用,例如运行测试。

为了将应用程序部署到生产环境,我们需要使用更复杂的持续集成和部署解决方案。由于Kubernetes现在非常普遍,几乎所有的CI / CD工具都支持它,因此这些解决方案是否专门针对Kubernetes并不重要。你应该比较不同的解决方案,然后看看哪一种最适合自己的需求。首先可以从工具入手:Jenkins、Codefresh、Travis CI和Circle CI。

总结

为了建立有效的Kubernetes开发工作流程,我们需要定义和简化工作流程的步骤。首先,我们需要为开发人员提供Kubernetes工作环境,你可以选择在本地运行,也可以在云中运行。接下来,我们需要为开发人员提供易于使用的Kubernetes开发工具,来支持开发流程,即编程、快速部署和调试。最后,开发人员还需要一种简单的方法将开发的代码部署到生产环境。

所有这些步骤的共同点是,标准化以及方便开发人员使用,只有这样才能顺利地采用Kubernetes。如果你从未使用过Kubernetes的话,千万不要低估这部分工作的难度。此外,文档和组织内的支持是整个过程的关键。

原文:https://medium.com/@danielthiry92/the-kubernetes-development-workflow-3-critical-steps-ab456d0b9b44

本文为 CSDN 翻译,转载请注明来源出处。


更多精彩推荐
☞阿里动物园再添新丁,小蛮驴搞定物流最后三公里!

☞微软水下数据中心“浮出水面”、GitHub代码保存在北极,数据黑科技贮藏方式大曝光!
☞微软全球 AKS 女掌门人,这样击破云原生“怪圈”!
☞阿里动物园再添新丁,小蛮驴搞定物流最后三公里
☞中国移动云智融合峰会 与您相约揽胜九天
☞我投资比特币的3个原因
点分享点点赞点在看
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页