课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的程序员都开始接触和学习DevOps编程开发的方法,而今天我们就通过案例分析来了解一下DevOps编程开发的都有哪些常用工具。
Kubernetes
Kubernetes,容器编配平台事实上的标准。它是一个非常流行的开源平台,诞生于谷歌,谷歌于2014年将其开源。Kubernetes用来管理由多个自包含运行时(也就是容器)组成的应用程序。容器近来正在取代虚拟机成为发布应用程序的标准模型。
Kubernetes集群有一个主节点和多个工作节点,每个工作节点可以处理多个Pod。Pod是由多个容器组成的工作单元。开发人员可以从Pod开始,准备好Pod之后,下一步是向主节点指定Pod的定义以及我们希望部署多少个Pod,剩下的事情由Kubernetes负责。它会获取Pod,并将它们部署到工作节点上。如果有工作节点发生宕机,Kubernetes会自动在可用的其他工作节点上启动新Pod。Kubernetes简化了容器化应用程序的管理过程,让构建和添加更多的特性以及通过改进应用程序来获得更高的客户满意度变得轻而易举。
Rancher
Rancher是一个容器管理平台,可以轻松地部署容器环境(包括Kubernetes、ApacheMesos和DockerSwarm完整发行版),并让云端或基础设施平台上的容器集群操作变得更容易。Rancher2.0是一个用于管理Kubernetes集群的多集群管理工具,它提供的用户界面可以帮助Kubernetes团队提高效率。如果你希望获得更高的高可用性和平台可靠性,一般都会使用集群。集群将服务器组合成单个易于管理的计算能力集合,并且通常会使用容器化方法。
让开发人员自己来管理这些东西是很困难的。幸运的是,Rancher简化了集群的容器管理。截至2018年初,Rancher只用来编配Kubernetes集群。
Spinnaker
随着公司的发展,技术、工具以及管理这些工具的人员的数量都有了巨大的增长,这常常会导致公司内部出现混乱,增加了技术栈的复杂性和碎片化程度。对于小公司来说,碎片化的持续交付过程或许没有什么问题,但随着公司的增长,维护和理解这个过程就变得越来越具有挑战性。新来的工程师可能需要很长时间才能理解、发现和整理部署所需的所有工具和流程,即使是为了做出一个简单的变更。
Netflix推出的Spinnaker就是为了解决这个问题。它是一个通用可扩展的工具,为用户提供了构建块,用以开发自定义持续交付管道,并可以进行有效的扩展。
Spinnaker被很多现代软件公司视为理想的持续交付工具,它为开发人员提供了软件交付过程的可视性和控制能力,帮助他们更好地了解如何交付软件。
Artifactory
大多数开发人员会通过各种方式访问互联网,并从外部存储库获取依赖项。这严重影响了开发团队之间的沟通,因为我们无法跟踪什么样的依赖包或版本被引入到公司的软件环境中。Artifactory是一个二进制存储库管理器,可以用来存储二进制文件。它就像是二进制版本的Git。作为一个DevOps工具,Artifactory的主要目标是帮助开发人员管理三方依赖包,从而提供持续集成、持续交付和持续部署能力,帮助企业实现DevOps。
财富500强公司,如谷歌、亚马逊、思科等,它们将ArtifactRepositoryManager作为通用的依赖包储库管理器,可以支持所有依赖包,不管它们是用什么语言或工具开发的。Artifactory提供了一个自动化的端到端解决方案,方便跟踪开发环境和生产环境的依赖包,促进DevOps团队的协作,并毫不费力地对任务进行自动化。
Artifactory为DevOps团队提供了所有必需的工具,帮助他们有效地处理不断增长的二进制文件、环境和分布式站点,从而确保应用程序开发工作流程的顺畅。Artifactory不需要为相同文件创建不同副本,帮助开发人员节省了大量时间。二进制文件都只有一个副本存储在文件系统中,减少了团队内部和团队之间的混乱和干扰。
为什么应该使用依赖包存储库?
加快开发速度;
提高开发人员的生产力;
更快地发布,自动化开发管道;
无缝的团队协作;
为了节省时间,一遍又一遍地寻找合适的依赖项。
虽然Artifactory的主要目标是提供一种整洁和安全的方法来管理三方依赖包,但也可以用来存储开发团队自己生成的软件包,对它们打标签、版本化,并适时发布,让他们清楚地知道打包了什么东西。
Linkerd
Linkerd是一个开源的轻量级服务网络,由Buoyant公司主导开发。很多成功的大公司,如PayPal、Expedia等,将它们用在生产环境中。它为云原生应用程序带来更高的可靠性、安全性和可视性。Buoyant在2016年次提出了服务网格这个术语,所以Linkerd算得上是“服务网格”的鼻祖。
Linkerd在无需微服务做出任何代码变更的情况下为在集群中运行的微服务提供可观察性、它们之间的通信方式以及其他细微的方面。
服务网格是一个专门的基础设施层,基本功能是用来控制、管理和建立服务之间的联系,让应用程序的各个部分相互通信,使微服务的运行更加高效。服务网格通常被用在云原生应用程序、容器和微服务中,快速打包镜像并交付高质量的软件。
Linkerd在平台层而不是应用程序层为SRE团队提供了可见性、可靠性和安全性以及的服务指标。
Helm
Helm主要用来帮助Kubernetes架构师简化Kubernetes应用程序的安装和管理工作。
Helm使用了一种叫作chart的打包格式。chart是一组描述了一组相关的Kubernetes可用资源的文件。一个chart可以用来部署一些简单的东西。
从架构方面看,Helm有两个端,一个是客户端,即Helm命令行工具,我们称之为HelmCLI,另一个是服务端,即Tiller。HelmCLI是运行在本地机器上的命令。它使用模板引擎根据Helm中定义的源模板生成易于理解的KubernetesYAML。
在生成YAML之后,它会将请求发送到运行在Kubernetes集群中的Tiller。接下来,Tiller在Kubernetes集群中执行更新,确保它是新的并被正确发布,然后添加到历史记录中,在后续可以根据需要进行回滚。在已发布的Helm3中,Tiller被移除掉了。