yq 替换清单 yaml 中的值

  • 本文关键字:yaml 替换 yq yq
  • 更新时间 :
  • 英文 :


我在下面有一个负载均衡器的 k8s 清单文件,在我的一生中无法将$ipaddress替换为值,我必须覆盖整个文件或部分文件,甚至只是留空。如何仅替换如下所示的$ipaddress

尝试如下例 2:

yq e '.spec|=select(.loadBalancerIP) .ports.port = "172.16.87.98"' manifest.yaml
yq e -i '(.spec|=select(.loadBalancerIP.$ipaddress) = "172.16.87.98"' manifest.yaml
apiVersion: v1
kind: Service
metadata:
name: my-lb-cluster
spec:
loadBalancerIP: $ipaddress
ports:
- name: ssl
port: 8080
selector:
role: webserver
sessionAffinity: None
type: LoadBalancer

如果 YAML 像您的问题一样简单,您可以使用:

yq e -i '.spec.loadBalancerIP = "172.16.87.98"' manifest.yaml

。以更新manifest.yaml并将.loadBalancerIP.spec设置为"172.16.87.98"

我知道已经晚了,但如果你想从变量传递值,这会有所帮助。

export LB_IP=1.1.1.1
yq e -i '.spec.loadBalancerIP= env(LB_IP)' manifest.yaml

最新更新