【发布时间】:2020-10-15 09:03:29
【问题描述】:
我有一个包含许多 Kubernetes YAML 对象的文件。
我正在寻找一种从文本文件中删除所有 K8s Secret YAML 对象的方法,这些对象由 YAML 块中包含的 "kind: Secret" 字符串标识。这应该删除从“apiVersion”到“---”之前的所有内容,表示下一个对象的开始。
我研究过 Sed、Python 和 yq 工具,但没有成功。 YAML 可以包含任意数量的秘密。
如何自动剥离这些“秘密”块?
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
---
【问题讨论】:
-
最好的方法是使用合适的 YAML 解析器。是否有任何“标记”标识每个对象的开始和结束?除了“---”。
-
@virolino
---是兼容的 yaml 解析器分离文档的方式
标签: regex kubernetes sed yaml yq