I try to get a value from a YAML file within a shell:
apiVersion: v1
items:
- apiVersion: v1
kind: Pod
spec:
containers:
hostIP: 12.198.110.192
phase: Running
podIP: 10.244.1.9With kubectl get pods -l run=hello-kube -o yaml | grep podIP: I get this ouput:
podIP: 10.244.1.9My goal is to save that value in a Environment Variable, but I only get the key/value-pair:
export PODIP=$(kubectl get pods -l run=hello-kube -o yaml | grep podIP)With awk:
kubectl get pods -l run=hello-kube -o yaml | awk '/podIP:/ {print $2}'Output:
10.244.1.9
You can also use yq (https://github.com/mikefarah/yq), which is a tool similar to jq.
Then do:
% yq read file.yaml items.0.spec.podIP
10.244.1.9You may also use the format json to get the value with jsonpath, something like,
kubectl get pods -l app=cron -o=jsonpath='{.items[0].status.podIP}'Thanks