В документе описано, где хранится конфигурация Мессенджера VK WorkSpace, развернутого через установщик, и как ее резервировать и восстанавливать.
Отдельного механизма хранения конфигурации у Мессенджера нет: она хранится в том же окружении, что и конфигурация установщика, а во время работы сервисов — в кластере etcd.
Конфигурация Мессенджера хранится в следующих местах.
Место | Путь или имя | Что хранится |
|---|---|---|
Файлы конфигурации установщика | /home/deployer/main.yaml, /home/deployer/computes.yaml и другие файлы в /home/deployer/ | Общая конфигурация установки (как у Почты) |
Конфигурация проекта Мессенджера | /home/deployer/projects/vkteams/ (в том числе project.yaml) | Параметры проекта vkteams в установщике |
Helm values сервисов Мессенджера | /home/deployer/projects/vkteams/helm-releases/<релиз>/custom_values.yaml | Параметры развертывания сервисов, например myteam-config-json, stroma, swapper |
Секреты Мессенджера | /home/deployer/secrets/vkteams/secrets.yaml | Пароли, токены и ключи сервисов Мессенджера |
Лицензия и сертификаты | /home/deployer/license_basic, /home/deployer/certificate | Лицензия и сертификаты установки |
Настройки продукта в интерфейсе установщика | Проекты → vkteams | Настройки продукта, включая Prism Tokens. Применяются автоустановкой, Prism Tokens — через static-prismtokens-init |
Кластер etcd | Кластер etcd в namespace im-etcd (поды etcd-0, etcd-1, etcd-2), ключи /vars/services/<сервис>/<installation>/… | Конфигурация сервисов Мессенджера во время работы, например токен и подсети API управления godmod |
ConfigMap и Secret Kubernetes | Namespace vkteams, например ConfigMap go-myteam-admin | Конфигурация сервисов в Kubernetes. Генерируется установщиком из файлов выше |
Файлы установщика, в том числе Helm values и секреты Мессенджера, можно сохранить механизмом слотов на странице Обслуживание → Бэкап (Восстановление системы). Механизм описан в разделах Резервное копирование и восстановление конфигурации Почты и Как восстановить систему через установщик.
Если каталоги Мессенджера не входят в набор файлов слота, сохраните их вручную.
-
Подключитесь к машине с установщиком.
-
Создайте архив с файлами конфигурации:
tar -czf /root/vkteams-config-$(date +%Y%m%d-%H%M%S).tar.gz \-C /home/deployer \main.yaml computes.yaml projects/vkteams secrets/vkteams license_basic certificate -
Скопируйте архив в отдельное хранилище, вне машины с установщиком.
-
Скопируйте архив на машину с установщиком.
-
Распакуйте архив в
/home/deployer:tar -xzf /root/vkteams-config-<дата>.tar.gz -C /home/deployer -
Перезапустите установщик и запустите автоустановку проекта vkteams, чтобы применить конфигурацию.
ConfigMap и Secret в namespace vkteams генерируются установщиком из файлов, перечисленных выше. Основной способ их восстановления — вернуть файлы установщика из резервной копии и запустить автоустановку. Дополнительно можно сохранить их текущее состояние.
-
Выгрузите ConfigMap и Secret namespace
vkteamsв файл:kubectl -n vkteams get configmap,secret -o yaml > /root/vkteams-k8s-config-$(date +%Y%m%d-%H%M%S).yaml -
Скопируйте файл в отдельное хранилище.
-
Примените сохраненный файл:
kubectl -n vkteams apply -f /root/vkteams-k8s-config-<дата>.yaml -
Перезапустите поды сервисов, конфигурация которых изменилась, чтобы они перечитали ConfigMap и Secret.
В кластере etcd в namespace im-etcd хранится конфигурация сервисов Мессенджера во время работы. Проверка результата описана в разделе Восстановление кластера etcd из снапшота.
-
Создайте снапшот с любой из нод кластера:
kubectl -n im-etcd exec -it etcd-0 -c etcd -- etcdctl snapshot save /bitnami/etcd/data/etcd.db -
Скопируйте снапшот на хост:
kubectl cp im-etcd/etcd-0:/bitnami/etcd/data/etcd.db -c etcd /mnt/data/etcd-backups/etcd.db
-
Определите ноды Kubernetes-кластера, на которых запущены поды etcd, и пути, по которым смонтированы их PVC:
kubectl -n im-etcd get po -owidepvs=$(kubectl get pv | grep etcd | awk '{print $1}') && for pv in $pvs; do kubectl get -oyaml pv $pv | grep -E "k3s/pvc|mk-cluster" ; done -
Скопируйте снапшот на каждую из этих нод.
-
На каждой ноде восстановите снапшот в новый каталог:
etcdctl snapshot restore <PATH_TO_SNAPSHOT> --name <NAME_OF_ETCD_NODE> --initial-cluster etcd-0=http://etcd-0.etcd-headless.im-etcd.svc.cluster.local:2380,etcd-1=http://etcd-1.etcd-headless.im-etcd.svc.cluster.local:2380,etcd-2=http://etcd-2.etcd-headless.im-etcd.svc.cluster.local:2380 --initial-cluster-token etcd-cluster-k8s --initial-advertise-peer-urls http://<NAME_OF_ETCD_NODE>.etcd-headless.im-etcd.svc.cluster.local:2380 --data-dir=<PVC_PATH>/data_restoreЗдесь:
PATH_TO_SNAPSHOT— путь к снапшоту на ноде Kubernetes-кластера;NAME_OF_ETCD_NODE— имя etcd-ноды (etcd-0,etcd-1илиetcd-2), для которой выполняется восстановление;PVC_PATH— путь, по которому на ноде смонтирован PVC этой etcd-ноды.
-
Уменьшите число реплик кластера etcd до нуля:
kubectl -n im-etcd scale sts etcd --replicas=0 -
На каждой ноде замените каталог с данными восстановленным:
cd <PVC_PATH>chown -R browser data_restoremv data data_oldmv data_restore data -
Увеличьте число реплик кластера etcd до трех и дождитесь, когда кластер соберется:
kubectl -n im-etcd scale sts etcd --replicas=3
Резервное копирование и восстановление данных STDB описаны в разделе Бэкап и восстановление STDB.