如何自动从 yaml 文件中删除 kubernetes 机密?
How can I automate the removal of kubernetes secrets from a yaml file?
我有一个包含许多 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
---
pip install yq
yq --yaml-output 'select(.kind != "Secret")' input.yaml
您可能需要删除示例末尾的空文档,这会导致输出有点奇怪
注意 还有一个不同的 yq
utility 似乎没有做什么 jq
这样做我不确定如何使它起作用。
使用命令 awk 在每次出现 ---
时拆分文件的 shell 脚本怎么样? (有关示例,请参见此 link 的第 5 和第 6 节。)通过这种方式,脚本可以分别评估每个部分,并将那些不符合 Secret
的部分发送到新的输出文件。
纯粹使用正则表达式,您可以搜索
(^|---).*?kind: Secret.*?(---|$)
并替换为:
---
测试here.
注意:最后,您可能有一些额外的 ---
需要“手动”删除 - 但这应该没什么大不了的。
我有一个包含许多 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
---
pip install yq
yq --yaml-output 'select(.kind != "Secret")' input.yaml
您可能需要删除示例末尾的空文档,这会导致输出有点奇怪
注意 还有一个不同的 yq
utility 似乎没有做什么 jq
这样做我不确定如何使它起作用。
使用命令 awk 在每次出现 ---
时拆分文件的 shell 脚本怎么样? (有关示例,请参见此 link 的第 5 和第 6 节。)通过这种方式,脚本可以分别评估每个部分,并将那些不符合 Secret
的部分发送到新的输出文件。
纯粹使用正则表达式,您可以搜索
(^|---).*?kind: Secret.*?(---|$)
并替换为:
---
测试here.
注意:最后,您可能有一些额外的 ---
需要“手动”删除 - 但这应该没什么大不了的。