Использование yq для работы с YAML

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

yqyamlkubernetes

ℹ️ yq — это утилита, которая позволяет работать с YAML-файлами так же, как jq работает с JSON. Это мощный инструмент, особенно полезный при управлении конфигурациями в Kubernetes и других системах, где YAML используется повсеместно.

👨‍💻 1. Установка yq:

sudo apt install yq  # Для Debian/Ubuntu
brew install yq       # Для macOS

🔥 2. Базовые операции:

  • Чтение и вывод данных: хотите быстро прочитать значение конкретного ключа? Например, чтобы получить metadata.name из манифеста Kubernetes
yq '.metadata.name' deployment.yaml
  • Модификация значений: можно легко изменить любое значение. Допустим, нужно изменить реплику в деплойменте на 5
yq '.spec.replicas = 5' -i deployment.yaml

ℹ️ Флаг -i сохраняет изменения прямо в файле.

🔍 3. Сложные фильтры и выборка:

  • ‣ Фильтрация по условиям: допустим, у вас большой файл с несколькими объектами, и вы хотите найти все деплойменты, где реплик больше 3
yq '.items[] | select(.spec.replicas > 3)' large-manifest.yaml
  • ‣ Выборка вложенных данных: для работы с многоуровневыми структурами, например, чтобы получить все контейнеры с определенным образом:
yq '.spec.template.spec.containers[] | select(.image == "nginx:latest")' deployment.yaml

🛞 4. Интеграция с CI/CD:

Если у вас есть пайплайны, которые генерируют конфигурации, yq поможет их быстро править прямо в скрипте. Например, измените образ перед деплоем:

yq '.spec.template.spec.containers[0].image = "my-image:new-tag"' -i deployment.yaml

👨‍💻 5. Конвертация между JSON и YAML:

cat config.json | yq -P   # Преобразование JSON в YAML
cat config.yaml | yq -o=json   # Преобразование YAML в JSON

✳️ Это мощный инструмент, который буквально незаменим для работы с YAML в терминале. Если вы устали от бесконечных правок конфигураций вручную или хотите автоматизировать обработку YAML, yq станет отличным дополнением в вашем наборе инструментов!

tags: #полезно #bash #k8s #yaml

🧭 @recura_tech

Скриншот терминала с примерами команд yq: чтение, фильтрация и изменение значений в YAML-файлах, показаны команды для Kubernetes и CI/CD.
Пример команд yq и вывода в терминале для работы с манифестами Kubernetes.

Читайте так же