产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

评论

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

ZK 从入门到放弃 入门篇

小隐乐乐

Apache下error.log文件太大的处理方法

一直AC一直爽

week7 学习总结

Geek_2e7dd7

可读代码编写炸鸡九 - 抽取子问题

多选参数

编程 代码 代码优化 代码规范 可读代码

我有一个梦想

一直AC一直爽

随笔杂谈 梦想

HashiCorp官宣:禁止国内使用其旗下Consul等开源软件?

xcbeyond

Consul 条款

week7 作业

Geek_2e7dd7

剪刀爱情

一直AC一直爽

电影

手把手教你写数独计算器(1)

一直AC一直爽

c++ 算法 数独

架构师是怎样炼成的 7-1 性能测试与优化

闷骚程序员

排序笔记

烫烫烫个喵啊

算法 排序

公开课 | 吉祥人寿从0到1的 Jira 落地实践

Atlassian

敏捷开发 研发管理 Jira

布隆过滤器是个啥!

诸葛小猿

布隆过滤器 bloomfilter bloom filter

性能测试

陈皮

寻找感动的养分

一直AC一直爽

感恩 随笔杂谈 感动

Mysql错误:Ignoring query to other database解决方法

一直AC一直爽

MySQL

redis系列之——缓存穿透、缓存击穿、缓存雪崩

诸葛小猿

redis 缓存穿透 缓存击穿 缓存雪崩

最短路径问题(无负边值)——Dijkstra算法

烫烫烫个喵啊

算法 prim 最短路径

架构师训练营 -- 第七周作业

stardust20

技术面试官应该怎么问?面试者应该怎么答?

xcbeyond

面试 自我介绍

总结:PHP值得注意的几个问题

一直AC一直爽

php

我向面试官讲解了单例模式,他对我竖起了大拇指

苹果看辽宁体育

设计模式 单例模式

思维模型盲区:所知障和从众效应

石云升

思维模型 倾听 从众效应

Redis(二)单机版安装

奈何花开

Java redis

Elasticsearch源码解析:环境搭建

Jackey

elasticsearch

广义表的实现!

烫烫烫个喵啊

算法 广义表

第七周总结

andy

极客大学

百度CTO王海峰对话王辰院士:全球“最强大脑”助力大数据抗疫时代来临

脑极体

轻松应对并发问题,简易的火车票售票系统,Newbe.Claptrap 框架用例,第一步 —— 业务分析

newbe36524

容器 微服务 架构设计 .net core ASP.NET Core

爸爸,我想握住你的手

一直AC一直爽

随笔杂谈 父爱

读《我的大学,我的苦难》有感

一直AC一直爽

随笔杂谈 读后感

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