SREWorks云原生数智运维工程实践-Kubernetes资源编排之三:Kustomize篇(上)

本文涉及的产品
资源编排,不限时长
简介: SREWorks云原生数智运维工程实践-

 

作者:艄公杨京华)、雪尧郭耀星

 

这是我们的《Kubernetes资源编排系列》的第三篇——Kustomize篇,在上篇《Kubernetes资源编排系列之二Helm篇》中,我们见识到了Helm强大的管理能力,但是Helm对于服务的定制仅限于预置变量,那么如果需要更多更灵活的YAML定制,有什么办法吗?于是本篇我们来介绍一下Kustomize。

 

一、 Kustomize是什么

 

Kustomize是一套采用合并思想,对Kubernetes原生配置进行管理的工具,使用无模板的方案定义应用配置。允许用户使用一系列的描述文件为基础,然后通过overlay的方式生成最终部署应用所需的描述文件。

 

Kustomize通过Base&Overlays方式维护不同环境的应用配置,在Overlay中描述差异来实现资源复用,管理的是Kubernetes原生YAML文件,不需要学习额外的DSL语法。

 

二、 Kustomize是怎么做的

 

Kustomize的文件结构如下:

 

 

app

├── base

│   ├── deployment.yaml

│   ├── service.yaml

│   └── kustomization.yaml

└── overlays

    ├── production

    │   └── kustomization.yaml

    ├── staging

    │   └── kustomization.yaml

    └── production-large

        └── kustomization.yam

 

 

app/base/kustomization.yaml声明资源及要应用于它们的一些自定义,如添加一个通用的标签,其内容如下。kustomization还提供了namePrefix、commonAnnoations、images等配置项。

 

 

commonLabels:

  name: app

resources:

- deployment.yaml

- service.yaml

 

 

可以通过kustomize build命令来看完整的配置,build出来的每个资源对象上都会存在通用的标签name:app。

 

 

kustomize build app/base  # 构建

kustomize build app/base | kubectl apply -f -  # 构建并部署

kubectl apply -k app/base # 1.14及更新的版本可以使用该命令直接部署

 

 

app/overlays/staging/kustomization.yaml中可以为演示环境定义不同的名称前辍、标签,通过patch的方案将副本数设置为1

 

 

bases:

- ../../base

commonLabels:

  env: staging

namePrefix: staging-

patches:

  - target:

      kind: Deployment

      name: app

    patch: |

      [

        {"op":"replace","path":"/spec/replicas","value":1}

      ]

 

 

app/overlays/production/kustomization.yaml中可以为生产环境定义不同的名称前辍、标签,通过patch的方案将副本数设置为2

 

 

bases:

- ../../base

commonLabels:

  env: production

namePrefix: production-

patches:

  - target:

      kind: Deployment

      name: app

    patch: |

      [

        {"op":"replace","path":"/spec/replicas","value":2}

      ]

 

 

app/overlays/production-large/kustomization.yaml中可以继承生产环境的定义,同时将副本数设置为10支撑大规模场景需求。

 

 

bases:

- ../production

patches:

  - target:

      kind: Deployment

      name: app

    patch: |

      [

        {"op":"replace","path":"/spec/replicas","value":10}

      ]

 

 

通过不同的部署路径,指定不同的环境部署

 

 

kustomize build app/overlays/production | kubectl apply -f -

kustomize build app/overlays/staging | kubectl apply -f -

kustomize build app/overlays/production-large | kubectl apply -f –

 

 

通过上面的例子我们可以看出,通过kustomization.yaml来声明继承和patch,可以为各种场景构造不同的YAML输出,同时保持底座YAML不变化。

 

 

 


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
367
分享
相关文章
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
17 10
智能运维新时代:AI在云资源管理中的应用与实践
智能运维新时代:AI在云资源管理中的应用与实践
263 23
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
195 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
83 9
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
78 0
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等