前几年,为了让Kubernetes开箱即用,各种开发工具涌入市场。这不难理解,没有人愿意错过新技术趋势。但盲目追新有时会付出惨重的代价。随着Kubernetes生态系统的不断完善,一些工具可以继续发展,而一些工具则被时代遗弃或纳入新产品开发计划。那么,2021年,作为开发新手,我们应该如何把握趋势,踏上Kubernetes之旅呢?本文将重点介绍Kubernetes的主流应用工具,即Helm、Kustomize和Skaffold。HelmHelm是Kubernetes的包管理器,也是打包、共享和部署k8s应用程序的事实标准。Helm允许您以一致和结构??化的方式将多个YAML配置组合到一个逻辑包或“图表”中。这样,开发者在部署应用时就可以使用自定义参数来保证应用的可配置性。此外,您可以以版本控制和可跟踪的方式将您的应用程序发布到私有或公共存储库。也就是说,Helm为我们提供了一个强大的打包机制,可以保证你的应用程序按预期部署。此外,通过Helm,您可以访问广泛可用的图表库,并为您的组织提供任何图表;您还可以根据包作者提供的设置自定义应用程序。最重要的是,我们不必担心Kubernetes规范语言的复杂性。Helm可以支持原子操作并最小化应用程序和集群风险。也就是说,Helm为我们提供了一个易于理解且随时可用的应用程序包。问题是,Helm有哪些新的应用特性?2019年底,我们看到了Helmv3的正式发布,去掉了集群端组件(Tiller)等一系列特性。2020年底,Helmv2被弃用,大多数图表已迁移到v3格式。如果你还在使用Helmv2,请务必合理分配时间,并计划近期升级。在过去的几个版本中,Helm团队一直忙于解决Helm用户的一个常见抱怨,即YAML模板的使用。Helm中添加的另一个完整功能是后渲染功能,它允许我们在使用Kustomize等工具时自定义图表。最后但并非最不重要的一点是,在2020年,我们还见证了向更加去中心化的图表管理的转变,以及公共Helm图表中央存储库的启动。Helm有很多优点,但最大的缺点之一是自定义应用程序的能力仅限于预先存在的配置选项。不仅如此,以模板化的方式实现这些自定义选项非常繁琐,而Kustomize可以弥补这个缺点。KustomizeKustomize是一个更方便我们基于模板进行配置和定制的工具。它允许开发者将Kubernetes应用构建分成一系列的层和补丁,并具有无限的定制能力。Kustomize使用基于YAML的Kubernetes感知补丁格式来添加/删除/更新应用程序清单的任何部分。Kustomize在1.14版本已经成为kubectl不可或缺的一部分,您只需执行kubectl-k即可调用它。简单理解,Kustomize是一个更强大的应用工具,可以最大化修改Kubernetes应用的权限。但同样,Kustomize也有缺点,那就是无形中增加了开发者的学习曲线。此外,无限制的定制意味着错误配置应用程序的可能性增加。关于Kustomize,有一个使用Helm的新功能,就是通过post-render功能修复已有的Helm图表缺陷,并且不需要拆分,让版本升级更加无缝。目前,Kubernetes生态中的很多工具都嵌入了Kustomize,例如ArgoCD、Flux和Kubestack编排和持续部署工具。如果你搜索像Kustomize这样的补丁功能,你会看到许多新功能已经存在于你的CD工具中。特别是作为新手开发者,如果不熟悉Kubernetes构建过程,可以考虑使用Kustomize作为独立的CLI工具。Skaffold创建Kubernetes原生应用程序,通常会花费很长时间跨注册表构建和管理容器映像,手动更新Kubernetes清单文件,并在每次即使是最微小的代码更改时重新部署他们的应用程序。如何通过创建专有工具而不是重复管理编辑-调试-部署步骤来自动执行这些任务。因此,Skaffold诞生了。Skaffold遵循DevOps最佳实践,使开发环境和工作流在整个SDLC中保持一致。Skaffold为开发者带来了工作流和持续集成(CI)和持续部署(CD)能力,可以帮助企业快速构建和部署Kubernetes应用。在构建部分,Skaffold可以使用Dockerfiles、Buildpacks、Bazel,甚至自定义脚本来实现快速构建的目标。部署时,基于Skaffold模板引擎,可以调用kubectl、Helm或Kustomize实现应用快速落地。2020年,Skaffold团队专注于各种工作流的适配,力求让其他工具更具互操作性。包括在CI/CD和GitOps方面的赋能,以及对Python和Java更好的支持。此外,Skaffold现在有一个新的测试版--skaffold调试。基于新版本的应用程序,Skaffold将在自动配置应用程序的同时尝试启用远程调试。总结总之,当你看到关于Kubernetes的各种应用工具时,不要着急。大家不妨先了解一下Kubernetes的主流应用工具,或许已经可以满足您的业务需求。例如,通过使用Helm,我们可以打包、共享和安装定义好的Kubernetes应用程序。可以使用补丁使用Kustomize修改现有的Kubernetes应用程序。同时,Skaffold也是一个流行的工具,可以更好地管理Kubernetes环境。
