速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

2021 年,开发者必备的 3 款 Kubernetes 工具

  • 2021-05-31
  • 本文字数:2620 字

    阅读完需:约 9 分钟

2021年,开发者必备的3款Kubernetes工具

在过去几年,我们看到有大量工具被开发出来,用于简化在 Kubernetes 上的软件开发。正如生态系统中,优胜劣汰、适者生存一样,功能强大、操作便利的工具会不断壮大,反之,则不会被使用者接受。那么,2021 年,有哪些好工具供我们使用?


本文将重点介绍 Kubernetes 应用程序的工具:Helm、Kustomize、Skaffold

Kubernetes 清单(YAML)

如果你是 Kubernetes 的新用户,建议浏览这个网站,里面有详细介绍。


你首先需要了解,Kubernets 具有编排应用的声明式方法。你可以将期望的应用状态写入 YAML 格式的配置文件,即所谓“manifest”,然后将其发送给 Kubernetes 后台,即可实现相应操作。

Helm

Helm 是 Kubernetes 的包管理工具,可以打包、共享和部署 K8s 应用。将 Helm 视为一个包管理器——它允许用户将多个 YAML 配置文件片段到“图表”的逻辑程序包中。即主要用来管理图表。它让你可以用一种一致的、结构​​化的方式将多个 YAML 配置片段分组到一个称为“chart”的逻辑包中。


作为包制作者,创建 Helm Chart 有以下好处:


  1. 可以在部署应用时使用自定义参数实现应用程序可配置。为此,可以使用模板

  2. 可以通过版本化和可追踪方式将应用程序发布到私有或公共的软件存储库中

  3. 可以将你的应用程序依赖于其他的 Helm Chart

  4. 总体而言,Helm 可以提供强大的封装机制,以确保应用程序按预期部署。


作为包使用者,安装 Helm Chart 可以获得更多好处:


  1. 可以访问内容丰富的存储库,其中既有公开发布的 Chart,也有组织提供的私有 Chart。

  2. 可以根据程序包制作者提供的设置来自定义应用程序

  3. 拥有部署软件包的正版资源

  4. 不必担心 Kubernetes 规范语言的复杂性

  5. Helm 支持原子操作,最大程度上降低应用程序和集群的风险。

  6. 总体而言,您可以获得一个易于理解且可以即时可用的应用程序包。

Helm 有什么新功能?

2019 年末,Helm v3 发布,删除了集群组件(Tiller)和许多其他的功能。2020 年底,Helm v3 逐渐取代 Helm v2,大多数公共 Charts 已经改成了 v3 的格式。如果你还在使用 Helm v2,务必要安排时间升级近期软件路线图(升级时可以看下这个插件,可能会有所帮助)。


在最近的几个发行版中,Helm 团队一直致力于解决用户的其中一个最大的烦恼——YAML 模板使用难度大。目前 Helm 开发出了一个功能强大的 linting命令,可以解决在调试 YAML 时所遇到的部分问题。


Helm 中又添加了一个后期渲染功能,使用户可以使用 Kustomize 等工具自定义 Helm 图表。


最后但也同样是重要的,2020 年,Helm 也开始向去中心化的图表管理方式转变,并推出了两个共享的中心存储库:


  • ArtifactHub

  • ChartCenter


下载地址:https://helm.sh/

Kustomize

Helm 的最大缺点是应用程序的设置仅限于预先存在的配置选项。并且,图表作者还必须以有些麻烦的模板方式来实现这些自定义选项。Kustomize可以弥补这些缺点。


Kustomize 允许用户将 Kubernetes 应用程序构建为一系列的层和补丁,从而实现没有限制的自定义。Kustomize 使用基于 YAML 文件的、Kubernetes 可识别的补丁格式来添加/删除/更新应用程序清单的任何部分。Kustomize 在1.14版本中成为了kubectl 中不可或缺的一部分,要调用它,用户需要做的就是执行 kubectl-k 命令。


Kustomize 是一个功能强大的工具,可以让用户以所需要的任何方式来修改 Kubernetes 应用程序。但是,这就意味着学习起来有些困难,因为定制方案的过于随意会导致出错的可能性大大提高。Kustomize 有一种高级用法,使用 Helm 的后期渲染功能来修补现有的 Helm 图表。这样就无需再另做版本分支,使得版本升级变得更加方便。

Kustomize 有什么新功能?

为了添加上 Kustomize 的功能,Kubernets 生态系统中的许多工具都内嵌了 Kustomize。最突出的案例是编排和持续部署工具,如ArgoCDFluxKubestack这三种工具。如果用户搜索类似于补丁功能的工具,去查看你的 CD 工具,就可以找到它。


如果用户不熟悉 Kubernetes 的构建过程,可能就不知道在初始集成期间,维护人员将嵌入 Kubectl 的 Kustomize 版本冻结在了 2.0.3。这不仅使得文档更加令人困惑了,也让 Kubectl 内嵌的版本缺少了过去两年所做的大量增强功能,希望负责该部分的维护团队可以快速解决这个问题。同时,如果用户需要最新版本,可以考虑使用 Kustomize 作为独立的 CLI 工具。

Skaffold

Skaffold的作法有些不同,它遵循 DevOps 的最佳实践,在 SDLC 中保持开发环境和工作流程的一致性。Skaffold 为开发流程、持续集成及持续部署构建和部署 Kubernetes 应用程序。


在构建过程中,Skaffold 可以使用 Dockerfiles、Buildpacks、Bazel,甚至是自定义的脚本。对于部署,Skaffold 所使用的模板引擎是有限的,但可以调用 Kubectl,Helm 或者 Kustomize。


Skaffold 有三种主要的操作模式:


  1. skaffold dev——此模式可以在一个“观察,构建,部署”循环中运行 Skaffold。在这种模式下,用户可以在本地编辑源文件,Skaffold 将它们部署到用户选择的集群中。Skaffold 支持端口转发和日志追踪,以便在这种模式下工作时能够获得更流畅的开发体验。

  2. scaffold build——此模式可以运行 Skaffold 来构建用户的工件,并将其放置在用户所选择的存储库中。

  3. scaffold deploy——此模式将用户构建的应用程序部署到用户所选择的集群中,也可能可以用于 Helm 和 Kustomize。如果想要使用单个命令来构建和部署,可以使用 Skaffold run。

Skaffold 有什么新功能?

2020 年,Skaffold 团队致力于使得 Skaffold 更易适应各种工作流程,并实现与其他工具的交互操作。改进点包括与 CI/CD 和 GitOps 更灵活的集成,以及对 Python 和 Java 语言更好地支持。


此外,Skaffold 在 Beta 版本中有一个新的操作模式skaffold debug。在这种新模式下,配置应用程序运行时,实现自动远程调试。这个功能在微服务环境下,使用远程操控集群时,应用传统的调试器比较困难。如果用户在这方面遇到麻烦,可以查看一下类似于 Rookout 这样的不间断调试器。

总结

在打包、部署和共享众人皆知的 Kubernetes 应用程序清单方面,我们可以明显看到,市场在整合。CNCF 在这方面做的非常好,具有很多目前为止看来很先进的工具,其中包括 Helm(CNCF 的一个官方项目)、集成到 kubectl 中的 Kustomize 和许多其他工具。像 Kubernetes 系统的其他部分一样,这方面的工具目前做得已经非常成熟了,且每个工具都有其各自的特点。


使用 Helm 打包、共享和安装定义完备的 Kubernetes 应用程序。使用 Kustomize 补丁修改现有的 Kubernetes 应用程序。Skaffold 这个工具也很有用(也很受欢迎!),但配置 Kubernetes 应用程序并不是它的主要功能。


原文链接:


https://dzone.com/articles/developer-tooling-for-kubernetes-in-2021-helm-kust?fileGuid=vrvQpyxYcpQJt6YG

2021-05-31 11:354131

评论

发布
暂无评论
发现更多内容

开源一夏 |【云原生】DevOps(五):集成Harbor

是Dream呀

DevOps之代码检查

凌云Cloud

DevOps 研发管理 代码检查器

线程池原理与实践|从入门到放弃,深度解析

领创集团Advance Intelligence Group

线程池 内存溢出 线程池工作原理

Axure9的元件用法

乔乔

签约计划第三季 8月月更

从技术全景到场景实战,透析「窄带高清」的演进突破

阿里云CloudImagine

云计算 直播 视频

麦聪DaaS平台 3.7.0 Release 正式发布:全面支持国际化

雨果

DaaS数据即服务

连续三次 | 灵雀云入选Gartner中国ICT技术成熟度曲线报告

York

云计算 云原生 数字化转型 ICT Gartner

关于 01 背包问题

HelloWorld杰少

8月月更

2022-Java后端工程师必会知识点-(Lunix)

自然

Lniux 8月月更

深入理解IO流(第一篇)

JAVA活菩萨

Java 程序员

竞赛:糖尿病遗传风险检测挑战赛(科大讯飞)

Lingxw

数据挖掘 Kaggle 8月月更

什么是现场服务管理系统(FSM)?有什么好处?

优秀

企业管理系统 现场管理

是什么,让中国成为一台超级计算机?

脑极体

面试官:可以谈谈乐观锁和悲观锁吗

JAVA活菩萨

面试官

MOSN 反向通道详解

SOFAStack

开源 网络安全 Go 语言 社区贡献 MOSN

Java J.U.C 学习笔记-使用篇(一)

U2647

行业 SaaS 微服务稳定性保障实战

阿里巴巴云原生

阿里云 微服务 云原生 可观测

SRv6网络演进面临的挑战

穿过生命散发芬芳

8月月更 SRv6

Mqtt开发笔记:windows下C++ ActiveMQ客户端介绍、编译和使用

JAVA活菩萨

Java 程序员 后端

Linux Lab 编译 riscv-gnu-toolchain

贾献华

8月月更

实现客户服务自助,打造产品知识库

Baklib

2022-Java后端工程师必会知识点-(Docker)

自然

Docker 镜像 8月月更

开源一夏 | Web开发(七):登录实现及功能测试

是Dream呀

4KMILES加入艾盛集团,以更强劲的数字商务能力,加速中国跨境电商的全域全效增长

Geek_2d6073

开源一夏 | 计算机网络:物理层

是Dream呀

开源

读书笔记之《你想过怎样的一生?》

宇宙之一粟

读书笔记 8月月更

2021-Java后端工程师必会知识点-(分布式RPC框架Dubbo)

自然

RPC 8月月更

Spring Boot整合Mybatis

JAVA活菩萨

Java 程序员 后端

MyBatis操作数据库

JAVA活菩萨

Java 程序员 后端

【CSS】基础选择器,包括标签选择器、类选择器、id选择器和通配符选择器...

翼同学

CSS html 前端 HTML5, CSS3 8月月更

一款好用的FAQ搭建工具

Geek_da0866

2021年,开发者必备的3款Kubernetes工具_云原生_Liran Haimovitch_InfoQ精选文章