我有以下 YAML(Kubernetes 部署):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
- name: myapp
image: some-app:latest
ports:
- containerPort: 80
仅使用 Nushell,我想更新名为的image
容器的值。"myapp"
"some-app:1.0.0"
有什么想法可以做到这一点吗?
我完全知道我可以使用多种其他工具,例如kubectl
and/oryq
等。——这更像是一个如何使用 Nushell 过滤和设置数组中的值的一般问题,而不是解决上述实际问题。上述示例主要是为了提供一些“具体”的东西作为示例。
我尝试过一些解决方案,但都没有真正起作用。我的目标是不必编写非常复杂的脚本来实现这一点,因为感觉我错过了一些东西。
例如,我尝试过以下方法:
open ./deployment.yaml | get spec.template.spec.containers | where name == "myapp" | update image "some-app:1.0.0" | collect | save ./deployment.yaml -f
但这会将文件的全部内容替换为:
- name: myapp
image: some-app:1.0.0
ports:
- containerPort: 80