kubectl 获取 ConfigMap 并导出 YAML 时如何忽略某些字段

发布于:2024-10-24 编辑:匿名 来源:网络

前言:我们在使用 Kubernetes 时,经常需要通过 kubectl 命令行工具来管理资源。有时我们也想将某个资源的配置导出为YAML文件,这样方便版本控制和资源迁移。

不过默认情况下,使用 kubectl get 命令导出资源配置会包含一些元数据字段:如 **annotations**、**creationTimestamp**、**resourceVersion**、**uid** 等。这些字段对于备份很重要或者版本控制不是必需的,但可能会导致一些问题。

本文将教您如何忽略这些字段并导出更干净的 YAML 配置! kubectl 获取 ConfigMap 并导出 YAML 时如何忽略某些字段 1. 了解 kubectl get 命令 在详细了解如何忽略特定字段之前,我们首先了解 kubectl get 命令。代码语言:shell copy kubectl get cm 以 mysql-config 为例: 代码语言:shell copy kubectl get cm mysql-config -o yaml 上面的命令会打印出指定 ConfigMap 的 YAML 格式输出,包括所有元数据信息。

例如:代码语言:yaml copy apiVersion: v1data: my.cnf: "[mysqld]\nserver-id=1\ncharacter-set-server=utf8mb4 \nlower_case_table_names = 1\n"kind: ConfigMapmetadata:annotations: kubectl.kubernetes 。 io/最后应用的配置:| {"apiVersion":"v1","data":{"my.cnf":"[mysqld]\nserver-id=1\ncharacter-set-server=utf8mb4 \nlower_case_table_names = 1\n"},"kind" :"ConfigMap","metadata":{"annotations":{},"name":"mysql-config","namespace":"default"}} 创建时间戳: "07- 19T07:16:34Z" 名称: mysql -config 命名空间:默认资源版本:“5” uid:19ba11c5-a4a1e-c4fecf 为了导出更清晰的配置,我们需要删除不必要的元数据字段。

2. 如何忽略特定字段 在 Kubernetes 中,没有 kubectl 选项可以直接忽略特定字段,但是我们可以使用一些工具和技术来实现类似的效果。选项 1:将 kubectl 与文本处理工具结合使用的最简单方法是将 kubectl get 的输出通过管道传输到文本处理命令,以删除不必要的字段。

在Linux系统上,我们通常使用grep、sed等工具来处理文本。示例:只需使用 grep 即可排除特定行。

代码语言:shell copy kubectl get cm mysql-config -o yaml | grep -v '^\s*creationTimestamp:' 上面的命令删除 ConfigMap 输出的 YAML 内容中的creationTimestamp 行。同样,您可以添加更多 grep -v 来排除其他不需要的字段: 代码语言: shell copy kubectl get cm mysql-config -o yaml | grep -v '^\s*creationTimestamp:'|grep -v '^\s*注释:'| grep -v '^\s*resourceVersion:'|grep -v '^\s*uid:'这里特别提醒:由于这些字段在 YAML 中可能会缩进,使用 grep -v 可能不够灵活,无法处理所有 Condition 。

此外,grep 只能逐行工作,注释字段可能是多行值,这在这里不适用!示例:grep 与 kubeclt patch 结合使用: 代码语言:shell copy kubectl patch cm mysql-config -p '{"metadata": {"annotations": null, "creationTimestamp": null, "resourceVersion": null, "uid" : null}}' 代码语言:shell copy kubectl get cm mysql-config 代码语言:shell copy ubectl get cm mysql-config -o yaml | grep -v "^\s*注释:" | grep -v "^\s *creationTimestamp:" | grep -v "^\s *creationTimestamp:" | grep -v "^\s*资源版本:" | grep -v "^\s*uid:" 然而,这个方法实际上修改了ConfigMap。如果你想保持ConfigMap不变,这个方法不适用!输出到mysql-config文件: 代码语言: shell copy ubectl get cm mysql-config -o yaml | grep -v "^\s*注释:" | grep -v "^\s*creationTimestamp:" | grep -v "^\s*creationTimestamp:" | grep -v "^\s*资源版本:" | grep -v "^\s*uid:" > mysql-config.yaml 示例:使用awk进行复杂的文本处理 如果你不想使用grep,但想继续使用传统的文本处理工具链,awk是一个更比grep强大的文本处理工具,并且可以处理跨行模式匹配和范围操作。

我们可以使用 awk 来分块处理 YAML 内容。下面是删除注解和其他一些字段的 awk 脚本示例: 注意:configmap 恢复为 path 之前的内容:至少保留注解字段代码 语言:shell copy kubectl get cm mysql-config -o yaml | awk ' /annotations: /{a=1} /^ [a-zA-Z0-9_]+:/{a=0} !a && !/creationTimestamp:/ && !/resourceVersion:/ && !/uid:/ {print} /name :|namespace:/{print}' > mysql-config.yaml 在上面的例子中,当awk遇到以annotations:开头的行时,它会将标志a设置为1,然后遇到后面的下一行通过一些空格。

当一行以文字字符开头时,将标志重置为 0 以完成范围处理。同时,我们检查每一行是否不是要排除的字段,如果是,则跳过打印。

选项2:使用yq工具处理YAML文件。 yq是一个强大的YAML处理工具,类似于JSON的jq工具。

您可以使用 yq 来准确处理 YAML 格式的内容。首先,你需要安装yq。

它可以通过包管理工具(例如Homebrew、apt等)下载,也可以直接从其GitHub页面下载。我的操作系统ubuntu是直接使用sudo apt-get install yq安装的: 使用yq删除特定字段的命令如下: 代码语言: shell copy kubectl get cm mysql-config -o yaml | yq eval 'del(.metadata.creationTimestamp, .metadata.resourceVersion, .metadata.uid, .metadata.annotations)' -> mysql-config.yaml 此命令将从 YAML 中删除creationTimestamp、resourceVersion、uid 和注释字段并保存结果保存到 my-config.yaml 文件中。

解决方案三:自定义Go模板另一个更高级的解决方案是使用kubectl的自定义Go模板输出。通过编写模板,您可以准确控制输出内容。

代码语言: shell copy kubectl get cm my-config -o go-template='{{printf "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: %s\nnamespace: %s\ndata:\n" 。元数据.name .metadata.命名空间}}{{范围 $key, $value := .data}}{{printf " %s: |-\n %s\n" $key $value}}{{end}} ' > mysql-config.yaml 该命令使用 Go 模板语法生成过滤掉特定元数据字段的 ConfigMap 资源列表,并将其保存到 mysql-config.yaml。

结论在实践中,上述每种方法都有其适用场合。如果您只是偶尔需要做这样的事情,简单的文本处理可能就足够了。

如果你经常需要处理复杂的YAML文件,学习和使用yq将会很有帮助。对于更高的性能或更复杂的处理需求,学习一些有关 Go 模板的知识可能是一项不错的投资。

我希望这篇文章对您有所帮助。如有疑问,请在评论区留言讨论。

我正在参加腾讯科技创造特训营第四期有奖征文比赛。

kubectl 获取 ConfigMap 并导出 YAML 时如何忽略某些字段

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 镁伽科技黄瑜清:智能自动化给生命科学带来巨大变革

    镁伽科技黄瑜清:智能自动化给生命科学带来巨大变革

    近日,戈壁创投年度投资峰会在线上举行。 戈壁创投邀请LP及被投企业经理参加会议,分享收获,共同努力。 探索趋势,见证未来。 2019年,国际环境复杂严峻,资本市场波动剧烈,加上疫情影响,股权投资面临前所未有的考验。 在“危机”与“机遇”交叉的环境下,戈壁创投继续保持

    06-18

  • 超星星完成数亿元C轮融资,加速释放优质碳化硅衬底产能

    超星星完成数亿元C轮融资,加速释放优质碳化硅衬底产能

    据投资界(ID:pedaily)12月14日消息,江苏超星星半导体股份有限公司超星行(以下简称“超星行”)近日完成数亿元C轮融资。 本轮融资由国际知名投资机构领投,商洛电子、老股东策资本跟投。 云秀资本担任本轮融资独家财务顾问。 超星星成立于今年4月,总部位于江苏南京。 致

    06-18

  • 以36.5亿元卖掉公司后,他流落街头说:我再也不会创业了,我要投资!

    以36.5亿元卖掉公司后,他流落街头说:我再也不会创业了,我要投资!

    沉寂了五个多月后,橙晶创始人乌海因为一篇文章再次回到公众视野。   2天前,吴海参加了摩根士丹利举办的一场“庆祝交易成功”的聚会(橙晶酒店“卖身”给华住酒店)。 “为了庆祝我的公司出售,我的心情可能不太好。 我不知道为什么。 醉了。 ”在《卖了酒店,昨晚,我喝醉

    06-18

  • 13小时破1207亿!砍单的背后是单打的狂欢,潮流已至

    13小时破1207亿!砍单的背后是单打的狂欢,潮流已至

    13:09:49,天猫双11全球狂欢成交额破亿元!地球已经无法阻挡国人“恐怖”的购买力了!虽然本次双11小败家的最终战斗力尚未揭晓,但与去年的亿元数据相比,已经提前了10小时50分11秒。 在同时喊出“痛”和“爽”的同时,国人到底能以怎样的数字打破世人的想象,还有待观察。 很

    06-17

  • 首次发布 - Gluetacs Therapeutics完成A轮融资,加速蛋白降解药物临床转化

    首次发布 - Gluetacs Therapeutics完成A轮融资,加速蛋白降解药物临床转化

    投资界(ID:pedaily)5月31日消息,Gluetacs Therapeutics宣布获得A轮融资,由黄埔生物医药基金领投,其次是广东造币投资、南湾百奥、思南元科。 本轮融资将重点关注博信生物的产品管线GT、GT的临床一期推进及临床前项目开发。 标新生物是上海科技大学免疫化学研究所孵化的一

    06-17

  • 机构也“疯狂”!北京交易所成立以来,累计开展调查762次,谁是“机构调查之王”?

    机构也“疯狂”!北京交易所成立以来,累计开展调查762次,谁是“机构调查之王”?

    作者|徐明辉编辑|六耳源|直达北京交流 年已结束。 回顾今年的经济发展,北京证券交易所是中国资本市场绕不开的话题。 北京交易所作为服务创新型中小企业的主阵地,将成就一批中小企业。 一些企业从被忽视,到如今已颇具规模,如今正站在聚光灯下,接受机构的深入研究。 据

    06-18

  • 菜鸟驿站进军数字化社区生活,正式推出团购、洗衣、回收服务

    菜鸟驿站进军数字化社区生活,正式推出团购、洗衣、回收服务

    进军团购、洗衣、回收……菜鸟驿站刚刚宣布,将从快递服务全面升级为数字化社区生活服务。 据投资界(微信ID:pedaily)消息,今日(6月23日)全球智慧物流峰会上,菜鸟小站宣布升级为数字社区生活小站:通过团购将值得信赖的产品送到你家门口、洗衣、回收等便捷服务。 这意味

    06-17

  • 投资界独家-传闻宝宝树引入互联网巨头加持,估值约150亿元

    投资界独家-传闻宝宝树引入互联网巨头加持,估值约150亿元

    据投资界5月28日消息,有消息称,国内母婴龙头企业宝宝树将引入互联网+来自巨头互联网的新一轮战略投资,最新估值约为1亿元人民币。   援引该消息,人士表示,投资合作计划将于近期公布。 除了战略资本合作、进一步优化股东结构布局外,这个互联网平台也将极大赋能宝宝树在

    06-17

  • iQOO Z3图赏:售价2000元以下的“能手卡”

    iQOO Z3图赏:售价2000元以下的“能手卡”

    不到一个月的时间,iQOO就接连发布了两款新机,有点让人应接不暇。 iQOO Neo 5和iQOO Z3都打“性价比”牌,都有一定的特色,是iQOO品牌主打销量的两条产品线。 ▲新发布的iQOO Z3。 我们在体验iQOO 7时,曾说它是“三双”高手。 它的存在就是带领整个队伍的进攻去攻占城市和领

    06-21

  • 普通人对亚运会的热情尽在快手

    普通人对亚运会的热情尽在快手

    这个中秋国庆假期,没有什么话题能比杭州亚运会更火爆了。 自上月14日亚运会门票开售以来,不少赛事门票都被观众抢购一空。 除了观看赛事本身,看明星在亚运会上讨论比赛、为中国队加油、分享自己的观赛感受也成为一种热潮。 随着29日比赛男子50米蛙泳决赛覃海洋率先冲线,中

    06-18

  • 上海港汽车出口同比增长超过50%

    上海港汽车出口同比增长超过50%

    上海港汽车出口开门红。 海通码头1月份出口各类车辆超过2万辆,同比增长超过50%。 上海作为全国最大的汽车进出口口岸,正在改变过去“出口产品低端、出口市场低端”的局面。 过去60%以上出口到拉美、非洲、中东等地区,到现在欧洲、美国、新西兰、澳大利亚等发达国家占比接近

    06-18

  • 硅谷精英所信奉的“AI宗教”到底是做什么的?

    硅谷精英所信奉的“AI宗教”到底是做什么的?

    作者 |高念编辑|靖宇 滑雪的终点是骨科,科学的终点是……神学? 2019年是当之无愧的“AI+大模型”年。 以ChatGPT为代表的生成式AI的快速进步,甚至让人们认为大型语言模型有资格被称为“世界模型”——人工智能从未像今天这样。 如此接近“神性”。 更难以想象的是,八年前,

    06-17