使用 Kustomize 帮你管理 kubernetes 应用(一):什么是 Kustomize ?

简介: 本篇为系列文章第一篇,介绍我对 Kustomize 的了解过程以及 Kustomize 是什么,为什么它能解决我的燃眉之急。

初识 Kustomize

第一次听说 Kustomize 其实是在 kubernetes 1.14 发布时候,它被集成到 kubectl 中,成为了一个子命令,但也只是扫了一眼,并没有深究。真正让我注意到它,并主动开始了解其功能和使用方法的,是张磊大神在云栖社区发表的一篇文章《从Kubernetes 1.14 发布,看技术社区演进方向》,他在文中是这么说的:

Kustomize 允许用户以一个应用描述文件 (YAML 文件)为基础(Base YAML),然后通过 Overlay 的方式生成最终部署应用所需的描述文件,而不是像 Helm 那样只提供应用描述文件模板,然后通过字符替换(Templating)的方式来进行定制化。

这不正我在苦苦寻找的东西嘛!自从公司确定了应用容器化的方案,至今已有半年多了,这期间我们的服务一个接一个的实现了容器化,部署到了 kubernetes 集群中。kubernetes 集群也有原先了1个测试集群,几个节点,发展到了如今的多个集群,几十个节点。而在推进容器化的过程中,每个服务都对对应多个应用描述文件( YAML 文件),而根据环境的不同,又配置了多套的应用描述文件。随着服务越部越多,应用描述文件更是呈爆炸式的增长。

感谢 devops 文化,它是我不需要为每个应用去写 YAML 文件,各个应用的开发组承担了这一工作,我只需要为他们提供基础模板即可。但应用上线后出现的 OOM 、服务无法拉起等 YAML 文件配置有误导致的问题接踵而至,使得我必须要深入各个服务,为他们配置符合他们配置。虽然也使用了 helm ,但是其只提供应用描述文件模板,在不同环境拉起一整套服务会节省很多时间,而像我们这种在指定环境快速迭代的服务,并不会减少很多时间。针对这种情况,我已经计划要自己开发一套更符合我们工作这种场景的应用管理服务,集成在我们自己的 devops 平台中。

这时 Kustomize 出现了,我明锐的感觉到 Kustomize 可能就是解决我现阶段问题的一剂良药。

什么是 Kustomize ?

Kubernetes native configuration management

Kustomize introduces a template-free way to customize application configuration that simplifies the use of off-the-shelf applications. Now, built into kubectl as apply -k.

kustomize 允许用户以一个应用描述文件 (YAML 文件)为基础(Base YAML),然后通过 Overlay 的方式生成最终部署应用所需的描述文件。而其他用户可以完全不受影响的使用任何一个 Base YAML 或者任何一层生成出来的 YAML 。这使得每一个用户都可以通过类似fork/modify/rebase 这样 Git 风格的流程来管理海量的应用描述文件。这种 PATCH 的思想跟 Docker 镜像是非常相似的,它可以规避“字符替换”对应用描述文件的入侵,也不需要用户学习额外的 DSL 语法(比如 Lua)。

而其成为 kubectl 子命令则代表这 kubectl 本身的插件机制的成熟,未来可能有更多的工具命令集成到 kubectl 中。拿张磊大神的这张图不难看出,在 kubernetes 原生应用管理系统中,应用描述文件在整个应用管理体系中占据核心位置,通过应用描述文件可以组合和编排多种 kubernetes API 资源,kubernetes 通过控制器来保证集群中的资源与应用状态与描述文件完全一致。

Kustomize 不像 Helm 那样需要一整套独立的体系来完成管理应用,而是完全采用 kubernetes 的设计理念来完成管理应用的目的。同时使用起来也更加的得心应手。

参考

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
8月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
8月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
548 274
|
11月前
|
存储 Kubernetes 持续交付
介绍一下Kubernetes的应用场景
【10月更文挑战第18天】介绍一下Kubernetes的应用场景。
716 3
|
7月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
190 2
|
6月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
140 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
7月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
114 1
|
7月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
8月前
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
10月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
503 60
|
7月前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。

推荐镜像

更多