使用 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 的设计理念来完成管理应用的目的。同时使用起来也更加的得心应手。

参考

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
19天前
|
Kubernetes 监控 数据安全/隐私保护
K8s好看的管理页面Rancher管理K8S
K8s好看的管理页面Rancher管理K8S
35 4
|
2月前
|
存储 运维 Kubernetes
批处理及有状态等应用类型在 K8S 上应该如何配置?
批处理及有状态等应用类型在 K8S 上应该如何配置?
|
2月前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
现在,你已经成功在Kubernetes集群上部署了Nginx应用。通过访问Service的外部IP地址,你可以访问Nginx服务。
41 4
|
2月前
|
存储 Kubernetes 监控
Kubecost | Kubernetes 开支监控和管理 🤑🤑🤑
Kubecost | Kubernetes 开支监控和管理 🤑🤑🤑
|
7天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
11 4
|
8天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
17 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
19天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
14 0
|
30天前
|
边缘计算 Kubernetes 负载均衡
容器编排技术在云计算中的应用
随着云计算技术的飞速发展,容器编排技术作为一种重要的部署和管理工具,正在逐渐成为云计算领域的热门话题。本文将介绍容器编排技术在云计算中的应用,探讨其在提高应用程序部署效率、资源利用率以及系统可靠性方面的优势,并分析其未来发展趋势。
|
1月前
|
Kubernetes Cloud Native Devops
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
50 1
|
1月前
|
人工智能 自然语言处理 Kubernetes
LLM 技术图谱(LLM Tech Map)& Kubernetes (K8s) 与AIGC的结合应用
LLM 技术图谱(LLM Tech Map)& Kubernetes (K8s) 与AIGC的结合应用
61 0