当前位置: 首页 > news >正文

使用 kustomize 对 kubernetes 对象进行声明式管理

补丁实战

策略合并补丁

基准文件:/test/bases/deploy.yml

apiVersion: apps/v1
kind: Deployment
metadata:namespace: sharkname: my-nginx
spec:selector:matchLabels:run: my-nginxreplicas: 2template:metadata:labels:run: my-nginxspec:containers:- name: my-nginximage: nginxports:- containerPort: 80

覆盖中的补丁文件:/test/dev/add_my-nginx2.yml

apiVersion: apps/v1
kind: Deployment
metadata:namespace: sharkname: my-nginx
spec:selector:matchLabels:run: my-nginxreplicas: 3template:metadata:labels:run: my-nginxspec:containers:- name: my-nginx2image: nginxports:- containerPort: 80

覆盖中的 /test/dev/kustomization.yaml

resources:- ../bases
patches:- path: add_my-nginx2.yml

执行构建

kubectl kustomize  /test/dev

得到如下 YAML

apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginxnamespace: shark
spec:replicas: 3selector:matchLabels:run: my-nginxtemplate:metadata:labels:run: my-nginxspec:containers:- image: nginx    # 补丁新增name: my-nginx2ports:- containerPort: 80- image: nginxname: my-nginxports:- containerPort: 80

JSON 补丁

非所有资源或者字段都支持策略性合并补丁。为了支持对任何资源的任何字段进行修改, Kustomize 提供通过 patchesJson6902 来应用 JSON 补丁的能力。 为了给 JSON 补丁找到正确的资源,需要在 kustomization.yaml 文件中指定资源的组(group)、 版本(version)、类别(kind)和名称(name)。

示例如下:

基准中的 Ingress 对象的文件: /test/bases/shark-ing.yml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:namespace: sharkname: shark-ingress-gateway
spec:ingressClassName: nginxrules:- http:paths:- path: "/spms-standard"pathType: Prefixbackend:service:name: shark-gatewayport:number: 8080

覆盖中的 Ingress 对象的 JSON 补丁文件: /test/dev/shark-ing.yml

注意: 这里是增加了两个

- op: addpath: /spec/rules/0/http/paths/-value:path: "/spms-digital"pathType: Prefixbackend:service:name: shark-gatewayport:number: 8080
- op: addpath: /spec/rules/0/http/paths/-value:path: "/spms-shark"pathType: Prefixbackend:service:name: shark-gatewayport:number: 8080
  • op 是预算符,值可以是: add remove replace
  • path 是被操作的对象的YAML文件的路径
    /spec/rules/0/http/paths/ 对象如下内容:
spec:rules:- http:paths:

列表中的第一个元素的索引是 0- 表示列表的最后位置

覆盖中的 /test/dev/kustomization.yaml

resources:- ../bases
patches:- target:group: networking.k8s.ioversion: v1kind: Ingressnamespace: sharkname: shark-ingress-gatewaypath: shark-ing.yml

以上文件中的

  • group 对应基准中的 Ingress 对象文件: /test/bases/shark-ing.ymlapiVersion 的值中 networking.k8s.io 部分。
  • version 对应基准中的 Ingress 对象文件: /test/bases/shark-ing.ymlapiVersion 的值中 v1 部分。
  • kind 对应基准中的 Ingress 对象文件: /test/bases/shark-ing.ymlkind 的值。
  • namespace对应基准中的 Ingress 对象文件: /test/bases/shark-ing.ymlnamespace 的值。
  • name对应基准中的 Ingress 对象文件: /test/bases/shark-ing.ymlname 的值。

执行构建

kubectl kustomize  /test/dev

将会得到如下完整的 YAML 文件

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: shark-ingress-gatewaynamespace: shark
spec:ingressClassName: nginxrules:- http:paths:- backend:service:name: shark-gatewayport:number: 8080path: /spms-standardpathType: Prefix- backend:service:name: shark-gatewayport:number: 8080path: /spms-digitalpathType: Prefix- backend:service:name: shark-gatewayport:number: 8080path: /spms-sharkpathType: Prefix

相关文章:

使用 kustomize 对 kubernetes 对象进行声明式管理

补丁实战 策略合并补丁 基准文件:/test/bases/deploy.yml apiVersion: apps/v1 kind: Deployment metadata:namespace: sharkname: my-nginx spec:selector:matchLabels:run: my-nginxreplicas: 2template:metadata:labels:run: my-nginxspec:containers:- name:…...

Android Studio开发学习(六)———TableLayout(表格布局)、FrameLayout(帧布局)

目录 前言 一、Tablelayout (一)Tablelayout的相关简介 (二)TableLayout使用方法 1. 当TableLayout下面写控件、则控件占据一行的大小。(自适应一行,不留空白) 2.多个组件占据一行,则配合TableRow实现…...

c++ override关键字

在C11及之后的标准中,override是一个关键字,用于表示派生类中的成员函数覆盖了基类中的虚函数。 使用override关键字的好处在于它提供了一种明确的方式来指示编译器:该函数打算覆盖基类中的虚函数。如果使用了override关键字,但该…...

卫星影像联合无人机实现农业保险全生命周期监管监测

随着科技的进步,农业保险监管系统的发展日新月异。特别是近年来,随着卫星技术与无人机技术的结合,为农业保险监管系统带来了前所未有的革新。本文将深入探讨如何利用卫星与无人机方案构建高效的农业保险监管系统,并结合实例进行说…...

ChatGLM2-6B_ An Open Bilingual Chat LLM _ 开源双语对话语言模型

ChatGLM2-6B_ An Open Bilingual Chat LLM _ 开源双语对话语言模型 文章目录 ChatGLM2-6B_ An Open Bilingual Chat LLM _ 开源双语对话语言模型一、介绍二、使用方式1、环境安装2、代码调用3、从本地加载模型 4、API 部署 三、低成本部署1、模型量化2、CPU 部署3、Mac 部署4、…...

JAVA的学习日记DAY6

文章目录 数组例子数组的使用数组的注意事项和细节练习数组赋值机制数组拷贝数组反转数组添加 排序冒泡排序 查找多维数组 - 二维数组二维数组的使用二维数组的遍历杨辉三角二维数组的使用细节和注意事项练习 开始每日一更!得加快速度了! 数组 数组可以…...

Grafana告警(邮件)自定义模板配置

一年前给客户部署配置过grafana,告警配置也是用的原始的,客户在使用过程中只需要一些核心点信息,想要实现这个就需要用Grafana的自定义告警模板以及编辑邮件模板。 通知模板 模板信息的配置中查阅了相关资料,自己组装了一套&…...

大话设计模式——六大基本设计原则(SOLID原则)

设计模式 定义:软件开发中,在特定上下文中解决一类常见问题的被证明为有效的最佳实践。可供其他开发者重复使用解决相似问题。 好处: 提高代码的可重用性,减少重复代码。提高代码的可维护性,使代码更易于理解和修改。…...

Qt | Q_PROPERTY属性和QVariant 类

一、属性基础 1、属性与数据成员相似,但是属性可使用 Qt 元对象系统的功能。他们的主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值…...

力扣207.课程表

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。 例如…...

十五届web模拟题整理

模拟赛一期 1.动态的Tab栏 请在 style.css 文件中补全代码。 当用户向下滚动的高度没有超过标题栏(即 .heading 元素)的高度时,保持 Tab 栏在其原有的位置。当滚动高度超过标题栏的高度时,固定显示 Tab 栏在网页顶部。 /* TODO…...

ubuntu20.04 安裝PX4 1.13

step1_install_depenences.sh #!/bin/bash #install gazebo 11 #install protobuf 3.19.6python3 -m pip install --upgrade pip python3 -m pip install --upgrade Pillow# 將 empy 的版本調整爲3.3.4 pip3 uninstall empy pip3 install empy3.3.4sudo apt-get update sudo ap…...

大型网站系统架构演化

大型网站质量属性优先级:高性能 高可用 可维护 应变 安全 一、单体架构 应用程序,数据库,文件等所有资源都在一台服务器上。 二、垂直架构 应用和数据分离,使用三台服务器:应用服务器、文件服务器、数据服务器 应用服…...

探索Java中的栈:Stack与Deque(ArrayDeque和LinkedList)

文章目录 1. 栈(Stack)1.1 定义方式1.2 特点1.3 栈的层次结构 2. 双端队列(Deque)2.1 定义方式及继承关系2.2 特点:2.3 ArrayDeque2.4 LinkedList2.5 Deque 的各种方法2.6 如何选择ArrayDeque和LinkedList 3. 如何选择…...

实践笔记-03 docker buildx 使用

docker buildx 使用 1.启用docker buildx2.启用 binfmt_misc3.从默认的构建器切换到多平台构建器3.1创建buildkitd.toml文件(私有仓库是http没有证书的情况下,需要配置)3.2创建构建器并使用新创建的构建器 4.构建多架构镜像并推送至harbor仓库…...

【数据结构与算法】之8道顺序表与链表典型编程题心决!

个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、顺序表 1.1 合并两个有序数组 1.2 原地移除数组中所有的元素va…...

Go 源码之旅-开篇

欢迎来到《Go 源码之旅》专栏!在这个专栏中,我们将深入探索 Go 编程语言的内部数据结构的工作原理,一起踏上一段令人兴奋的源码之旅。 我们将一步步解析关键的数据结构底层工作原理以及一些常用框架的设计原理及其源码。 无论你是初学者还是…...

spring的事件推送

本质上是设计模式中的观察者模式。 一、什么是观察者模式 观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。 二、什么是spring的事件推送 在 Spring 的事…...

计算机网络—HTTPS协议详解:工作原理、安全性及应用实践

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:ヒューマノイド—ずっと真夜中でいいのに。 1:03━━━━━━️💟──────── 5:06 🔄 ◀️ ⏸…...

卫星遥感影像在农业方面的应用及评价

一、引言 随着科技的进步,卫星遥感技术在农业领域的应用越来越广泛。卫星遥感技术以其宏观、快速、准确的特点,为农业生产和管理提供了有力的技术支撑。本文将对卫星遥感在农业方面的应用进行详细介绍,并通过具体案例进行说明。 二、…...

HunyuanVideo-Foley企业应用:汽车HMI人机交互音效AI生成平台

HunyuanVideo-Foley企业应用:汽车HMI人机交互音效AI生成平台 1. 产品概述 HunyuanVideo-Foley是一款专为企业级音视频生成需求设计的AI平台,特别针对汽车HMI(人机交互界面)音效场景进行了深度优化。该平台基于RTX 4090D 24GB显存…...

打造 TC397 AUTOSAR OS 多核工程最小系统:点亮多核的明灯之旅

tc397autosar os多核工程最小系统 tc397 autosar os 多核最小系统、配置工程、tasking工程 实现功能:六核跑起来、亮灯。在汽车电子领域,多核处理器的应用愈发广泛,TC397 凭借其强大的性能成为众多开发者的心头好。今天咱们就来聊聊如何搭建 …...

OpenClaw v2026.3.24-beta.1 深度技术分析报告:体验、生态与协作的“精装修”

报告版本: 1.1分析基准: v2026.3.23 (稳定化修复版本) -> v2026.3.24-beta.1 (预发布版)核心论点: 在经历了v2026.3.22的“架构大换血”与v2026.3.23的“系统性修复”之后,v2026.3.24-beta.1标志着OpenClaw的迭代节奏进入了一个…...

像素时装锻造坊企业落地:游戏公司美术部门像素资产标准化生产流程再造

像素时装锻造坊企业落地:游戏公司美术部门像素资产标准化生产流程再造 1. 项目背景与价值 在游戏美术制作领域,像素艺术资产的生产一直面临效率瓶颈。传统手工绘制方式需要美术师逐帧绘制,耗时耗力且难以保持风格统一。像素时装锻造坊(Pixe…...

告别代码恐惧!用KRobot图形化编程,10分钟搞定Arduino巡线小车(附完整接线图)

零代码玩转Arduino巡线小车:KRobot图形化编程全攻略 第一次接触Arduino时,看到满屏的C代码是不是头皮发麻?作为教育工作者或创客爱好者,你可能更希望把时间花在创意实现上,而不是纠结于语法错误。现在,通过…...

别再死记硬背了!用一次完整的网页访问,帮你彻底搞懂HCIA/HCIP里的TCP/IP和OSI模型

从输入网址到页面加载:用真实场景拆解TCP/IP与OSI模型 想象一下这个场景:你在浏览器地址栏输入"www.baidu.com",按下回车键,不到一秒就看到了熟悉的搜索页面。这看似简单的操作背后,隐藏着一场精密的网络协议…...

全流程自动化知识图谱构建:从非结构化数据到智能决策支持

全流程自动化知识图谱构建:从非结构化数据到智能决策支持 【免费下载链接】llm-graph-builder Neo4j graph construction from unstructured data 项目地址: https://gitcode.com/GitHub_Trending/ll/llm-graph-builder 在信息爆炸的时代,企业如何…...

Python金融计算提速迫在眉睫!(仅剩3类未公开的底层优化手段,第3种已被高盛2023年专利覆盖)

第一章:Python金融计算提速迫在眉睫!(仅剩3类未公开的底层优化手段,第3种已被高盛2023年专利覆盖)高频回测、实时风险敞口计算与蒙特卡洛期权定价正面临Python原生执行效率的严峻瓶颈。当单次万标的风险因子矩阵运算耗…...

Phi-4-Reasoning-Vision代码实例:TextIteratorStreamer实现思考过程智能分隔

Phi-4-Reasoning-Vision代码实例:TextIteratorStreamer实现思考过程智能分隔 1. 项目概述 Phi-4-Reasoning-Vision是基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡RTX 4090环境优化。该工具严格遵循官方SYSTEM PROMPT…...

告别插件冲突!手把手教你手动安装Obsidian动态目录插件(Dynamic Table of Contents)

告别插件冲突!Obsidian动态目录插件手动安装全指南 为什么需要手动安装动态目录插件? Obsidian作为一款强大的知识管理工具,其插件生态让用户能够高度自定义工作流。然而,插件间的兼容性问题常常成为用户痛点。许多用户习惯使用Fl…...