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

news2024/11/6 0:44:50

引言

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.coloradmin.cn/o/1366904.html

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

相关文章

已解决 ValueError: Setting an array element with a sequence. 问题

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

Mac 环境多JDK安装与切换

一、下载jdk 去Oracle官网上下载想要安装的jdk版本&#xff0c;M芯片选择arm架构的.bmg格式的文件。 https://www.oracle.com/java/technologies/downloads/。 二、安装jdk 2.1 双击下载的文件&#xff0c;安装步骤一步步点继续就好。 2.2 安装完成后会在/Library/Java/JavaV…

Java网络爬虫--概述与原理

目录标题 基本概念与原理爬虫与搜索系统的关系爬虫运行原理爬虫步骤DNS域名解析 爬虫开发本质网络爬虫的分类通用网络爬虫聚集网络爬虫增量式网络爬虫Deep Web爬虫 参考文献 基本概念与原理 爬虫又叫网络蜘蛛&#xff0c;一种运行在互联网上用来获取数据的自动程序。 互联网的…

高级鉴权网关设计二:SM2国密+协议SPI可扩展+动态配置

​ 上一篇文章是定义切面来做鉴权&#xff0c;针对接口时使用比较方便&#xff0c;还有一种是网关的鉴权如何处理&#xff1f;下面为大家介绍一种比较常用的方案&#xff0c;附带可扩展设计 ​ 既然是网关其实就是和外部的礼尚往来&#xff0c;每个第三方还有可能不一样&#…

2.5 KERNEL FUNCTIONS AND THREADING

我们现在准备讨论更多关于CUDA内核功能以及启动这些内核功能的效果。在CUDA中&#xff0c;内核函数指定所有线程在并行阶段执行的代码。由于所有这些线程执行相同的代码&#xff0c;CUDA编程是众所周知的单程序多数据&#xff08;SPMD&#xff09;[Ata 1998]并行编程风格的实例…

Matlab绘制动态心形线

1. 代码 for alpha0:0.1:30 x-1.8:0.001:1.8; y(x.^2).^(1/3)0.9*(3.3-x.^2).^(1/2).*sin(alpha*pi*x); plot(x,y,r-,LineWidth,1.2); set(gca,YGrid,on); axis([-3,3,-2,4]); text(-2,3.35,$f(x)x^{\frac{2}{3}}0.9(3.3-x^2)^{\frac{1}{2}}sin(\alpha\pi x)$,Interpreter,lat…

如何在整个项目中有效管理成本?

在项目管理方面&#xff0c;没有什么比控制成本更重要。尤其是在项目复杂的情况下&#xff0c;开支可能会让项目成本比预期飙升得更快。项目经理需要采取积极主动的成本管理方法&#xff0c;以保证预算不超支。 项目成本管理的各个阶段 管理项目成本需要在整个项目周期中保持…

【Docker】部署mysql 和 tomcat

目录 部署MySQL 1.搜索镜像 2. 拉取镜像 部署Tomcat 1. 搜索镜像 2.拉取镜像 3.查看镜像 部署MySQL 1.搜索镜像 docker search mysql 2. 拉取镜像 通过mysql 镜像创建对应的容器&#xff0c;并设置端口映射&#xff0c;目录映射 创建mysql 的目录 docker run -id \ …

DataGrip 数据库备份

一、备份 1、找到需要被备份的数据库demo&#xff0c;右键>Import/Export>Export with mysqldump 2、配置路径 点击run&#xff0c;等待完成 导出成功 二、还原 选择 需要导入的数据库>右键>Import/Export>Restore with ‘mysql’ 点击run&#xff0c;刷…

【Python从入门到进阶】46、58同城Scrapy项目案例介绍

接上篇《45、Scrapy框架核心组件介绍》 上一篇我们学习了Scrapy框架的核心组件的使用。本篇我们进入实战第一篇&#xff0c;以58同城的Scrapy项目案例&#xff0c;结合实际再次巩固一下项目结构以及代码逻辑的用法。 一、案例网站介绍 58同城是一个生活服务类平台&#xff0c…

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (三)

这个是继上一篇文章 “Elasticsearch&#xff1a;Serarch tutorial - 使用 Python 进行搜索 &#xff08;二&#xff09;” 的续篇。在今天的文章中&#xff0c;本节将向你介绍一种不同的搜索方式&#xff0c;利用机器学习 (ML) 技术来解释含义和上下文。 向量搜索 嵌入 (embed…

文件系统与日志分析

一&#xff0c;文件系统 &#xff08;一&#xff09;inode 和block概述 1&#xff0c;文件数据包括元信息与实际数据 2&#xff0c;文件存储在硬盘上&#xff0c;硬盘最小存储单位是“扇区”&#xff0c;每个扇区存储512字节 3&#xff0c;block (块) 连续的八个扇区组成一…

OCP NVME SSD规范解读-5.命令超时限制

在"4.7 Command Timeout"章节中&#xff0c;详细定义了NVMe命令的超时要求和限制。 CTO-1&#xff1a;NVMe管理命令和TCG&#xff08;可信计算组&#xff09;命令从提交到完成不应超过10秒&#xff0c;且没有其他命令未完成&#xff08;QD1&#xff09;。CTO-1不适用…

【Python机器学习】构造决策树

通常来说&#xff0c;构造决策树直到所有叶结点都是纯的叶结点&#xff0c;但这会导致模型非常复杂&#xff0c;并且对于训练数据高度过拟合。 为了防止过拟合&#xff0c;有两种常见策略&#xff1a; 1、尽早停止树的生长&#xff0c;也叫预剪枝 2、先构造树&#xff0c;但…

微信小程序实战-01翻页时钟-1

文章目录 前言需求分析功能设计界面设计界面结构设计界面样式设计 逻辑设计 单页功能实现运行结果 前言 我经常在手机上用的一款app有一个功能是翻页时钟&#xff0c;基于之前学习的小程序相关的基础内容&#xff0c;我打算在微信小程序中也设计一个翻页时钟功能&#xff0c;J…

专业图表分析网页模板,让你轻松打造震撼的大数据可视化大屏电子沙盘

源码介绍 基于html/css/js&#xff0c;包含行业&#xff1a; 智慧政务 智慧社区 金融行业 智慧交通 智慧门店 智慧大厅 智慧物流 智慧医疗 通用模板 大数据分析平台 实时数据K线图&#xff08;可自由配置多种行业模式&#xff09; 可切换式大屏展示 翻牌效果 自定义字体

CCF模拟题 202305-1 重复局面

试题编号&#xff1a; 202305-1 试题名称&#xff1a; 重复局面 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 题目背景 国际象棋在对局时&#xff0c;同一局面连续或间断出现3次或3次以上&#xff0c;可由任意一方提出和棋。 问题描述 国际象棋每一个局面可以用…

(生物信息学)R语言绘图初-中-高级——3-10分文章必备——点阵图(初级)

生物信息学文章的发表要求除了思路和热点以外,图片绘制是否精美也是十分重要的,本专栏为(生物信息学)R语言绘图初-中-高级——3-10分文章必备,主要通过大量文献,总结3-10分文章中高频出现的各种图片,并给大家提供图片复现的R语言代码,及图片识读。 本专栏将向大家介绍…

Android Matrix (三)矩阵组合和应用变换

在 Android 开发中&#xff0c;Matrix 类不仅提供了 mapPoints 方法来变换点坐标&#xff0c;还提供了多种其他用法&#xff0c;使其成为处理图像和视图变换的强大工具。以下是 Matrix 类的一些关键用法&#xff1a; 1. 变换方法 setTranslate(float dx, float dy): 设置矩阵…

二 数据查询

1、实验目的 理解SQL成熟设计基本规范&#xff0c;熟练运用SQL语言实现数据基本查询&#xff0c;包括但表查询、分组统计查询和连接查询。 2、实验内容及要求 针对数据库设计各种单表查询SQL语句、分组统计查询语句&#xff1b;设计单个表针对自身的连接查询&#xff0c;设计…