在Kubernetes中优雅地导出和清理Ingress资源

引言

Kubernetes的Ingress资源是定义外部访问集群服务的规则。随着微服务架构和容器化技术的普及,Ingress作为路由流量的关键组件变得愈发重要。当我们需要在环境之间迁移Ingress资源或者备份当前的配置时,就会用到导出功能。然而,直接使用kubectl导出可能会包括一些我们不需要的元数据。本篇博客将教您如何优雅地导出Kubernetes命名空间下的Ingress资源,同时保留关键的annotations字段。
注意:其实这个跟获取configmap是连贯的,增加一些新的玩法!

在Kubernetes中优雅地导出和清理Ingress资源

初识kubectl和yq

kubectl是Kubernetes的命令行工具,它允许我们运行命令对Kubernetes集群进行操作。一个常用的功能是导出资源对象的YAML描述,以便迁移或备份。

yq是一款流行的命令行YAML处理器,类似于针对XML的xq和针对JSON的jq。使用yq可以轻松地对YAML数据进行查询、修改和编写。

导出Ingress资源

首先,让我们从所有Ingress资源开始,您可以通过运行以下命令来检索当前Kubernetes环境中的所有Ingress对象:

kubectl get ingress -o yaml

这个命令会生成一个包含了您所有Ingress资源的YAML文件,包括大量的元数据字段。

清理不必要的元数据

当执行**kubectl get ingress -o yaml **的时候 每个ingress的数据内容格式如下:
image.png
这些元数据可能在当前环境中有用,但在资源迁移的过程中,字段如uidresourceVersioncreationTimestampmanagedFields通常是没必要的,甚至可能引起问题。我们可以结合使用kubectlyq来清理这些不必要的信息,并获得一个干净的YAML输出:

kubectl get ingress -o yaml | yq eval 'del(.items[].metadata.creationTimestamp,.items[].metadata.managedFields,.items[].metadata.ownerReferences,.items[].metadata.uid,.items[].metadata.resourceVersion,.items[].metadata.generation)'

此命令针对Ingress对象数组中的每个项目删除了指定的字段。
image.png
但是这个annotations字段下面的这些数据我还想处理一下,怎么处理呢?

保留关键Annotations字段

Kubernetes中的annotations可以用来存储非标准的元数据,这对于定义特定的行为非常有用。例如,kubernetes.io/ingress.classtraefik.ingress.kubernetes.io/router.entrypoints对于Ingress控制器的工作至关重要。移除这些annotations可能会导致Ingress不再按预期工作,因此我们需要保留它们。只是删除kubectl.kubernetes.io/last-applied-configuration字段:

为了达到这个目的,我们需要稍微修改刚才的yq表达式,仅保留特定的annotations:

kubectl get ingress -n <your-namespace> -o yaml | yq eval 'del(.items[].metadata.creationTimestamp,.items[].metadata.managedFields,.items[].metadata.ownerReferences,.items[].metadata.uid,.items[].metadata.resourceVersion,.items[].metadata.generation)| (.items[].metadata.annotations) |= with_entries(select(.key == "kubernetes.io/ingress.class" or .key == "traefik.ingress.kubernetes.io/router.entrypoints"))' -o yaml

请确保将<your-namespace>替换为您实际的命名空间。

这个命令会创建一个YAML文件,其中仅包括了我们特别指定的annotations,并且去除了所有其他不必要的metadata字段。
image.png
还有另外一种方法,这样也可以:

kubectl get ingress -n <your-namespace> -o yaml | yq eval 'del(.items[].metadata.creationTimestamp,.items[].metadata.managedFields,.items[].metadata.ownerReferences,.items[].metadata.uid,.items[].metadata.annotations."kubectl.kubernetes.io/last-applied-configuration",.items[].metadata.resourceVersion,.items[].metadata.generation)'

image.png

结尾

使用这种方法,我们不但可以避免潜在的迁移冲突,还能确保关键配置信息的持久化。这为Kubernetes管理员提供了一个方便的方式来管理他们的Ingress配置,确保Ingress资源的迁移或备份可以无缝进行。

导出过程的自定义和优化对于维护清晰和高效的集群管理至关重要。希望本文介绍的方法能帮助您在自己的集群上执行精细化的Ingress资源管理和导出任务。
请注意,您需要有yq命令行工具的适当版本安装在您的系统上来执行以上的命令。若没有,您可以从yq的GitHub页面上找到安装指南和详情文档。同时,确保使用的是适合您文档结构和需求的yq表达式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

508基于51单片机的火灾检测与报警系统设计

基于51单片机的火灾检测与报警系统设计[proteus仿真] 火灾检测与报警系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的火灾检测与报警系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 …

在云服务器ECS上用Python写一个搜索引擎

在云服务器ECS上用Python写一个搜索引擎 一、场景介绍二、搜索引擎的组成2.1 网页的爬取及排序2.2 用户使用搜索引擎进行搜索 三、操作步骤3.1 环境准备3.2 安装Anaconda3.3 安装Streamlit3.4 下载搜索引擎代码3.5 运行搜索引擎 四、常见问题4.1 运行setup.py时可能的问题4.2 如…

数字孪生与物联网(IoT)技术的结合

数字孪生与物联网&#xff08;IoT&#xff09;技术的结合可以在多个领域实现更智能、更高效的应用。以下是数字孪生在物联网技术中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.实时监…

【Verilog】期末复习——解释下列名词(FPGA、ASIC、IP、RTL、EDA、HDL、FSM)

系列文章 数值&#xff08;整数&#xff0c;实数&#xff0c;字符串&#xff09;与数据类型&#xff08;wire、reg、mem、parameter&#xff09; 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分…

Opencv实验合集——实验八:相机校准

1.定义 首先&#xff0c;我们来理解一下怎么从相机的角度去看一张图片&#xff0c;就好比如你用眼睛作为相机来进行摄影&#xff0c;但是比摄影机强的是&#xff0c;你是怎么摄影图片之后再将它矫正出现在你眼前&#xff0c;将歪歪扭扭的图片变成一张在你眼前是一张直的图片 为…

1、C语言:数据类型/运算符与表达式

数据类型/运算符/表达式 1.数据类型与长度2.常量3.声明4. 运算符5. 表达式 1.数据类型与长度 基本数据类型 类型说明char字符型&#xff0c;占用一个字节&#xff0c;可以存放本地字符集中的一个字符int整型&#xff0c;通常反映了所有机器中整数的最自然长度float单精度浮点…

C语言stricmp函数

之前学习了strcmp函数,下面看一下stricmp; strcmp()比较字符串,区分大小写; 根据资料, strcmp() 以二进制的方式进行比较,不会考虑多字节或宽字节字符; 使用stricmp()比较字符串,不区分大小写; 字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。…

JavaWeb实验报告

JavaWeb实验报告 JavaWeb实验报告 2024 年 1 月 7 日 课程名称&#xff1a; JavaWeb 实验名称&#xff1a; 期末作业 班级&#xff1a; 姓名 同组人&#xff1a; 指导教师评定&#xff…

国产编程语言炫彩,界面库ui dll,有人了解吗

中文编程: 中英文双语编程, 中英一键切换, 中英对照, 中文为主, UNICODE/ANSI编码都支持; 完全免费: 炫语言免费, 调试器免费, IDE绿色版无需安装; 纯文本: 纯文本格式代码, 随意复制粘贴, GIT代码托管, 多人合作开发; PY风格: PY风格代码, 通过代码缩进确定作用域 非 大花括…

已解决 ValueError: Data cardinality is ambiguous 问题

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

已解决 Java Error: java.lang.UnsupportedOperationException 问题

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

安装pygraphviz步骤

1. 安装graphviz软件 去官网graphviz下载&#xff0c;graphviz软件安装包&#xff0c;然后安装。 2. 准备c/c环境 检查 Visual Studio Build Tools&#xff1a;如果您之前安装了 Visual Studio 或 Visual Studio Build Tools&#xff0c;那么您应该已经有了 C 编译器。您可以…

数据库常见的面试题

1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数&#xff1a; SELECT s.student_id, s.student_name, sc1.course_score AS score1, sc2.course_score AS score2 FROM student s JOIN score sc1 ON s.student_id sc1.student_id AND sc1.course_i…

面试经典150题(72-77)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第三十五天&#xff09;完成了6道(72-77)150&#xff1a; 72.(236. 二叉树的最近公共祖先) 题目描述&#xff1a; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义…

Java IO流(四)-字符流输出流

字符输出流 1.1 字符流输出介绍 Writer类 写入字符流的最顶层的类 , 是一个抽象类 ,不能实例化 , 需要使用其子类FileWriter类 FileWriter类 : 用来写入字符文件的便捷类 1.2 FileWriter的成员 构造方法 : public FileWriter(File file) : 往指定的File路径中写入数据publi…

7个PyCharm实用插件实现轻松编程

大家好&#xff0c;IDE&#xff08;集成开发环境&#xff09;是开发者的武器&#xff0c;使用一个好的IDE和一些很棒的插件&#xff0c;工作效率会更高。Python是一种广泛使用的编程语言&#xff0c;PyCharm是最受欢迎的Python IDE之一。以下介绍7个PyCharm插件&#xff0c;它们…

IDE安装,关于运行vbs出现800a0046权限不足的解决情况(java进阶1)

安装教程&#xff1a;JetBrains全家桶破解&#xff1a;2023.x 破解教程-搜云库技术团队 安装过程遇到的问题 1&#xff09;关于运行vbs出现800a0046权限不足的解决情况 解决方法&#xff1a; 一句话重点&#xff1a;把360安全卫士退出后&#xff0c;成功运行了。 参考&…

iOS 不用VOIP也可以实现微信来电邀请推送持续响铃震动及及时来电取消

iOS 不用VOIP也可以实现微信来电邀请推送持续响铃震动及及时来电取消 前言一 、关于NotificationServiceExtension1. 创建2. 推送机制3. API 实例方法二、 APNS Push Payload2. 来电邀请2. 来电取消三、数据共享3. 配置共享域四 知识点就到这里,下面是主要代码4. 1 Notificati…

GB/T 16400-2023 绝热用硅酸铝棉及其制品检测

硅酸铝棉板是指用加有粘接剂的硅酸铝棉制成的板状制品&#xff0c;可用于工业热力设备、窑炉和管道起到高温绝热作用。其形状也可为毡、毯、纸、管壳等。 GB/T 16400-2023绝热用硅酸铝棉及其制品检测指标&#xff1a; 测试项目 测试标准 导热系数 GB/T 10294 外观 GB/T 1…

FineBI实战项目一(4):指标分析之每日订单总额/总笔数

1 明确数据分析目标 统计每天的订单总金额及订单总笔数 2 创建用于保存数据分析结果的表 use finebi_shop_bi;create table app_order_total(id int primary key auto_increment,dt date,total_money double,total_cnt int ); 3 编写SQL语句进行数据分析 selectsubstring(c…