yq 替换 list yaml 中的值

标签 yq

我下面有一个用于负载均衡器的 k8s list 文件,我这辈子都无法用值替换 $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".

关于yq 替换 list yaml 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70713452/

相关文章:

yq - 如何有条件地使用 "yq"添加/替换数组元素

visual-studio-code - yq 失败并显示 "permission denied"

kubernetes - 使用 yq 替换 docker 镜像的名称

linux - 从 shell 脚本中提取 YAML 中的变量

powershell - 在 PowerShell 中使用 YQ 时出现引用问题

yaml - 使用 yq 遍历数组时使用变量会导致奇怪的行为

arrays - yq (GO/Mike Farah) 递归统一所有数组

bash - yq 根据现有文件创建复杂对象

kubernetes - yq 分割种类和唯一名称 : -s is not keeping unique kind and metadata. 名称