🔥我们精选的 13 款 Kubernetes 部署和模板工具🚀
TL;DR 🔍
我们期待您的反馈!🫶
Kubernetes 云开发工具包
Kubectl
舵
定制
Flux 版本 2
Argo CD - Kubernetes 的声明式持续交付
蒂莫尼
卡维尔
加入
Terraform
格拉法纳·坦卡
dhall-kubernetes
结论
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
TL;DR 🔍
感觉在 Kubernetes 部署和打包工具的海洋中迷失了方向?别担心!
我们为您准备了一份全面的速查表。深入探索我们精心挑选的列表,了解每个工具的用途和用户友好度评级,让您的 Kubernetes 之旅轻松无忧。
告别不知所措,迎接清晰明了的 Kubernetes 指南!🌐🚀
我们期待您的反馈!🫶
请在下方评论区分享您的想法!告诉我们您希望看到哪些主题的内容。如果本指南对您有所帮助,请点击猫咪图标并点赞,以支持我们创作更多以开发者为中心的内容。您的反馈对我们至关重要!

| 工具 |
许可证 |
GitHub 星标 |
易用性 |
用户界面 |
商业支持 |
模板 |
部署 |
| cdk8s |
Apache 2.0 |
3.9k |
⭐⭐⭐⭐ |
❌ |
✅ |
✅ |
❌ |
| kubectl |
Apache 2.0 |
2.6k |
⭐⭐⭐⭐ |
❌ |
❌ |
❌ |
✅ |
| 玻璃立方体 |
LGPL.v3 |
152 |
⭐⭐⭐⭐ |
✅ |
✅ |
✅ |
✅ |
| 舵 |
Apache 2.0 |
25.3万 |
⭐⭐⭐ |
❌ |
❌ |
✅ |
✅ |
| 定制 |
Apache 2.0 |
10.2k |
⭐⭐⭐⭐ |
❌ |
❌ |
✅ |
✅ |
| 通量 |
Apache 2.0 |
5.5k |
⭐⭐⭐ |
✅ |
✅ |
❌ |
✅ |
| Argo CD |
Apache 2.0 |
14.9k |
⭐⭐⭐⭐ |
✅ |
❌ |
❌ |
✅ |
| 蒂莫尼 |
Apache 2.0 |
981 |
⭐⭐⭐⭐⭐ |
❌ |
❌ |
✅ |
❌ |
| 卡维尔 |
Apache 2.0 |
325 |
⭐⭐⭐ |
❌ |
❌ |
✅ |
❌ |
| 普鲁米 |
Apache 2.0 |
18.4k |
⭐⭐⭐⭐ |
❌ |
✅ |
✅ |
❌ |
| Terraform |
生物标准手语 |
39.8k |
⭐ |
✅ |
✅ |
✅ |
✅ |
| Tanka with Jsonnet |
麻省理工学院 |
2.1k |
⭐⭐ |
❌ |
❌ |
✅ |
❌ |
| 达尔 |
Apache 2.0 |
600 |
⭐⭐⭐ |
❌ |
❌ |
✅ |
❌ |
cdk8s:Kubernetes 与熟悉的编程语言的结合
使用面向对象编程定义 Kubernetes 原生应用和抽象层
Kubernetes 云开发工具包



cdk8s是一个开源软件开发框架,它使用熟悉的编程语言和丰富的面向对象 API 来定义 Kubernetes 应用程序和可重用的抽象层。cdk8s 应用程序会生成标准的 Kubernetes 清单文件,这些清单文件可以应用于任何 Kubernetes 集群。
cdk8s 是一个云原生计算基金会沙箱项目,由 AWS 倾情打造。我们鼓励您试用、留下反馈并积极参与贡献!
内容:
存储库
本项目包含多个软件包,这些软件包通过以下存储库进行维护和发布:
当前代码库充当跨模块问题的伞形代码库,以及部署……
它是什么: Kubernetes 云开发工具包 (cdk8s) 允许您以面向对象的方式编写 Kubernetes 清单/Helm Chart。
您可以轻松扩展现有类、使用接口,并确保无需重复编写代码。
所有代码都将被编译成yaml资源,然后可以轻松部署到您的集群。
优势:对初学者友好,面向对象的 API,与 AWS CDK 集成。
易用性: ⭐⭐⭐⭐
kubectl:Kubernetes 部署的瑞士军刀
Kubectl


该k8s.io/kubectl代码库用于跟踪随 kubectl 命令行工具(kubectl cli)一起分发的相关问题k8s.io/kubernetes。它还包含一些供客户端程序使用的软件包。例如,这些软件包被集成到kubectlk8s.io/kubernetes cli 客户端中供其使用。该客户端最终也会迁移到这里。
贡献要求
-
单元测试完全覆盖。
-
符合 Go 工具规范(例如go get,go test等等)。它需要能够被其他地方供应商接受。
-
不依赖于k8s.io/kubernetes任何外部库。依赖于其他库是可以的。
-
代码必须添加有用的注释,不仅对项目开发人员有用,对这些软件包的外部用户也有用。
-
审核 PR 时,建议您使用 Golang 的代码审查评论页面。
-
本仓库中的软件包应力求实现合理、小巧的接口,并导入有限的依赖项。
社区、讨论、贡献和支持
请参阅此文档,了解如何联系此项目的维护者……
简介:认识一下命令行英雄!kubectl 是 Kubernetes 的官方命令行界面。
它是您应用配置、管理集群以及从终端处理所有 Kubernetes 相关操作的首选工具。您甚至可以
使用kubectl editkubectl 直接编辑和修改资源。(不推荐)
优势:标准化、多功能、对资源的直接控制。
易用性: ⭐⭐⭐⭐
Glasskube:通往 Kubernetes 部署的简易之路

⭐️ 为什么选择 Glasskube?
开启自动驾驶模式,即可在 Kubernetes 上全自动部署和管理开源工具。我们的开源 Glasskube Operator 是管理所有您喜爱的开源工具及其相关基础设施组件(例如数据库、缓存)的最简单快捷的方式,无需手动操作即可保持其最新状态。
✨ 特点
- 👌 安装简便,几乎无需配置
- ✅ 数据库和缓存的自动设置
- 🔄 自动执行并安排版本更新和补丁程序
- 🗓️ 定时数据库备份
- ⚙️ 简易 SMTP 配置界面
目录
🚀 快速入门
Glasskube Operator 可以通过 Helm 轻松部署。要安装此开源工具,只需应用自定义配置即可……
Glasskube是什么: Glasskube 是您了解透明 Kubernetes 部署的窗口。
它预先打包了流行的开源应用程序和组件,并通过自定义资源对其进行抽象。Glasskube
利用 Kubernetes Operator 将组件安装到正确的命名空间,并直接确保应用程序和组件已连接并配置完毕。
优势:用户友好、部署透明、注重简洁性。
易用性: ⭐⭐⭐⭐
Helm:Kubernetes 包管理器
舵

Helm 是一个用于管理 Chart 的工具。Chart 是预配置的 Kubernetes 资源包。
使用 Helm 可以:
- 查找并使用打包成 Helm Charts 的常用软件在 Kubernetes 中运行。
- 将您自己的应用程序以 Helm Chart 的形式共享
- 创建可复现的 Kubernetes 应用程序构建
- 智能管理您的 Kubernetes 清单文件
- 管理 Helm 包的发布
头盔在手篮里
Helm 是一个简化 Kubernetes 应用程序安装和管理的工具。你可以把它想象成 Kubernetes 版的 apt/yum/homebrew。
- Helm 渲染你的模板并与 Kubernetes API 通信
- Helm 可以在你的笔记本电脑、CI/CD 系统或任何你想让它运行的地方运行。
- Chart 是 Helm 包,其中至少包含两项内容:
- 软件包描述(
Chart.yaml)
- 一个或多个模板,其中包含 Kubernetes 清单文件
- 图表可以存储在磁盘上,也可以从远程图表存储库(例如 Debian 或 RedHat 软件包)中获取。
安装
二进制下载…
Helm是什么: Helm是Kubernetes的常用包管理器。
它将复杂的应用程序部署打包成可共享和部署的“图表”,从而简化了应用程序部署。
优势:软件包管理、社区图表、版本控制。
易用性: ⭐⭐⭐
Kustomize:像专业人士一样定制 Kubernetes 配置
定制
kustomize允许您自定义原始的、无模板的 YAML 文件以实现多种用途,同时保持原始 YAML 文件不变,并可直接使用。
kustomize它面向 Kubernetes;它能够理解并修改Kubernetes 风格的API 对象。它类似于 `<script>`标签make,因为它的功能在文件中声明;它也类似于 `<script>` 标签sed,因为它会输出编辑后的文本。
该工具由sig-cli ( KEP )赞助。

kubectl 集成
要查找嵌入在最新版本 kubectl 中的 kustomize 版本,请运行kubectl version:
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2
kubectl v1.14中新增了v2.0.3 版本的 kustomize 构建流程。此后,kubectl 中的 kustomize 流程一直停留在 v2.0.3 版本,直到 kubectl v1.21 版本才更新至 v4.0.5 版本。未来,kustomize 流程将定期更新,相关更新信息将体现在 Kubernetes 版本说明中。
…
Kustomize 是 kubectl 的一部分,它可以帮助您避免重复编写 Kubernetes 清单文件。
您可以在多个 kustomize 项目中复用相同的资源,并通过应用补丁来修改特定值。此外
,您还可以创建可复用的组件,从而更好地组织您的 kustomize 项目。
优势:配置可定制、简单易用、与 GitOps 集成。
易用性: ⭐⭐⭐⭐
Flux:GitOps 实现持续交付的魔法
面向 Kubernetes 的开放且可扩展的持续交付解决方案。基于 GitOps Toolkit 构建。
Flux 版本 2

Flux 是一款用于保持 Kubernetes 集群与配置源(如 Git 存储库和 OCI 工件)同步的工具,并在有新代码要部署时自动更新配置。
Flux 版本 2 (v2) 从底层开始构建,旨在利用 Kubernetes 的 API 扩展系统,并与 Prometheus 和 Kubernetes 生态系统的其他核心组件集成。在版本 2 中,Flux 支持多租户,并支持同步任意数量的 Git 仓库,以及其他一些用户期待已久的功能。
Flux v2 是使用GitOps Toolkit构建的,GitOps Toolkit 是一套可组合的 API 和专门用于在 Kubernetes 之上构建持续交付的工具。
Flux 是一个云原生计算基金会 ( CNCF ) 的毕业项目,已被各种组织和云提供商投入生产使用。
快速入门和文档
首先,请查看这篇关于如何在 Kubernetes 上引导 Flux 并进行部署的指南……
Flux 是一个完整的 Kubernetes 持续交付 (CD) 解决方案。它将
Kubernetes 集群与存储在 Git 仓库中的 Manifest 文件同步。
它还包含用于自定义配置和 Helm 仓库的控制器,这些控制器通过将 Helm 打包到 Helm Controller 中来与 Kubernetes API 交互。
此外,Weaveworks 还提供用户界面和商业支持。
优势: GitOps、自动化同步、持续交付。
易用性: ⭐⭐⭐
Argo CD:GitOps 的大师
Argo CD是什么: Argo CD 是 Flux 的替代方案,它更注重用户界面,用于将清单文件同步到集群。
它也遵循声明式方法,清单文件应存储在 Git 仓库中。
优势: GitOps、持续交付、声明式配置。
易用性: ⭐⭐⭐⭐
Timoni:Kubernetes 部署的简洁性
Timoni 是一个 Kubernetes 包管理器,由 CUE 提供支持,并受到 Helm 的启发。
蒂莫尼

Timoni是一个基于CUE的 Kubernetes 包管理器,其设计灵感来源于Helm。
Timoni 项目致力于改善 Kubernetes 配置的编写用户体验。与 Helm 将 Go 模板与 YAML 混合使用,或 Kustomize 将 YAML 层层叠加不同,Timoni 依靠 cuelang 的类型安全、代码生成和数据验证功能,为创建、打包和交付应用程序到 Kubernetes 提供更好的体验。
重要的
请注意,Timoni 目前仍在积极开发中,仍处于早期阶段。其 API 和命令行界面可能会发生不兼容的更改。
开始使用
要开始使用 Timoni,请访问timoni.sh上的文档网站。
概念
- 模块- 包含 Kubernetes CUE 模板和配置模式的应用程序定义,以 OCI 工件的形式分发。
- 实例- 引用部署在 Kubernetes 集群上的模块和工作负载的应用程序实例化。
- 捆绑包- 将多个模块捆绑在一起的应用程序组合……
Timoni 是什么: Timoni 是 Helm 的替代方案。
它使用“bundle”命名法来打包应用程序。它还旨在管理应用程序及其 CRD 的生命周期。
它使用 CUE 数据验证语言。
优势:用户友好、部署流程简化、学习曲线平缓。
易用性: ⭐⭐⭐⭐⭐
Carvel:Kubernetes 配置的瑞士军刀
Carvel 提供了一套可靠、用途明确且可组合的工具,可帮助您构建、配置应用程序并将其部署到 Kubernetes。此仓库包含有关 Carvel 开源社区的信息。


卡维尔
Carvel 提供了一套可靠的、单一用途的、可组合的工具,可帮助您构建应用程序、配置应用程序并将其部署到 Kubernetes。
这是与Carvel项目相关的代码仓库列表。
- ytt - 通过 YAML 结构(而非文本文件)进行 Kubernetes 配置模板和覆盖。
- kapp - 将多个 Kubernetes 资源作为一个“应用程序”进行安装、升级和删除
- kbld - 以不可变的方式在 Kubernetes 配置中构建或引用容器镜像
- imgpkg - 通过 Docker 镜像仓库打包和迁移应用程序配置(包含镜像)。
- kapp-controller - 在 App CRD 中捕获应用程序部署工作流。由 kapp 提供支持的可靠 GitOps 体验。
- vendir - 以声明方式指定目录中应包含哪些文件。
- secretgen-controller - 提供 CRD 来指定集群上需要哪些密钥(生成或不生成)。
实验性的:
安装:
插件:
例如:
查看我们待办事项清单中的计划。
加入
…
Carvel是什么: Carvel 是一套用于管理 Kubernetes 配置的一体化工具包。它提供了一系列工具,包括ytt模板工具和kapp应用程序部署工具。
您可以把它想象成一把瑞士军刀,用来微调您的 Kubernetes 设置。
优势:全面的工具包、强大的模板功能、配置管理。
易用性: ⭐⭐⭐⭐
Pulumi:用少量代码实现 Kubernetes 部署
Pulumi 是什么: Pulumi 为 Kubernetes 部署带来了一种独特的变革,它允许您使用自己喜欢的编程语言将基础设施定义为代码。
它可以作为 cdk8s 的替代方案。
优势:基础设施即代码、多语言支持、易于集成。
易用性: ⭐⭐⭐⭐
Terraform:面向 Kubernetes 的基础设施即代码
Terraform 使您能够安全、可预测地创建、更改和改进基础设施。它是一个源代码可用的工具,可以将 API 编码成声明式的配置文件,这些文件可以在团队成员之间共享,并像代码一样进行编辑、审查和版本控制。
Terraform

Terraform 是一款用于安全高效地构建、变更和版本控制基础设施的工具。Terraform 可以管理现有的常用服务提供商以及定制的内部解决方案。
Terraform 的主要特性包括:
-
基础设施即代码:基础设施使用高级配置语法进行描述。这使得数据中心的蓝图可以进行版本控制,并像其他任何代码一样进行管理。此外,基础设施还可以共享和重用。
-
执行计划:Terraform 有一个“规划”步骤,用于生成执行计划。执行计划展示了调用 apply 方法后 Terraform 将执行的操作。这可以避免 Terraform 在操作基础设施时出现任何意外情况。
-
资源图:Terraform 会构建一个包含所有资源的图,并并行化创建和修改任何非依赖资源。因此,Terraform 构建……
Terraform是什么: Terraform 是基础设施即代码领域的资深工具。
它将强大的功能扩展到了 Kubernetes,提供了一种声明式的基础设施管理方式。
如果您熟悉 HashiCorp 的模板语言,hcl那么 Terraform 可以作为 kustomize 的一个有效替代方案。
优势:基础设施即代码、强大的生态系统、广泛采用。
易用性: ⭐
Grafana Tanka 与 Jsonnet:Kubernetes 配置的模板魔法
Grafana Tanka是什么:它是 kustomize 的另一种替代方案,它使用 Jsonnet 模板来创建更强大、更可扩展的 Kubernetes 清单库。
优势:模板化、可靠性、动态配置。
易用性: ⭐⭐
Dhall:Kubernetes 配置中的功能纯粹性
使用 Dhall 进行类型检查、模板化和模块化您的 Kubernetes 定义
dhall-kubernetes

dhall-kubernetes包含Kubernetes的Dhall绑定,因此您可以从 Dhall 表达式生成 Kubernetes 对象定义。这将使您可以轻松地对 Kubernetes 定义进行类型检查、模板化和模块化。
我为什么需要这个
一旦你搭建了一个稍微复杂一些的 Kubernetes 环境,其中包含许多对象,你就会遇到以下几个问题:
- 用 YAML 编写定义非常冗长,真正重要的内容反而不太显眼。
- 我有一堆需要一起配置的对象,我该如何共享数据?
- 我想在不同的环境中重复使用同一个对象,但我无法使其参数化。
- 总的来说,我非常希望能在其他定义中重用某些定义中的部分内容。
- 糟糕,我输错了一个键,只能等到推送到集群后才收到错误提示 :(
人们自然而然地会倾向于使用模板语言……
Dhall 是什么: Dhall 将函数式编程的优势引入 Kubernetes 配置,作为 kustomize 和 tanka 以及 jsonnet 的替代方案。
它提供了一种声明式语言,既易于阅读又类型安全。
优势:函数式编程、类型安全、人类可读的语法。
易用性: ⭐⭐⭐
结论
总之,Kubernetes 部署领域无疑浩瀚无垠,但有了我们这份全面的速查表,您就能像经验丰富的探险家一样轻松驾驭。
从 cdk8s 的简洁易用,到 Pulumi 的编码魔法,再到 Carvel 的瑞士军刀般的精妙功能、Jsonnet 的模板魔法,以及 Dhall 的函数式纯粹,每款工具都为您在 Kubernetes 领域开辟了一条独特的道路。
以用户友好度评级为指南针,自信地开启您的部署之旅吧!
告别不知所措,迎接清晰明了——您已准备好征服 Kubernetes 世界!🚀🌐✨

文章来源:https://dev.to/glasskube/our-top-13-deployment-templated-tools-for-kubernetes-4mei