2024 年:Kubernetes 包管理的新前沿
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,
15年
工作经验,精通Java编程
,高并发设计
,Springboot和微服务
,熟悉Linux
,ESXI虚拟化
以及云原生Docker和K8s
,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea
2024 年对 Glasskube 来说是充满活力的一年。2 月,我们推出了一个 Kubernetes 管理器,它最初是由我们的团队在产品发布失败后内部开发的,部分原因是当前使用的包管理工具的限制。在这次不冷不热的 Kubernetes 操作员首次亮相后,Glasskube 创始人 Philip 和 Louis 在 Hacker News 上分享了他们的发布事后分析。他们发现,许多其他人对现有的 Kubernetes 包管理解决方案也遇到了类似的挫折。认识到这一共同的痛苦,产品转型变得不可避免,Glasskube 包管理器开始形成。
现在,才同年 8 月中旬,我们已经接近 150 万次下载、2.6k 个 GitHub 星和 50+ 贡献者。我们见证了采用、功能和用例的显著增长。随着我们的不断发展,我们想花点时间回顾一下我们迄今为止完成的工作。这篇博文是一次全面的更新,是一面旗帜,旨在分享您需要了解的有关 Glasskube 当前状态、即将发生的事情以及您如何帮助塑造 Kubernetes 包管理的未来的所有信息。
欢迎来到 Kubernetes 包管理的新前沿。
介绍
为什么 Kubernetes 需要更好的包管理
自诞生以来,Kubernetes 作为容器编排系统从未停止过普及,其采用率不断提高。近年来,可用软件包的数量已从大约 100 个增加到 800 多个。这种增长无论如何都非常令人印象深刻,显示了 Kubernetes 生态系统的成熟度,但它也揭示了当前包管理工具的问题。开发人员经常在以下方面苦苦挣扎:
-
复杂且高度定制的工作流程
-
耗时且多次手动流程
-
过度依赖当前的包管理器工具,这还有很多不足之处。
这些问题可能导致:
-
运营团队的更多工作
-
不可扩展的工作流程
-
可能的安全风险
很明显,Kubernetes 需要一种方法来管理以现代 Kubernetes 集群使用方式发展的软件包,即以更加自动化和整体声明的方式。
什么是 Glasskube?
Glasskube 是为 Kubernetes 打造的开源包管理器。它旨在使安装、更新和设置包更容易、更快捷。事实上,它可以比 Helm 或 Kustomize 等工具快 20 倍。
Glasskube 从易于使用的包管理器(如 和 )中汲取了灵感。它提供两种管理包的方法:Homebrew
npm
图形用户界面 (GUI)
命令行界面 (CLI)
glasskube serve # to access the Glasskube UI
当前工具:Helm 和 Kustomize
Helm 和 Kustomize 是管理 Kubernetes 包的两个主要工具。它们有助于在 Kubernetes 中设置和运行应用程序,但工作方式不同。
Helm 使用模板创建 Kubernetes yaml 文件。它将应用程序打包到 “图表” 中,这些图表是 YAML 文件的集合。它的一些好处是:
-
配置复杂应用程序
-
它在应用程序安装方面大放异彩
-
回滚更改非常简单
-
它被广泛采用
Kustomize 采用不同的方法,并且多次与 Helm 结合使用。它允许用户:
-
设置基本应用程序配置
-
为不同环境添加更改
-
避免复杂的模板
现有工具的问题
虽然 Helm 和 Kustomize 很有用,但它们可能会给开发人员带来问题。
Helm 可能很棘手:
-
由于模板复杂,难以学习
-
针对不同的设置自定义应用程序可能会令人困惑
-
无法更新 CRD
-
更新很笨拙
-
Helm 本质上是片面的,安装后它的工作就完成了。
Kustomize 有它自己的问题:
-
没有内置的方法来管理包
-
用户需要其他工具来共享其设置
-
处理复杂的依赖关系可能很困难
-
在管理应用程序生命周期方面的自动化程度低于 Helm
这些问题说明了为什么需要一个更简单的 Kubernetes 包管理器。这就是 Glasskube 的用武之地,旨在让整个过程更轻松。
Glasskube 解释
Glasskube 的工作原理
Glasskube 使管理 Kubernetes 软件包变得更加容易。它提供了两种使用方法:
-
图形界面 (GUI)
-
命令行界面 (CLI)
Glasskube 使用一个名为 Glasskub Hub 的中央软件包存储库,它可以:
-
了解包依赖项
-
与 GitOps 配合良好
-
自动更新包
-
允许引用多个公共和私有软件包存储库
可能最重要的是,Glasskube 具有客户端和服务器端组件。服务器端组件会持续跟踪已安装软件包的运行状况和所需状态。服务器端组件包括:
-
PackageController:与 Kubernetes API 通信以部署和协调包。
-
PackageInfoController:从配置的后端包存储库中读取包清单,以确定集群包的真实状态。
主要特点
Glasskube 有几个关键功能:
解决常见问题
Glasskube 直接解决了其他 Kubernetes 包管理器存在的差距:
-
它比 Helm 更易于使用,而 Helm 对新用户来说可能很难
-
它比 Kustomize 更好地处理依赖项,Kustomize 没有内置的包管理
-
它与 GitOps 配合得很好,可以更轻松地:
- 回滚更改
- 升级应用
- 团队合作
-
包范围有助于提高包安装和包共享的效率。例如,如果多个包都依赖于 cert-manager,则一个实例足以为多个包提供服务。
-
轻松访问带有前端的软件包,而无需手动前移
如何设置 Glasskube
您需要安装的内容
在开始之前,请确保您已:
-
作为一个有效的 Kubernetes 集群,minikube 是快速本地设置的简单选择。
-
kubectl 安装在您的计算机上
分步安装指南
以下是设置 Glasskube 的方法:
安装 Glasskube CLI:打开终端并在 macOS 上运行:
brew install glasskube/tap/glasskube
有关其他安装方法,请单击此处。
通过运行以下命令引导 Glasskube 以安装服务器端组件:
glasskube bootstrap
检查安装跑:
glasskube version
确保 Glasskube 和 package-operator 都已安装并运行相同的版本:
glasskube: v0.17.0
package-operator: v0.17.0
使用 Glasskube:主要功能
访问 GUI
Glasskube 可以轻松地在 Kubernetes 集群中添加和删除软件包:
要添加包:
glasskube serve
安装软件包
Glasskube Hub 中可用的任何软件包都已准备好安装
glasskube install <package-name>
然后,此命令将在安装之前请求确认软件包版本。
要删除包:
glasskube uninstall
管理包依赖项
Glasskube 会为你处理包依赖项:
-
安装包时,它会自动安装任何必需的依赖项
-
这样可以节省时间并防止因缺少组件而出错
在下面的示例中,在安装软件包时,如果集群中尚不存在 cert-manager 实例,则还会安装该实例。
keptn
处理包配置
您可以使用 Glasskube 轻松更改或查看包设置,请注意,并非所有包都有自定义值配置:
在下面的示例中,caddy-ingress-controller 具有 exposed 值,您可以在其中添加电子邮件地址以启用 HTTPS 功能。automaticHTTPS
使用 GitOps
Glasskube 在 GitOps 工作流中运行良好,允许用户在 Git 中控制其 Kubernetes 包的所需状态意味着:
-
您的 Kubernetes 包设置与存储在 Git 中的文件保持同步
-
您可以使用 ArgoCD 或 Flux 等工具来应用存储在 Git 中的所需包状态
-
更改易于跟踪,并在需要时撤消
-
集群设置可以在几分钟内完成,而不是几小时。
我们这里有一个完全可操作的 Glasskube GitOps 模板。按照 README.md 文件中的步骤开始操作。
使用 Renovate 自动更新
Glasskube 将 Glasskube Hub 中的软件包始终更新到最新的稳定版本:
-
启用新版本或在新版本可用时收到通知
auto-updates
-
显示包信息,包括包的当前版本和使用
glasskube list
-
运行 将安装包的最新可用版本
glasskube update <packageName>
-
此外,通过 GUI 手动更新也是一个选项。
添加自定义软件包存储库
您现在可以添加多个软件包存储库供 Glasskube 读取,这对于以下应用非常有用:
-
拥有自己的私有包列表的公司
-
希望更轻松地管理内部包的团队
-
它允许对无法公开的私有包遵循合规性规则
通过运行以下命令添加公共仓库:
glasskube repo add <name> <url>
添加私有仓库
glasskube repo add <name> <url> --auth (none|basic|bearer)
Glasskube 与其他包管理器
它与 Helm 和 Kustomize 的区别
Glasskube 提供了一种管理 Kubernetes 软件包的新方法,解决了 Helm 和 Kustomize 等旧工具中的限制。它提供的功能包括包和包管理器之间的双向通信、增强的自动化以及更具声明性的包管理方法。以下是 Glasskube 的突出之处:
-
自动通知:Glasskube 会跟踪已安装的版本,并在需要时自动通知用户新的安装。
-
无缝 CRD 更新:它可以顺利更新自定义资源定义 (CRD),确保所有内容保持同步。
-
完整的 GitOps 集成:Glasskube 支持完整的 GitOps 工作流,这在以前是不可能的。
-
高效控制:通过包范围的附加抽象层允许对包配置和使用进行更高效、更精细的控制。
商业服务产品
提供具有自托管选项的商业工具的公司通常会把钱留在桌面上。自定义自托管安装和管理可能不在您公司的专业知识或带宽范围内。Glasskube Native 软件包可能是您需要的解决方案。我们可以与您合作,为各种自托管环境创建标准化、可定制且高度可扩展的软件包,所有这些都使用 Glasskube 打包。这种方法可确保为您的客户提供无缝体验,同时最大限度地提高您的收入潜力。
如果您认为 Glasskube Native 软件包对您的业务有益,请与我们预约免费的演示电话。我们的团队很乐意为您提供帮助。
Glasskube 的下一步
新功能即将推出
Glasskube 正在添加新工具以简化包管理:
这些新功能将帮助用户更好地管理他们的 Kubernetes 包。
结束语
Kubernetes 软件包管理一直停滞不前,无法跟上通用 Kubernetes 生态系统的快速增长和发展。Glasskube 旨在使 Kubernetes 包管理更容易、更具声明性、灵活性,并且大大减少对需要多种工具才能完成工作的僵化模板流程的依赖。
随着 Glasskube 的发展,我们将需要用户和开发人员的帮助,以便朝着正确的方向进行构建。当前的 Kubernetes 包管理器最让您感到沮丧的是什么?我们如何改进?
对于使用 Kubernetes 的团队,我们希望像 Glasskube 这样的工具能越来越多地被采用和应用于复杂的环境。