在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表达式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

听GPT 讲Rust源代码--compiler(29)

File: rust/compiler/rustc_const_eval/src/util/check_validity_requirement.rs 在Rust编译器的源代码中&#xff0c;rust/compiler/rustc_const_eval/src/util/check_validity_requirement.rs文件的作用是进行验证要求的检查。具体而言&#xff0c;该文件定义了函数check_val…

一文讲透使用Python绘制双纵轴线图

双纵轴线图主要用来展示两个因变量和一个自变量的关系&#xff0c;并且两个因变量的数值单位不同。具体来说&#xff0c;双纵轴线图是指在一幅图上有一个横轴和两个纵轴&#xff0c;适用于三个变量。两个纵轴分别表示一个变量&#xff0c;横轴变量同时适用于两个纵轴上的变量&a…

C++力扣题目--94,144,145二叉树非递归(迭代)遍历

为什么可以用迭代法&#xff08;非递归的方式&#xff09;来实现二叉树的前后中序遍历呢&#xff1f; 我们在栈与队列&#xff1a;匹配问题都是栈的强项 (opens new window)中提到了&#xff0c;递归的实现就是&#xff1a;每一次递归调用都会把函数的局部变量、参数值和返回地…

Azure Machine Learning - 人脸识别任务概述与技术实战

Azure AI 人脸服务提供了可检测、识别和分析图像中的人脸的 AI 算法。 人脸识别软件在许多不同情形中都十分重要&#xff0c;例如识别、无接触访问控制和实现隐私的人脸模糊。你可以通过客户端库 SDK&#xff0c;或者直接调用 REST API 使用人脸服务。 目录 一、人脸识别服务场…

Python print()函数高级用法和 len()函数详解:获取字符串长度或字节数

Python print()函数高级用法 我们使用 print() 函数时&#xff0c;都只输出了一个变量&#xff0c;但实际上 print() 函数完全可以同时输出多个变量&#xff0c;而且它具有更多丰富的功能。 print() 函数的详细语法格式如下&#xff1a; print (value,...,sep,end\n,filesys.s…

词嵌入位置编码的实现(基于pytorch)

背景介绍 在transformers架构当中&#xff0c;对于词向量的输入需要加上原本词对应的位置信息&#xff0c;作为输入到模型中训练的input&#xff0c;那具体的位置编码如何实现呢&#xff1f;本篇博客就跟大家一起分享一下对应的步骤 位置编码的公式 对于词向量的位置编码的方…

LaTex引用字体变色

使用下面这条语句进行修改。 ‘citecolor’改变参考文献颜色&#xff0c; ‘linkcolor’改变图标公式引用的颜色&#xff0c; ‘urlcolor’ 文本网站超链接颜色。 \usepackage[colorlinks,bookmarksopen,bookmarksnumbered,citecolorblue, linkcolorblue, urlcolorblue]{hyper…

黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目——第四部分

黑马程序员Java项目实战《瑞吉外卖》&#xff0c;轻松掌握springboot mybatis plus开发核心技术的真java实战项目——第四部分 1. 套餐管理1.1 新增套餐1.1.1 添加菜品数据回显 1.2 保存添加套餐1.3 套餐信息分页查询1.4 删除套餐1.5 需要自己单独实现的功能1.5.1 套餐管理的启…

leecode-代码随想录-学习笔记1

编程语言基础课&#xff0c;重新学习 kamacoder.com 基础语法&#xff1b;ACM输入输出通用模板&#xff1b;之前Java狂神说的学习笔记&#xff08;但是还是按照编程习惯用了C&#xff0c;感觉更底层好写代码&#xff09;。 正式开始&#xff1a; 下面按照题目-我的解答思路和…

深度解析Nginx负载均衡算法及配置实例

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

每天刷两道题——第十天

1.1和为k的子数组 给你一个整数数组 n u m s nums nums 和一个整数 k k k &#xff0c;请你统计并返回 该数组中和为 k k k 的子数组的个数 。子数组是数组中元素的连续非空序列。 输入&#xff1a;nums [1,2,3], k 3 输出&#xff1a;2 前缀和 1.2如何使用 前缀和的…

VSCode搭建 .netcore 开发环境

一、MacOS 笔者笔记本电脑上安装的是macOS High Sierra(10.13)&#xff0c;想要尝试一下新版本的.netcore&#xff0c;之前系统是10.12时&#xff0c;.netcore 3.1刚出来时安装过3.1版本&#xff0c;很久没更新了&#xff0c;最近.net8出来了&#xff0c;想试一下&#xff0c;…

【回溯算法】n-皇后

导航 题目来源题目描述示例思路完整代码 题目来源 n-皇后 题目描述 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一…

thinkphp学习02-目录结构、控制器、路由、配置文件

目录结构 www WEB部署目录&#xff08;或者子目录&#xff09; ├─app 应用目录 │ ├─controller 控制器目录 │ ├─model 模型目录 │ ├─ ... 更多类库目录 │ │ │ ├─common.php 公共函数文件 │ └─event.ph…

STM32MP157D-DK1 STM32CubeID使用与M核开发

STM32MP157具有A7内核核M4内核&#xff0c;前面介绍的一些文章&#xff0c;都是在A7内核上进行的&#xff0c;本篇来介绍M4内核的开发&#xff0c;以及开发时要用到的STM32 CubeIDE软件的使用。 1 STM32 CubeIDE创建LED工程 STM32CubeIDE是一体式多操作系统开发工具&#xff…

Python 全栈体系【四阶】(十一)

第四章 机器学习 机器学习&#xff1a; 传统的机器学习&#xff1a;以算法为核心深度学习&#xff1a;以数据和计算为核心 感知机 perceptron&#xff08;人工神经元&#xff09; 可以做简单的分类任务掀起了第一波 AI 浪潮 感知机不能解决线性不可分问题&#xff0c;浪潮…

Vue3.x+Echarts (可视化界面)

Vue3.0Echarts &#xff08;可视化界面&#xff09; 1. 简介1.1 技术选型1.2 ECharts支持的数据格式1.3 ECharts使用步骤 2. ECharts图形2.1 通用配置2.2 柱状图2.3 折线图2.4 散点图2.5 直角坐标系常用配置2.6 饼图2.7 地图2.8 雷达图2.9 仪表盘2.10 小结 3. Vue3.2ECharts5数…

腾讯云com域名注册1元条件说明

腾讯云com域名注册优惠价格1元首年&#xff0c;条件是企业新用户&#xff0c;个人新用户注册com域名是33元首年&#xff0c;第二年续费价格85元一年。活动 txybk.com/go/domain-sales 活动打开如下图&#xff1a; 腾讯云com域名注册优惠价格 腾讯云com域名注册原价是85元一年&a…

计算机毕业设计----SSM场地预订管理系统

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 用户角色包含以下功能&#xff1a; 按分类查看场地,用户登录,查看网站公告,按分类查看器材,查看商品详情,加入购物车,提交订单,查看订单,修改个人信息等功能。 管理员角…

杨中科 ASP.NETCore WebAPI 控制器及返回值、参数问题

控制器及返回值 控制器类 1、ControllerBase与Controller webapi的controller 继承自 ControllerBase webmvc 继承自controller controller 继承自controllerbase 2、控制器类可以不显式地继承自任何类 还是需要添加特性 运行&#xff1a; Action方法的异步 1、Acti…