作者NickKubala,GoogleCloud软件工程师,RussellWolf,产品经理即使是最小的代码更改。因此我们着手创建一个工具来自动执行这些任务并帮助他们专注于编写和维护代码,而不是管理编辑-调试-部署“内部循环”中所需的重复步骤。脚手架诞生了。 今天,我们宣布了Skaffold的第一个产品版本。Skaffold简化了您在进行Kubernetes开发时执行的常见操作任务,让您专注于代码更改并快速部署到您的集群。它是驱动CloudCode的底层引擎,而CloudCode本身就是一个可以提高开发人员生产力的强大工具。 Skaffold的核心命令skaffolddev时刻关注本地源代码变化,实时重建应用,实时重新部署到集群。但是Skaffold已经改进成为不仅仅是构建和部署工具,它已经成为提高开发人员速度和生产力的工具。 Skaffold的用户反馈证明了这一点。ForgeRock的工程总监WarrenStrange说:“我们的客户喜欢[Kubernetes],但他们一直告诉我们,在Kubernetes上进行开发很麻烦。Skaffold符合要求。过去更改Docker映像或配置需要时间。”分钟现在需要几秒钟。Skaffold的插件架构允许我们部署到Helm或Kustomize,并使用各种Docker构建插件,如Kaniko。Skaffold用易于使用的简化工具取代了我们原来的一组自定义实用程序和脚本。” Kubernetes开发人员最好的朋友 Skaffold是一个命令行工具,可以自动执行从源代码到部署的开发工作流程中的大步骤以可扩展的方式链接的一部分,从而节省了开发人员的时间。默认支持最常见的镜像构建和应用部署策略,兼容广泛的新老项目。Skaffold也可以完全运行在客户端,不需要集群中的任何组件,因此具有轻量级和高性能的优点。Skaffold的内部开发循环 通过处理迭代开发的操作任务,Skaffold大大减轻了应用程序开发人员的负担,大大提高了生产力。 近两年来,近150位代码贡献者向Skaffold项目提交了5000多条代码,带来了40个版本。我们有信心Skaffold的核心功能是成熟的。让我们仔细看看Skaffold的一些核心功能。 快速迭代开发 在开发方面,skaffolddev是您的个人运营助手:它了解构成您的应用程序的源文件,在您工作时密切关注它们,并仅重建和重新部署必要的成分。Skaffold为本地和远程部署提供了高度优化的工作流,让您可以灵活地针对本地Kubernetes集群(如Minikube或Kind)以及任何远程Kubernetes集群进行开发。 德国TNG技术咨询公司首席顾问MartinH?fling表示:“Skaffold是一个了不起的工具,它为我们简化了开发和交付。整合了从测试到交付的整个开发周期。其次,Skaffold使我们能够开发基于Linux、OSX和Windows平台独立,不需要特定于平台的逻辑。” Skaffold的开发循环还可以自动执行开发人员的典型任务。它会自动跟踪已部署工作负载的日志,并将远程应用程序端口转发到您的计算机,以便您可以直接针对服务端点进行迭代。使用Skaffold的内置实用程序,您可以实现真正的云-本机开发全部集成在一个轻量级客户端工具中。 生产就绪的CI/CD管道 Skaffold可以用作生产级CI/CD管道的构建块。Quora软件工程师TaylorBarrella说:“Skaffold很棒,它是我们开发和部署所需的工具。它为我们提供了跨应用程序的通用入口点,我们也可以将其重新用于CI/CD。目前,我们所有用于Kubernetes应用程序的CI/CD管道在构建和部署时都使用Skaffold。” Skaffold可用于构建映像并将应用程序安全地部署到生产环境,重用您用于在本地运行应用程序的大部分相同工具。skaffoldrun从build运行到整个部署流水线也可以分解为skaffoldbuild和skaffolddeploy以便对流程进行更细粒度的控制。skaffoldrender可用于构建应用程序映像和输出模板化的Kubernetes清单文件,而不是实际部署到您的集群,从而使其易于与GitOps工作流程集成。 配置文件允许您在多个环境中使用相同的Skaffold配置,表达通过每个环境的Skaffold配置文件的差异,以及使用当前Kubernetes上下文激活特定的配置文件。这意味着您可以将图像和应用程序推送到完全不同的环境,而无需修改Skaffold配置。这使得团队所有成员可以轻松共享相同的Skaffold项目配置,同时仍然能够针对自己的个人开发环境进行开发,甚至可以使用相同的配置部署到暂存和生产环境。 应用程序调试在集群上 除了应用部署,Skaffold也很有帮助,尤其是调试。Skaffold默认支持直接调试集群上运行的Golang、NodeJS、Java和Python代码! skaffolddebug命令在连续构建和部署循环中运行您的应用程序,并将所有需要的调试端口转发到本地机器。这允许Skaffold自动将调试器添加到正在运行的应用程序。 Skaffold还可以动态处理任何配置更改,为您提供一个简单而强大的工具来开发Kubernetes原生应用程序。skaffolddebug在后台支持CloudCodeforIntelliJ和CloudCodeforVisualStudioCode的调试功能。 CloudCode:IDE中的Kubernetes开发 CloudCode附带工具,可帮助您快速轻松地编写、部署和调试云原生应用程序。它为VisualStudioCode和IntelliJ等IDE提供扩展,让您可以快速迭代和调试代码,并快速将代码部署到Kubernetes。如果它听起来与Skaffold相似,那是因为两者密切相关-在幕后,Skaffold支持许多使CloudCode如此出色的核心功能!在Skaffold的帮助下,诸如本地调试部署到Kubernetes的应用程序和持续部署等功能直接内置到CloudCode扩展中。 要获得Skaffold的最佳IDE体验,请尝试CloudCodeforVisualStudioCode或IntelliJIDEA! 接下来呢?我们与Skaffold和CloudCode的目标是为Kubernetes开发提供行业领先的工具。自Skaffold成立以来,我们一直积极与更广泛的社区合作,以确保Skaffold的发展符合用户需求。我们看到来自外部贡献者的一些绝妙想法正在实现;鉴于Kubernetes开发生态系统仍在不断变化,我们正在优先考虑对Skaffold的实用性和可用性影响最大的功能。我们还与CloudCode团队密切合作,在您的IDE中展示Skaffold的功能。 现在是开始使用(或继续使用)Skaffold的最佳时机,多亏了通用版本,它将提供您可以依赖的出色的生产级开发体验。
