谷歌开源Skaffold:简化Kubernetes开发

时间:2019-11-11 00:55:37   热度:37.1℃   作者:网络

原标题:谷歌开源 Skaffold:简化 Kubernetes 开发

作者:Nick Kubala是谷歌云部门的软件工程师,Russell Wolf是产品经理

早在2017年我们就注意到,创建Kubernetes原生应用程序的开发人员要花很长的时间跨注册中心构建和管理容器映像、手动更新Kubernetes清单文件,以及每次进行哪怕极小的代码更改都要重新部署其应用程序。于是我们着手创建一个工具来自动执行这些任务,帮助他们专注于编写和维护代码,而不是管理编辑-调试-部署这个“内部循环”过程中所需的重复性步骤。Skaffold由此诞生了。

今天,我们宣布推出Skaffold的第一个正式版。Skaffold简化了你在进行Kubernetes开发时执行的常见操作任务,使你可以专注于代码更改并迅速部署到集群上。它是驱动Cloud Code的底层引擎,而Cloud Code本身就是一款功能强大的工具,可以提高开发人员的工作效率。

Skaffold的核心命令skaffold dev密切关注本地源代码的更改,实时重新构建应用程序,并实时重新部署到集群上。但Skaffold已得到了很大的完善,不仅仅是一款构建和部署工具,它还成为提高开发人员速度和工作效率的工具。

Skaffold用户的反馈证明了这一点。ForgeRock的工程主管Warren Strange说:“我们的客户很喜欢[Kubernetes],但老是向我们反馈称在Kubernetes上进行开发很麻烦。Skaffold正适合解决这个问题。对Docker映像或配置进行更改以前要花几分钟,现在只要花几秒钟。Skaffold的插件架构使我们能够部署到Helm或Kustomize,并使用Kaniko之类的各种Docker构建插件。Skaffold把我们原来一套定制的实用程序和脚本换成了易于使用的简化版工具。

Kubernetes开发人员的最好朋友

Skaffold是一种命令行工具,通过以一种可扩展的方式自动执行开发工作流程中从源代码到部署的大部分环节,因而为开发人员节省了时间。它默认支持最常见的映像构建和应用程序部署策略,因而与一系列广泛的新旧项目兼容。Skaffold还可以完全在客户端运行,你的集群中不需要任何组件,因而拥有轻量级和高性能的优点。

Skaffold的内部开发循环

通过处理迭代开发的操作任务,Skaffold为应用程序开发人员大大减轻了负担,并大大提高了工作效率。

在过去这两年,近150位代码贡献者向Skaffold项目提交了5000多次代码,带来了40个版本,我们对Skaffold的核心功能很成熟充满信心。下面不妨仔细看看Skaffold的一些核心功能。

快速迭代开发

说到开发,skaffold dev是你的个人操作助手:它了解构成你应用程序的源文件,在你工作时密切关注它们,仅重新构建和重新部署必要的组件。Skaffold随带面向本地和远程部署的高度优化的工作流程,使你可以灵活地针对Minikube或Kind等本地Kubernetes集群以及任何远程Kubernetes集群进行开发。

德国TNG科技咨询公司的首席顾问Martin Höfling说:“Skaffold是一款了不起的工具,为我们简化了开发和交付。Skaffold在这两个方面正合我们的心意:首先是从本地开发、集成测试到交付的整个开发周期。其次,Skaffold使我们能够独立于平台在Linux、OSX和Windows上进行开发,不需要针对特定平台的逻辑。

Skaffold的开发循环还可以自动执行开发人员的典型任务。它可自动跟踪来自所部署工作负载的日志,并将远程应用程序端口转发到你的计算机上,那样你可以直接针对服务端点进行迭代。使用Skaffold的内置实用程序,你可以完全使用一款轻量级客户端工具进行真正的云原生开发。

生产就绪的CI/CD管道

Skaffold可用作生产级CI/CD管道的构建模块。Quora的软件工程师Taylor Barrella说:“Skaffold很出色,它是我们想要用于开发和部署的工具。它为我们提供了跨应用程序的通用入口点,我们也可以将其重新用于CI/CD。眼下,我们所有用于Kubernetes应用程序的CI/CD管道在构建和部署时都使用Skaffold。

Skaffold可用于构建映像并将应用程序安全地部署到生产环境,从而重复使用你用于本地运行应用程序的大多数同样工具。skaffold run使用一个简单的命令,即可运行从构建到部署的整条管道,还可以分解为skaffold build和skaffold deploy,以便对这个过程实行更精细化的控制。skaffold render可用于构建应用程序映像,输出模板化的Kubernetes清单文件,而不是实际部署到你的集群,因而易于与GitOps工作流程整合起来。

配置文件让你可以在多个环境中使用同样的Skaffold配置,通过面向每个环境的Skaffold配置文件来表达差异,并使用当前的Kubernetes上下文激活特定的配置文件。这意味着你可以推送映像,并将应用程序部署到全然不同的环境,根本没必要修改Skaffold配置。这使得团队中的所有成员都可以轻松共享同样的Skaffold项目配置,同时仍能够针对其自己的个人开发环境进行开发,甚至可以使用同样的配置来部署到试运行环境和生产环境。

集群上的应用程序调试

除了应用程序部署外,Skaffold在许多方面也大有帮助,尤其是调试。Skaffold默认情况下就支持直接调试在你集群上运行的Golang、NodeJS、Java和Python代码!

skaffold debug命令以持续的构建和部署循环运行你的应用程序,并将所有必需的调试端口转发到本地计算机。这使Skaffold可以自动为运行中的应用程序添加调试器。

Skaffold还可以动态处理任何配置更改,为你提供了一个简单而强大的工具来开发Kubernetes原生应用程序。skaffold debug幕后支持Cloud Code for IntelliJ和Cloud Code for Visual Studio Code中的调试功能。

Cloud Code:IDE中的Kubernetes开发

Cloud Code随带的工具可以帮助你快速而轻松地编写、部署和调试云原生应用程序。它提供了Visual Studio Code和IntelliJ等IDE的扩展件,使你可以迅速迭代和调试代码,并迅速将代码部署到Kubernetes。要是觉得听起来与Skaffold相似,那是由于两者本来密切相关――Skaffold幕后支持使Cloud Code如此出色的诸多核心功能!在Skaffold的帮助下,本地调试部署到Kubernetes的应用程序和持续部署之类的功能直接做入到Cloud Code扩展件中。

为了获得Skaffold的最佳IDE体验,请尝试使用Cloud Code for Visual Studio Code或IntelliJ IDEA!

下一步是什么?

我们在Skaffold和Cloud Code方面的目标是,为Kubernetes开发提供行业领先的工具。自Skaffold问世以来,我们就与更广泛的社区积极合作,确保Skaffold的发展顺应用户需求。我们看到,来自外部贡献者的一些奇妙想法取得了成果;鉴于Kubernetes开发生态系统仍在不断变化,我们将优先考虑对Skaffold的有用性和可用性会有最大影响的功能。我们还与Cloud Code团队紧密合作,在你的IDE中展示Skaffold的功能。

由于迎来了正式版,现在是开始使用(或继续使用)Skaffold的最佳时机,它将提供一种出色的生产级开发体验,值得你依赖。

上一篇: 苏宁双十一1分钟战报:家电3C破10亿

下一篇: 原创小天获得FMVP,PDD成最大赢家,...


 本站广告