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 时如何忽略某些字段

站长声明

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

标签:

相关文章

  • 蓝鸟就业获Pre-A轮数千万元融资,青山资本投资

    蓝鸟就业获Pre-A轮数千万元融资,青山资本投资

    投资界11月2日消息,据36氪报道,灵活用工科技平台蓝鸟就业已完成数千万元融资9月底Pre-A轮融资,投资方为青山资本。 凌博资本担任本轮融资独家财务顾问。 此前,该公司曾于今年4月获得紫荆资本数百万天使投资。 获得融资后,蓝鸟就业下一步将加快产品研发。 除了各产品集群的

    06-17

  • 植物肉公司Simulate获得 5000 万美元 B 轮融资,Alexis Ohanian 领投

    植物肉公司Simulate获得 5000 万美元 B 轮融资,Alexis Ohanian 领投

    6 月 9 日消息,据外媒 TechCrunch 报道,美国植物性素食公司Simulate获得 1 万美元 B 轮融资。 本轮融资由 Alexis Ohanian 领投,公司估值已达 2.6 亿美元。 Simulate由BenPasternak于2016年创立,旨在为用户提供健康又美味的植物性肉类食品选择。 2017年,Simulate首款产品

    06-18

  • 商务部:千方百计推动消费持续复苏升级

    商务部:千方百计推动消费持续复苏升级

    商务部部长王文涛在新闻发布会上表示,去年四季度以来消费出现了一些情况,也就是说,下行压力加大。 今年稳定消费压力较大。 我们将认真贯彻落实党中央、国务院决策部署,坚决实施扩大内需战略,统筹疫情防控和促进消费,千方百计推动消费持续复苏和升级,增强消费对经济发展

    06-17

  • 商务部:鼓励企业开展5G、区块链等技术在商务领域的应用创新

    商务部:鼓励企业开展5G、区块链等技术在商务领域的应用创新

    打造头条新闻1月29日下午,商务部发布《商务部办公厅关于加快数字商务建设 服务构建新发展格局的通知》。 《通知》表示,助力发展数字经济、建设数字中国,要更好发挥电子商务作为数字商务最前沿、最活跃、最重要组成部分的创新引领作用,充分释放电子商务的活力。 商业领域数

    06-18

  • BOSS直聘启动“桃花行动”,免费为企业搭建互助渠道

    BOSS直聘启动“桃花行动”,免费为企业搭建互助渠道

    在新型冠状病毒肺炎疫情持续影响下,企业用工出现了一定程度的失衡。 另一方面,防疫物资和生活必需品需求大幅增加,导致防疫物资生产企业、商超、物流送货上门等行业出现人力短缺。 近日,招聘平台BOSS直聘联合店长直聘、蓝鲸招聘推出“桃花行动桃园通道计划”公益项目,针对

    06-18

  • 惠普收购Autonomy超越时代华纳收购AOL,成为史上最糟糕的并购

    惠普收购Autonomy超越时代华纳收购AOL,成为史上最糟糕的并购

    据外媒报道,舆论并未停止对惠普收购Autonomy失败的反思。 美国《纽约时报》援引分析师的话说,这次失败的收购从很多角度来看都更糟糕,甚至超过了被认为是科技史上最糟糕的时代华纳AOL合并。   《纽约时报》表示,在互联网泡沫最严重的时期,时代华纳和美国在线合并,这一

    06-18

  • 合纵文化获数亿元战略投资,鸥翎投资出资

    合纵文化获数亿元战略投资,鸥翎投资出资

    据投资界2月7日消息,合纵文化近日宣布获数亿元战略投资,投资方为鸥翎投资。    据悉,本轮融资完成后,合纵文化将继续拓展海内外音乐空间,同时探索设立“合纵音乐小镇”、“合纵音乐小镇”等综合商业实体。 《合纵街》。   公开资料显示,合宗文化创立于。 是一家以投

    06-18

  • 该公司将在南澳开发一座300MW3.6GWh太阳能储能电站

    该公司将在南澳开发一座300MW3.6GWh太阳能储能电站

    南澳一公顷土地已被开发商收购。 开发商希望采用新颖的技术解决方案,在这片土地上建造一座拥有3.6GWh储能能力的兆瓦级太阳能发电场。 欧洲可再生能源公司 PhotonEnergy 正在致力于推广澳大利亚公司 RayGen 开发的技术。 该技术是一种结合了聚光太阳能发电(CSP)和太阳能光伏

    06-08

  • 传闻开心网、千奥互动等中国社交网站明年将在美国IPO

    传闻开心网、千奥互动等中国社交网站明年将在美国IPO

    据外媒报道,人士近日透露,中国最大的社交网络公司之一的千奥互动已聘请数家投资银行作为公司下一个上半年,我们准备在美国证券市场进行首次公开??募股(IPO)。 千橡互动也成为首个上市的中文Facebook克隆网站。   新闻人士周五透露,千橡互动已聘请瑞士信贷和德意志银行

    06-17

  • 大车拼完成数千万元天使轮融资,胜辉资本

    大车拼完成数千万元天使轮融资,胜辉资本

    投资圈(ID:pedaily)领投 据7月19日消息,近期,其重点发力同城、跨城数字化合约物流服务提供商“太车拼”“金”获数千万元天使轮融资。 本轮融资由胜辉资本领投,零售行业互联网公司“抢滩”战略投资,恒动智汇资本、热金资本跟投,老股东高鹏创宏资本继续追投。 本轮融资

    06-17

  • 双成药业8日登陆深交所,多家PE机构享受IPO盛宴

    双成药业8日登陆深交所,多家PE机构享受IPO盛宴

    据投资界8月8日消息,海南双成药业股份有限公司(简称“双成药业”)今日登陆深交所,发行100万股,本次发行发行价为20元/股,对应市盈率为35.09倍。 本次募集资金将主要用于现有工厂技术改造和新工厂建设项目以及研发中心建设项目。   招股书显示,今年7月,已有5家境内P

    06-18

  • 充电运营平台蔚景云获数千万元A轮融资,Venture Works投资

    充电运营平台蔚景云获数千万元A轮融资,Venture Works投资

    投资社区(ID:pedaily)12月6日消息,据36氪报道,新能源汽车充电运营平台蔚景云获Venture Works投资数十数百万A轮融资。 据悉,本轮融资将用于蔚景云的产品研发和市场开拓。 据了解,蔚景云是一家成立于2016年的新能源运营服务公司,通过整合市场上离散的充电站/桩,提供充

    06-18