写点什么

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:354164

评论

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

《知道做到》:如何从知道到做到?

郭明

Linux开发_动态静态库创建与Makefile规则

DS小龙哥

6月月更

WebStorm注册码_WebStorm2022年激活永久实测有效

Geek_75f9e9

webstorm

洞见科技荣获「最受投资人欢迎的隐私计算服务企业」奖

洞见科技

隐私计算 数据要素

如何制定业务的故障分级标准?

华仔

架构实战营 故障定级 故障分级

得物前端唤端业务场景和技术精讲

得物技术

前端 前端教程 等待唤醒 业务场景 前端工具

Vue-10-class的动态绑定

Python研究所

6月月更

大数据培训flink窗口(Windows)的表现形式

@零度

大数据开发

实战 | 【男保姆式】教你打开第一个微信小程序

写程序的小王叔叔

微信开发 小程序开发 6月月更

如何在 Django 中创建应用程序?

海拥(haiyong.site)

django 6月月更

【Python技能树共建】验证码实操2案例

梦想橡皮擦

6月月更

一文掌握软件安全必备技术 SAST

SEAL安全

网络安全 软件安全 SAST工具 SAST

C#入门系列(十五) -- 枚举

陈言必行

C# 六月月供

Java项目集成activity工作流,快速开发业务审批单据(低代码,敏捷)

金陵老街

敏捷 springboot Activity Vue 3 BPMN

洞见科技当选中国信通院隐私计算联盟「副理事长+政务应用工作组组长」单位

洞见科技

隐私计算

测试基础之:测试覆盖率

甜甜的白桃

软件测试 测试覆盖率 JACOCO 6月月更

InfoQ 极客传媒 15 周年庆征文|你真的了解RPC和REST吗?

No Silver Bullet

Rest RPC框架 构架 6月月更 InfoQ极客传媒15周年庆

远程办公带来的挑战和变化 | 社区征文

编程攻略

初夏征文

数字化转型之数字资产知识库(springboot+es+vue+neo4j)

金陵老街

全文检索 知识图谱 Vue 3 spring-boot

谈谈 JDK 和 SAPMachine 的关系

汪子熙

Java jdk jre SAP 6月月更

影响软件公司开发价格的因素有很多,你知道吗?

开源直播系统源码

软件开发流程 直播系统 app源码 直播源码 定制软件开发

开课报名|「Takin开源特训营」第一期来啦!手把手教你搞定全链路压测!

TakinTalks稳定性社区

开源 全链路压测 生产环境全链路压测 安全生产 稳定性保障

谷歌AI人格觉醒“喜提”热搜,我们找清华大佬聊了聊 AI 对话系统的惊人进展

硬科技星球

人工智能 谷歌 图灵测试

运营商动态路由的神器 :IS-IS 协议

wljslmz

6月月更 路由协议 IS-IS

还不知道npm私服?一篇教会你搭建私服并发布vue3组件库到nexus

Jianmu

ci 前端 npm Vue3 私服

市值严重低估,现金15亿,百世走的路对吗?

科技新知

java编程培训Mybatis的增删改查与获取参数值

@零度

mybatis JAVA开发

开发增效利器—IDEA辅助插件推荐

中原银行

开发 IDEA 插件 中原银行

企业知识管理系统应具备的功能

小炮

JavaScript期约Promise

大熊G

JavaScript 前端 6月月更

【直播回顾】战码先锋第五期:深入理解OpenHarmony系统启动,轻松踏上设备软件开发之旅

OpenHarmony开发者

Open Harmony

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