写点什么

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

评论

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

Elasticsearch聚合学习之二:区间聚合

程序员欣宸

elasticsearch 9月月更

政务服务平台建设的难点怎样解决

Geek_99967b

小程序 小程序容器

研发效能之环境管理

laofo

DevOps cicd 研发效能 持续集成 持续交付

聚簇索引与覆盖索引

急需上岸的小谢

9月月更

ABAP Netweaver 和 ABAP Platform 这两个名词的辨析

汪子熙

SAP abap Netweaver 思爱普 9月月更

低代码探索:Java模板引擎技术

程序员架构进阶

低代码 9月日更 模板引擎 技术探索

Java进阶(十八)Java实现定时器(Timer)

No Silver Bullet

Java 定时器 9月月更

Nacos 和 Apollo中的 长轮询 定时机制,太好用了

Java快了!

Nacos 和 Apollo中的

【云原生】Kubernetes编排工具精讲

陈橘又青

云原生 9月月更

编排流程/规则,编排本身也需要很深的逻辑思考!

waitmoon

规则引擎使用 规则引擎 流程引擎 可视化开发

[Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率

HullQin

Go golang 后端 websocket 9月月更

双“简”合璧:极简 Kubernetes 上使用极简服务网格

Flomesh

Service Mesh 服务网格

基于 iframe 的微前端框架 —— 擎天

vivo互联网技术

前端框架 微前端 项目管理工具 iframe

三个案例,带你体验SQL的神奇特性

华为云开发者联盟

数据库 后端 sql 企业号九月金秋榜

一站式数字藏品收款系统开发解决方案

开源直播系统源码

NFT 元宇宙 数字藏品 数字藏品系统

JavaScript 这几个“神(qi)奇(pa)“设计也是醉了......

掘金安东尼

JavaScript 前端 9月月更

Java虚拟机之垃圾收集算法

派大星

9月月更

活动回顾 | 基于英特尔技术的端到端音视频优化

网易云信

音视频技术

【火热招募】一文看懂华为云IoT Edge边缘计算开发者大赛技术亮点

华为云开发者联盟

IoT 边缘计算 华为云 企业号九月金秋榜

倒计时 1 天|洞察数字化转型新机遇,共论云上数据分析新观点

Kyligence

数据分析 指标管理

移动App开发的痛点怎样解决

Geek_99967b

小程序

不止于《幻塔》,云底座护航完美世界迎接行业新时代

阿里云弹性计算

游戏 ECS

亿铸科技聚焦国产存算一体AI大算力芯片,28纳米工艺实现10倍能效比

硬科技星球

数据治理(十六):Ranger管理HDFS安全

Lansonli

数据治理 9月月更

Qt|图片旋转缩放操作

中国好公民st

c++ qt 9月月更

Ansible如何使用Filter插件转换数据

山河已无恙

9月月更

Java 8 的异步利器:CompletableFuture源码解析(建议精读)

Java快了!

java;

数据脱敏前沿实践分享,筑造数据安全边界 | 极客星球

MobTech袤博科技

加密 数据安全

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