kubectl diff и JSON Patch для Kubernetes

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

kuberneteskubectl diffjson patch

ℹ️ Работая с Kubernetes, многие применяют манифесты "вслепую" с помощью kubectl apply. Но как насчёт того, чтобы точно знать, какие изменения вы вносите? А теперь добавим сюда ещё и возможность точечно редактировать ресурсы без редактирования YAML-файлов.

🔍 1. Предпросмотр изменений с kubectl diff

Перед применением манифестов используйте команду:

kubectl diff -f deployment.yaml

❔ Эта команда покажет, какие именно изменения будут внесены в кластер. Вы сможете избежать ненужных изменений и откатить потенциально опасные правки до их применения.

2. Динамическое внесение изменений с JSON Patch

Иногда возникает необходимость временно внести небольшие изменения в существующий ресурс, не правя исходный YAML-файл. Это можно сделать с помощью kubectl patch.

Например, вы хотите изменить количество реплик в существующем Deployment:

kubectl patch deployment my-deployment -n my-namespace --type='json' -p='[{"op": "replace", "path": "/spec/replicas", "value": 5}]'

ℹ️ Преимущества:

  • Нет необходимости редактировать YAML.
  • JSON Patch позволяет четко описать минимальные изменения (например, добавить, удалить или заменить поле).

🦊 3. Интеграция kubectl diff в CI/CD

Чтобы не вносить ошибки в production, добавьте проверку kubectl diff в ваш pipeline. Это позволит DevOps-инженерам заранее видеть, что изменится, и согласовать это с командой:

deploy:
  script:
    - kubectl diff -f deployment.yaml
    - kubectl apply -f deployment.yaml

✳️ Этот подход особенно актуален для тех, кто работает с большими инфраструктурами или CI/CD-пайплайнами, где каждая секунда на счету.

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

🧭 @recura_tech

Иллюстрация инфраструктуры: серверы, контейнеры и сетевые соединения в схематичном стиле, символизирующая Kubernetes и CI/CD‑поток.
Схематичное изображение серверов и связей для визуализации деплоя и инфраструктуры.

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