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"
我下面有一个用于负载均衡器的 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"