[Резервное копирование, Kubernetes] Резервное копирование конфигурации ресурсов в Kubernetes
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Администраторы кластеров kubernetes сталкиваются с задачей сохранить конфигурацию ресурсов из пространства имен и перенести в другой кластер, или же сделать резервную копию нестабильной тестовой площадки. С этой задачей без проблем справляется бегло написанный в терминале односторчный скрипт с утилитой kubectl, но что если надоело каждый раз тратить пару минут времени на очередное написание скрипта. Так и появилась утилита kube-dump, по сути это утилита которая умеет только одно - дампить ресурсы кластера.
пример работы утилиты для сохранения всех ресурсов одного неймспейсаПри помощи данной утилиты вы можете сохранить ресурсы кластера в виде чистого yaml манифеста без лишних метаданных.Ключевые особенности:
- Сохранение выполняется только для тех ресурсов, к которым у вас есть доступ на чтение.
- На вход можно передать перечень пространств имен, в противном случае будут использованы все доступные для вашего контекста.
- К сохранению подлежат как ресурсы пространств имен, так и глобальные ресурсы кластера.
- Использовать утилиту можно локально как обычный скрипт или запустить в контейнере или в кластере kubernetes к примеру как CronJob.
- Может создавать архивы и ротировать их за собой.
- Может фиксировать состояние в git репозитории и отправлять в удаленный репозиторий.
- Вы можете указать конкретный перечень ресурсов кластера для выгрузки.
Конфигурацию для утилиты передаем с помощью аргументов командной строки или при помощью экспортированных переменных окружений или прочитанных из .env файла.Начало работыНеобходимый минимум для запуска это наличие установленного kubectl и подключенного в него кластера, а также утилит jq и yq. Более подробно описано на странице документации по локальному запуску, а аргументы командной строки описаны здесь или же доступны по ключу --help.Запустим утилиту для сохранения всех ресурсов кластера:
./kube-dump dump
Если вы не хотите разбираться с установкой зависимостей вы можете воспользоваться контейнером. Подробнее про работу с контейнером описано в этой статье.Получим свежий образ и запустим утилиту для сохранения пространств имен dev и prod в смонтированную директорию /dump, где для доступа к кластеру мы пробрасываем в контейнер свой конфигурационный файл от kubectl.
docker pull woozymasta/kube-dump:latest
docker run --tty --interactive --rm \
--volume $HOME/.kube:/.kube \
--volume $HOME/dump:/dump \
woozymasta/kube-dump:latest \
dump-namespaces -n dev,prod -d /dump --kube-config /.kube/config
Установка CronJob в кластерРассмотрим более сложный пример когда контейнер будет запущен в кластере как CronJob который будет каждую ночь снимать дамп ресурсов и фиксировать правки в git репозитории с последующей отправкой в удаленный репозиторий. Пример подробно описан в статье.В данном примере подразумевается что у вас есть доступ к управлению ролями кластера, потому что мы будем использовать для работы ServiceAccount и стандартную роль view. Если же вам не подходит глобальная роль view, вы можете создать свою роль для пространства имен или кластера, в помощь можете взять этот пример.Создадим пространство имен где будет работать наш CronJob и ServiceAccount который будет использовать ClusterRoleBinding для роли view:
kubectl create ns kube-dump
kubectl -n kube-dump apply -f \
https://raw.githubusercontent.com/WoozyMasta/kube-dump/master/deploy/cluster-role-view.yaml
В качестве примера будем использовать авторизацию в GitLab по OAuth токену, по этому создадим секрет с адресом репозитория и токеном для авторизации:\
kubectl -n kube-dump create secret generic kube-dump \
--from-literal=GIT_REMOTE_URL=https://oauth2:$TOKEN@corp-gitlab.com/devops/cluster-bkp.git
Перед установкой настройте переменные окружения под ваши нужды, в примере по умолчаниюустановлен режим копирования пространств имен dev и prod с последующей фиксацией изменений в ветке my-cluster и отправкой в удаленный репозиторий.Настроим CronJob в которм укажем периодичность запуска задания:
spec:
schedule: "0 1 * * *"
Или же установите пример как есть и после отредактируйте его:
kubectl -n kube-dump apply -f \
https://github.com/WoozyMasta/kube-dump/blob/master/deploy/cronjob-git-token.yaml
kubectl -n kube-dump edit cronjobs.batch kube-dump
Планы по дальнейшему развитию
- Реализовать отправку дампов в s3 совместимое хранилище;
- Отправка уведомлений по электронной почте и через веб-хук;
- Git-crypt для шифрования чувствительных данных;
- Автодополнение в Bash/Zsh;
- Поддержка OpenShift.
Также буду рад Вашим комментариям и предложениям с идеями и критикой.Ссылки
===========
Источник:
habr.com
===========
Похожие новости:
- [Облачные вычисления, DevOps, Kubernetes] 11 факапов PRO-уровня при внедрении Kubernetes и как их избежать
- [Open source, Виртуализация, Разработка под Linux, Openshift] 14 лучших практик разработки приложений на OpenShift
- [Java, Go, Профессиональная литература, Kubernetes] Книга «gRPC: запуск и эксплуатация облачных приложений. Go и Java для Docker и Kubernetes»
- [DevOps, Kubernetes] Разворачиваем кластер Kubernetes с помощью Kubernetes (перевод)
- [Системное администрирование, Системное программирование, DevOps] Первый взгляд на Tekton Pipelines (перевод)
- [IT-инфраструктура, Резервное копирование, Облачные сервисы] Вебинар DataLine «Как получить рабочий бэкап: выбираем инструменты резервного копирования» 25 февраля
- [Виртуализация, Резервное копирование, Гаджеты, Киберпанк, Будущее здесь] И снова Notion и еже с ним…
- [Open source, IT-инфраструктура, Серверная оптимизация, DevOps, Kubernetes] KubeHelper - упростите множество повседневных задач с Kubernetes через веб-интерфейс
- [Кодобред, Системное программирование, Разработка под Linux, Лайфхаки для гиков] Локализация своих скриптов на BASH, часть 2
- [Высокая производительность, Профессиональная литература, Микросервисы, Kubernetes] Тестирование микросервисно-ориентированных приложений (перевод)
Теги для поиска: #_rezervnoe_kopirovanie (Резервное копирование), #_kubernetes, #_kubectl, #_kubernetes, #_backup, #_bash, #_rezervnoe_kopirovanie (
Резервное копирование
), #_kubernetes
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 01:41
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Администраторы кластеров kubernetes сталкиваются с задачей сохранить конфигурацию ресурсов из пространства имен и перенести в другой кластер, или же сделать резервную копию нестабильной тестовой площадки. С этой задачей без проблем справляется бегло написанный в терминале односторчный скрипт с утилитой kubectl, но что если надоело каждый раз тратить пару минут времени на очередное написание скрипта. Так и появилась утилита kube-dump, по сути это утилита которая умеет только одно - дампить ресурсы кластера. пример работы утилиты для сохранения всех ресурсов одного неймспейсаПри помощи данной утилиты вы можете сохранить ресурсы кластера в виде чистого yaml манифеста без лишних метаданных.Ключевые особенности:
./kube-dump dump
docker pull woozymasta/kube-dump:latest
docker run --tty --interactive --rm \ --volume $HOME/.kube:/.kube \ --volume $HOME/dump:/dump \ woozymasta/kube-dump:latest \ dump-namespaces -n dev,prod -d /dump --kube-config /.kube/config kubectl create ns kube-dump
kubectl -n kube-dump apply -f \ https://raw.githubusercontent.com/WoozyMasta/kube-dump/master/deploy/cluster-role-view.yaml kubectl -n kube-dump create secret generic kube-dump \
--from-literal=GIT_REMOTE_URL=https://oauth2:$TOKEN@corp-gitlab.com/devops/cluster-bkp.git spec:
schedule: "0 1 * * *" kubectl -n kube-dump apply -f \
https://github.com/WoozyMasta/kube-dump/blob/master/deploy/cronjob-git-token.yaml kubectl -n kube-dump edit cronjobs.batch kube-dump
=========== Источник: habr.com =========== Похожие новости:
Резервное копирование ), #_kubernetes |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 01:41
Часовой пояс: UTC + 5