yq 替换清单 yaml 中的值

yq replace value in manifest yaml

我下面有一个用于负载均衡器的 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 并将 .spec 内的 .loadBalancerIP 设置为 "172.16.87.98"