当前位置: 首页 > news >正文

找别人做网站怎么防止后门萧山市seo关键词排名

找别人做网站怎么防止后门,萧山市seo关键词排名,松江b2c网站制作价格,做义工的靠谱网站前言: 当我们在使用Kubernetes时,常常需要通过kubectl命令行工具来管理资源。有时我们也想将某个资源的配置导出为YAML文件,这样做有助于版本控制和资源的迁移。然而,默认情况下,使用kubectl get命令导出资源配置会包…

前言:

当我们在使用Kubernetes时,常常需要通过kubectl命令行工具来管理资源。有时我们也想将某个资源的配置导出为YAML文件,这样做有助于版本控制和资源的迁移。然而,默认情况下,使用kubectl get命令导出资源配置会包含一些元数据字段:
r7EUlNNKvc.png
**annotations****, **creationTimestamp**, **resourceVersion**, ****uid**等,这些字段对于备份或版本控制来说并不是必需的,反而可能会造成一些问题。本文将教您如何忽略这些字段,导出一个更干净的YAML配置!

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

一、理解kubectl get命令

在深入了解如何忽略特定字段之前,我们先来了解一下kubectl get命令。

kubectl get cm

image.png
以mysql-config为例:

 kubectl get cm mysql-config -o yaml

以上命令会打印出指定ConfigMap的YAML格式输出,包括所有元数据信息。例如:

apiVersion: v1
data:my.cnf: "[mysqld]\nserver-id=1\ncharacter-set-server=utf8mb4 \nlower_case_table_names= 1\n"
kind: ConfigMap
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"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"}}creationTimestamp: "2023-07-19T07:16:34Z"name: mysql-confignamespace: defaultresourceVersion: "540796275"uid: 19ba11c5-a803-4a1e-8800-c4f569ec092f

为了导出更干净的配置,我们需要去除掉其中不必要的元数据字段。

二、如何忽略特定字段

在Kubernetes中,没有直接忽略特定字段的kubectl选项,但我们可以使用一些工具和技术来实现类似的效果。

方案一:使用kubectl结合文本处理工具

最简单的方法是将kubectl get的输出通过管道传递给文本处理命令来删除不需要的字段。在Linux系统上,我们通常使用grepsed等工具来处理文本。

示例:简单使用grep排除特定行。
kubectl get cm mysql-config -o yaml | grep -v '^\s*creationTimestamp:'

image.png
上述命令将ConfigMap输出的YAML内容中的creationTimestamp行删除了,相似地,您可以添加更多的grep -v来排除其他不需要的字段:

kubectl get cm mysql-config -o yaml | grep -v '^\s*creationTimestamp:'|grep -v '^\s*annotations:'|grep -v '^\s*resourceVersion:'|grep -v '^\s*uid:'

image.png
这里要特别提醒一下:由于 YAML 中这些字段可能有缩进,使用 grep -v 可能不足够灵活来处理所有情况。此外,grep 仅逐行工作,annotations字段可能是多行值,这里并不适用!

示例:使用grep与kubeclt patch结合:
kubectl patch cm mysql-config -p '{"metadata": {"annotations": null, "creationTimestamp": null, "resourceVersion": null, "uid": null}}'
kubectl get cm mysql-config

image.png

ubectl get cm mysql-config -o yaml | grep -v "^\s*annotations:" | grep -v "^\s*creationTimestamp:" | grep -v "^\s*resourceVersion:" | grep -v "^\s*uid:"

image.png
但是,这个方法实际上修改了 ConfigMap。如果你想保持 ConfigMap 不变,这个方法并不适用!
输出到mysql-config文件中:

ubectl get cm mysql-config -o yaml | grep -v "^\s*annotations:" | grep -v "^\s*creationTimestamp:" | grep -v "^\s*resourceVersion:" | grep -v "^\s*uid:" > mysql-config.yaml
示例:使用awk进行复杂的文本处理

如果不想使用grep,而是想继续使用传统的文本处理工具链,awk是一个比grep更强大的文本处理工具,能处理跨行的模式匹配和范围操作。我们可以使用awk来按块处理YAML内容。

以下是一个示例awk脚本,用于删除annotations和其他一些字段:
注: configmap还原为path之前的内容:
image.png
起码保留annotations字段

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

image.png
在上述示例中,当awk遇到以annotations:开头的行时,设置一个标志位a为1,然后在遇到下一个以一些空格后跟文字字符开头的行时,重新设置标志位为0,完成范围的处理。同时,我们检查每一行是否不是要排除的字段,如果是的话,就跳过不打印。

方案二:借助yq工具处理YAML文件

yq是一个强大的YAML处理工具,它类似于JSON的jq工具。你可以利用yq来精准地处理YAML格式的内容。

首先,您需要安装yq。它可以通过包管理工具(如Homebrew、apt等)或直接从其GitHub页面下载。
我的操作系统ubuntu直接使用sudo apt-get install yq 安装:
使用yq删除特定字段的命令如下:

kubectl get cm mysql-config -o yaml | yq eval 'del(.metadata.creationTimestamp, .metadata.resourceVersion, .metadata.uid, .metadata.annotations)' - > mysql-config.yaml

image.png
这个命令将creationTimestampresourceVersionuidannotations字段从YAML中删除,并将结果保存到my-config.yaml文件中。

方案三:自定义Go模板

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

kubectl get cm my-config -o go-template='{{printf "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: %s\nnamespace: %s\ndata:\n" .metadata.name .metadata.namespace}}{{range $key, $value := .data}}{{printf "  %s: |-\n    %s\n" $key $value}}{{end}}' > mysql-config.yaml

image.png
这段命令利用Go模板语法生成一个过滤掉特定Metadatas字段的ConfigMap资源的清单,并保存到mysql-config.yaml

结束语

在实践中,以上的每种方法都有其适用的场合。如果您只是偶尔需要进行这样的操作,简单的文本处理可能就足够了。如果您经常需要处理复杂的YAML文件,那么学习和使用yq将会很有帮助。对于对性能要求较高或者更复杂的处理需求,学习一些关于Go模板的知识会是一笔不错的投资。

希望这篇文章对你有所帮助,如果你有任何问题,欢迎在评论区留言讨论。

http://www.ritt.cn/news/613.html

相关文章:

  • 营销网站设计实验百度快速提交入口
  • 银川做网站最好的公司重庆seo网络推广
  • 西安建站价格表长沙今日头条新闻
  • 专业的设计网站有哪些内容济南百度竞价开户
  • 免费男人做那个的视频网站谷歌关键词搜索
  • 风铃网做微网站要钱吗app营销推广方案
  • 美食网站中饮食资讯该怎么做西安今日头条新闻消息
  • 广州市白云区最新消息博客seo怎么做
  • 阿里云域名怎么做网站seo竞价排名
  • 网站建设 制作公司网站搜索
  • 网站建设战略伙伴有哪些可以免费推广的平台
  • 西安企业名录黄页福州关键词优化平台
  • 摄影网站源码网址信息查询
  • 网站推荐货源上海公司排名
  • 上海企业微信网站制作腾讯会议付费
  • 扬州网站推广本地免费发布信息网站
  • 网站建设意义必要性沧州网站优化
  • 微官网和移动网站区别吗网站制作详细流程
  • 信息化建设 调查报告 乡镇网站百度关键词推广可以自己做吗
  • 国产做的视频网站南宁网站seo排名优化
  • wordpress web service重庆seo培训
  • 网站建设的流程怎么写信息发布网站有哪些
  • 思茅网站建设如何出售自己的域名
  • 做网站的核验单 是下载的吗买外链网站
  • tp框架做的图片网站网址注册在哪里注册
  • 手机做的兼职网站b2b电子商务平台
  • 上海网站建设网页设计抖音代运营公司
  • 企业建设网站的价值5000人朋友圈推广多少钱
  • wordpress建站wifi网络营销策划方案ppt
  • 学做投资网站抖音seo优化系统招商