Извлечь конкретное значение args из объекта развертывания Kubernetes - PullRequest
0 голосов
/ 17 июня 2020

У меня отображаются аргументы объекта развертывания Kubernetes, как показано ниже

kubectl get  deploy external-dns --output=jsonpath='{.spec.template.spec.containers[0].args}'

Вывод:

[--log-level=info --log-format=text --policy=sync --provider=aws --registry=txt --interval=1m --txt-owner-id=us-west-2:testcluster --source=service --source=ingress --aws-batch-change-size=1000]%  

Я хочу извлечь только это поле --txt-owner-id = us- west-2: значение testcluster ..

Ожидаемый результат (значение этого поля):

us-west-2:testcluster

Я не уверен, помогает ли использование sed или awk .. Или если для этого есть jsonpath. дайте мне знать.

Ответы [ 2 ]

1 голос
/ 17 июня 2020

1: простой способ использовать awk и sed, вы можете попробовать это

kubectl get  deploy external-dns --output=jsonpath='{.spec.template.spec.containers[0].args}'  |awk -F"=" '{print $8}'|sed 's/--source//'

2: используйте grep:

kubectl get  deploy external-dns --output=jsonpath='{.spec.template.spec.containers[0].args}'|grep -oE  '\-\-txt-owner-id=(.*\:\w+){1}[[:space:]]'|sed 's/ //g'|awk -F"=" '{print $2}' 
0 голосов
/ 17 июня 2020

Спасибо .. Я не уверен, что print $ 8 всегда txt-owner-id ..

Ваш ответ подсказал мне эту идею ..

это тоже работает ..

kubectl get  deploy external-dns -n add-ons  --output=jsonpath='{.spec.template.spec.containers[0].args}' |awk -F"txt-owner-id=" '{print $2}'| cut -d " " -f1 
...