regex - 如何自动从Yaml文件中删除kubernetes secret ?

标签 regex kubernetes sed yaml yq

我有一个包含许多Kubernetes YAML对象的文件。
我正在寻找一种从文本文件中删除所有K8s Secret YAML对象的方法,该文件由YAML块中包含的"kind: Secret"字符串标识。这应该删除从“apiVersion”到“---”之前的所有内容,表示下一个对象的开始。
我没有运气就研究过Sed,Python和yq工具。
YAML可以按任何顺序包含任何数量的 secret 。
如何自动剥离这些“ secret ”块?

apiVersion: v1
data:
  username: dGVzdAo=
  password: dGVzdHBhc3N3b3JkCg==
kind: Secret
metadata:
  name: my-secret-1
type: Opaque
---
apiVersion: v1
kind: Pod
metadata:
  name: test-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: rss-reader
      image: nickchase/rss-php-nginx:v1
      ports:
        - containerPort: 88
---
apiVersion: v1
data:
  username: dGVzdAo=
  password: dGVzdHBhc3N3b3JkCg==
kind: Secret
metadata:
  name: my-secret-2
type: Opaque
---

最佳答案

yq 可以做到这一点(以及下面的 jq )

pip install yq
yq --yaml-output 'select(.kind != "Secret")' input.yaml
您可能需要在示例末尾删除空文档,这会导致输出中有些奇怪
请注意,还有另一种 yq utility似乎并没有执行jq所执行的操作,因此我不确定如何使它起作用。

关于regex - 如何自动从Yaml文件中删除kubernetes secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62566314/

相关文章:

mysql - MySQL中有正则表达式替换的功能吗?

regex - Redshift/正则表达式(负向前瞻)不起作用

java - 验证积分表达式的正则表达式(微积分)

python-3.x - 如何使用python删除GKE(Google Kubernetes Engine)集群?

kubernetes - 重新启动集群时出错 : restarting kube-proxy: waiting for kube-proxy to be up for configmap update: timed out waiting for the condition

azure - 证书管理器 - 我的证书的有效期和续订过程

linux - 是否可以在 sed 中使用匹配的字符串作为 shell date 命令的输入?

mysql - 管道 SED 输出到 mysql

sed - 使用sed删除最后一个逗号

javascript - 拆分字符串并在 javascript 加上条件中保留定界符