Учитывая следующий yaml:
charts:
# repository with Helm charts for creation namespaces
path: ns
pathMonitoringPrometheus: prom
namespaces:
first:
description: "Description of first"
enabled: false
branch: master
bootstrapChart: bootstrap
syncAccessGroups: []
namespace:
role: k8s-role-of-first
istio: disabled
public: view
sources: []
second:
description: "Description of second"
enabled: false
branch: HEAD
bootstrapChart: bootstrap
namespace:
role: k8s-role-of-second
istio: 1-13-2
labels:
label: second
sources:
- http://url.of.second
Как мы можем получить список namespaces
и их значение istio
, если оно отличается от «отключено».
Мы пытаемся использовать инструмент "yq", но я думаю, подойдет любой подход, хотя "yq" был бы предпочтительным подходом.
second, 1-13-2
Используя кислюк/yq, вы можете основывать свой фильтр на jq
.
to_entries
разбивает объект на массив пар ключ-значениеselect
выбирает те элементы, которые соответствуют вашим критериям-r
объединяет желаемый результат.yq -r '
.namespaces
| to_entries[]
| select(.value.namespace.istio != "disabled")
| "\(.key), \(.value.namespace.istio)"
'
second, 1-13-2
При использовании Майкфара/yq фильтр очень похож.
to_entries[]
нужно разделить to_entries | .[]
join
и массиваyq '
.namespaces
| to_entries | .[]
| select(.value.namespace.istio != "disabled")
| [.key, .value.namespace.istio] | join(", ")
'
second, 1-13-2
@SebastiánGreco Добавлен вариант с использованием mikefarah/yq.
это будет делать:
cat /path/tp/your.yaml |yq -r '.namespaces | to_entries[] | "\(.key) \(.value.namespace.istio)"'`
приведет к:
first disabled
second 1-13-2
Блестящий. Большое тебе спасибо. Я видел документы с опцией «-r», но у моего yq ее не было, поэтому я пошел дальше с опциями, которые у меня были. Теперь я знаю, почему у меня не было возможности :)