Перед переходом необходимо подготовить лицензионный файл и пароль от него, при их отсутствии - обратиться в Факт.
Сверьте текущие версии frontend и backend в values.yaml со страницей версий для установки и обновления. Если требуется обновление приложения, выполните его до перехода. Для нового развёртывания через Helmfile укажите те же версии frontend и backend, которые используются в существующей установке; для кастомных образов также проверьте версии ядра приложения.
Перед началом перехода на новый деплой необходимо создать резервную копию, выполнив в текущем бэкенд-поде команду php artisan backup:run (она создастся в папке /var/www/html/storage/backup/названиеМК/) и сохранить её за пределами пода, например, с помощью команды kubectl cp...
Установить утилиту helmfile, актуальную версию можно узнать на https://github.com/helmfile/helmfile/releases, следующие команды на примере версии v1.0.0-rc.8:
mkdir helmfile
wget https://github.com/helmfile/helmfile/releases/download/v1.0.0-rc.8/helmfile_1.0.0-rc.8_linux_amd64.tar.gz
tar -xvf helmfile_1.0.0-rc.8_linux_amd64.tar.gz
cp helmfile /usr/bin
kubectl get ns, обычно это dreamteam.kubectl create ns dreamteam2В новом namespace необходимо создать "секреты" с паролями и сертификатом сайта:
kubectl create secret docker-registry docker-registry --docker-server='https://registry.fact.digital' --docker-username='ПОЛУЧЕННЫЙ_ЛОГИН' --docker-password='ПОЛУЧЕННЫЙ_ПАРОЛЬ' -n dreamteam2
kubectl create secret tls ДОМЕННОЕ_ИМЯ-tls --cert=/ПУТЬ/К/ФАЙЛУ/СЕТИФИКАТА/cert.pem --key=/ПУТЬ/К/ФАЙЛУ/КЛЮЧА/key.pem -n dreamteam2
Далее необходимо подготовить новые настроечные файлы для "варианта разворачивания с helmfile", в соответствии с инструкцией, используя новый namespace.
5.1. На странице версий выбрать подходящий комплект Helmfile и скачать его в рабочую папку. Новый релиз приложения сам по себе не требует нового комплекта.
5.2. Внести изменения в файл base.yaml:
Файл base.yaml создаётся из base.yaml.example в папке со скачанным комплектом Helmfile.
Заполнить значения в соответствии с комментариями. Укажите новый namespace и версии образов из пункта 1:
namespace: dreamteam2
FRONTEND_IMAGE_TAG: "<версия_frontend>"
BACKEND_IMAGE_TAG: "<версия_backend>"
Замените заполнители конкретными тегами перед развёртыванием.
Важно использовать ту же самую БД!
5.3. В файле helmfile.yaml.gotmpl добавьте в существующую секцию environments блок dreamteam2, который будет использовать подготовленный base.yaml:
environments:
dreamteam2:
values:
- base.yaml
Если секция environments уже содержит другие окружения, сохраните их и добавьте dreamteam2 рядом с ними. Не создавайте вторую секцию environments в том же файле.
Если осуществляется переход на кастомный релиз, необходимо выполнить соотетствующую инструкцию Включение возможности кастомизации
Перед удалением старого релиза проверьте, что резервная копия сохранена за пределами pod и содержит необходимые файлы. Проверьте, какие PVC/PV принадлежат старому релизу и как удаление релиза повлияет на их сохранность. Затем удалите старый релиз командой helm uninstall dreamteam -n dreamteam. МК будет недоступна до завершения перехода; названия namespace и релиза даны для примера.
Настроить пути хранения:
7.1. В файле /var/lib/rancher/k3s/server/manifests/local-storage.yaml изменить версию provisioner на 0.0.23
7.2. Изменить путь хранения по умолчанию для pv/pvc:
kubectl edit configmap local-path-config -n kube-system
В открывшемся файле Удалить секцию (в config.json):
"nodePathMap":[
{
"node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
"paths":["/var/lib/rancher/k3s/storage"]
}
]
Добавить параметр (в секцию config.json, вместо удаленной секции):
{
"sharedFileSystemPath":"/var/lib/rancher/k3s/storage"
}
--environment задаёт имя блока в секции environments файла Helmfile. В примере используется dreamteam2, добавленный в пункте 5.3. Новый namespace задаётся отдельно в base.yaml, как показано в пункте 5.2:helmfile --environment dreamteam2 --file helmfile.yaml.gotmpl sync
Приложение должно запуститься, пока БЕЗ ФАЙЛОВ и БЕЗ ЛИЦЕНЗИИ. Нужно открыть админку, с логином-паролем "первого пользователя" и установить лицензию.
После этого необходимо перенести ранее сохранённую резервную копию и восстановить ТОЛЬКО файлы (смотри соответствующую инструкцию).