我有一个包含许多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
---
最佳答案
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/