随着 DevOps 的成熟,在其概念和思维方式的指导下也衍生出了 DevSecOps、AIOps、SecOps、GitOps 等开发模型。GitOps 是其中的一个,该模型旨在使开发人员能够使用 git 创建 CI/CD 流程来自动化多云和多容器编排集群的开发和运营。
在 GitOps 开发流程中,包管理是持续交付过程中的重要环节。
Carvel 项目是由 VMWare 开源的一套云原生开发工具集,提供了一套遵循 Unix 哲学的工具来帮助开发者将应用构建和部署到 Kubernetes 集群。每个工具只做一件事情,可自由组合,这些工具包括:
ytt:通过YAML结构而不是文本文档为Kubernetes配置生成模板和覆盖
kapp:将多个 Kubernetes 资源当做一个“应用”一样进行管理,比如安装、升级和删除等操作
kbld:以不可变的方式在 Kubernetes 配置中构建或引用容器镜像
imgpkg:通过 Docker 镜像仓库来打包和迁移应用程序的容器镜像及其配置文件
kapp-controller:符合 GitOps 理念的包管理器,实现 K8s 应用程序与包的持续交付
vendir:声明性地说明目录中应该包含哪些文件
其中,kapp-controller 是一个轻量级、声明式的包管理器,专注于部署过程,并且可以与 ytt、kustomize、helm template 等工具配合使用,负责在 Kubernetes 集群中安装和管理软件的生命周期,用户无需了解其内部实现细节。
kapp-controller 利用了包和包存储库的概念。在高层次上,包是版本化的元数据,它通知 kapp-controller 如何获取、模板化和安装底层软件内容。这些内容通常由配置和容器镜像组成,它们被捆绑在一起并存储在某个位置,比如 OCI 镜像仓库、git repo、http 服务器等,而 kapp-controller 可以自动处理安装和管理这些内容细节。
一旦作者创建了许多包的集合,就可以使用包存储库来捆绑它们并通过 OCI 镜像仓库分发它们。这允许消费者发现包的集合,并快速地将它们提供在他们的集群上以供安装。从这里,用户可以选择他们想要安装的软件包,kapp-controller 将安装它们并保持版本更新。
总而言之,kapp-controller 的声明式 API 和分层方法能够帮助开发者构建、部署和管理自己的应用程序。它还有助于将开发好的软件打包成易于分发的软件包,并使用户能够在 Kubernetes 集群上发现、配置和安装这些软件包。
若想了解更多 Carvel 项目信息以及 Kubernetes 技术发展趋势,敬请关注 12 月 9 日 - 10 日举办的 KubeCon + CloudNativeCon + Open Source Summit China 2021 线上虚拟大会。VMWare 是本届大会的黄金赞助商,对本次活动提供了大力的支持。届时还将有来自 VMWare 的云原生技术专家为大家带来精彩的技术分享:
议题简介:等等,您在 Kubernetes 上运行打包的应用程序,但您还在从命令行更新它们?这似乎不对,不是吗?
今天,我们可以取代传统的“命令式”包管理方法,使用 Kubernetes 来确保打包的应用程序以我们需要的方式自动更新。想要使用一个软件包的最新版本,但总是自动地为另一个软件包选择补丁版本吗?想要利用 GitOps 来管理应用程序更新吗?是的,您可以使用轻量级、易于使用的 Kubernetes 工具。而这仅仅是开始,加入我们一起看看 Carvel 项目团队如何重新构想 Kubernetes 的软件包管理,为您带来一种现代的、“声明式”的方式对打包的应用程序及其依赖进行端到端的自动化生命周期管理。
KubeCon + CloudNativeCon + Open Source Summit China 2021 由云原生计算基金会 CNCF 主办。作为云原生领域的顶级技术盛会,历年的 KubeCon + CloudNativeCon + Open Source Summit China 都汇聚了国内外最活跃的开源云原生社区、最先进的技术代表与行业的最佳落地实践,推动云原生计算领域的知识更新和技术进步。本届大会的议程安排已全面上线,更多详情请查看大会官网。
|