В этой статье:
Установка и обновление продукта «Форсайт. Мобильная платформа»
Обновление продукта «Форсайт. Мобильная платформа» версии 20.10
Для установки и обновления продукта «Форсайт. Мобильная платформа» на кластере:
Подготовьте среду для установки продукта «Форсайт. Мобильная платформа».
Установите и обновите продукт «Форсайт. Мобильная платформа» на кластере.
После выполнения действий на кластере будет установлен и обновлен продукт «Форсайт. Мобильная платформа».
При необходимости можно удалить мобильную платформу с кластера.
Для подготовки среды:
Выполните авторизацию в OpenShift с помощью команды:
oc login -u <логин> -p <пароль> <хост>
В подстановке <хост> укажите хост, на котором содержится API установленного OpenShift.
Создайте пространства имён для оператора StackGres с помощью команд:
oc create namespace stackgres
oc create namespace ongres
Также создайте отдельное пространство имён для компонентов мобильной платформы и раздайте права доступа для загрузки образов из пространств имён оператора:
oc create namespace fmp
oc policy add-role-to-group \
system:image-puller system:serviceaccounts:fmp \
--namespace=ongres
oc policy add-role-to-group \
system:image-puller system:serviceaccounts:fmp \
--namespace=stackgres
Загрузите образы в реестр:
Получите сертификаты для реестра с помощью команды:
CLUSTER_REGISTRY_HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
CLUSTER_REGISTRY_USERNAME=$(oc whoami | sed 's/://g')
CLUSTER_REGISTRY_TOKEN=$(oc whoami -t)
Примечание. Созданные переменные доступны только в текущей консоли.
docker login -u ${CLUSTER_REGISTRY_USERNAME} -p ${CLUSTER_REGISTRY_TOKEN} ${CLUSTER_REGISTRY_HOST}
Подготовьте образы для загрузки. Для этого загрузите архив образов мобильной платформы на текущую виртуальную машину с помощью команды:
docker load -i ./cluster_fmp_23.05.01_151.tgz
Создайте переменную с именами образов:
FMP_IMAGES=$(tar -xzf ./cluster_fmp_23.05.01_151.tgz manifest.json --to-command='cat' \
| grep -oP '(?<=("RepoTags":\["))(.*?)(?=("\]))' \
| sed 's/"//g; s/'"'"'//g; s/,/\n/g;')
Пушим образы в registry для кластера:
for orig_image in ${FMP_IMAGES[*]}
do
tag_image=$(echo ${orig_image} | awk -v REGISTRY=${CLUSTER_REGISTRY_HOST} \
'{
n=split($0,arr,"/");
print REGISTRY "/" arr[n-1] "/" arr[n]
}'
)
echo -e "\nТэгируем ${orig_image} -> ${tag_image}"
docker tag ${orig_image} ${tag_image}
echo -e "\nПушим ${tag_image}"
docker push $tag_image
done
Если возникнет ошибка «certificate signed by unknown authority», то выполните одно из действий:
добавьте сертификат при наличии;
если есть корневой доступ, то добавьте в файл /etc/docker/daemon.json запись вида:
{
"insecure-registries" : ["<хост реестра>"]
}
oc port-forward -n openshift-image-registry svc/image-registry 32000:5000 --address 0.0.0.0
CLUSTER_REGISTRY_HOST=localhost:32000
Установите оператор StackGres версии 1.0.0-alpha3 для работы мобильной платформы в кластере с помощью команды:
helm install -n stackgres stackgres-operator \
./stackgres-operator/stackgres-operator-1.0.0-alpha3.tgz \
-f ./stackgres-operator/values.yaml
Установите пакетный менеджер Helm не ниже версии 3.5. Для проверки версии установленного Helm выполните команду:
helm version
После чего будет возвращена информация о версии Helm:
<< version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"clean", GoVersion:"go1.15.11"}
Подготовьте Persistent Volumes для запуска мобильной платформы в кластере в соответствии с таблицей:
Наименование | Тип/Роль | Количество ядер vCPU | Объём vRAM | Тип виртуального диска vStorage |
master-1 | Master | 4 | 16 | - |
master-2 | Master | 4 | 16 | - |
master-3 | Master | 4 | 16 | - |
worker-1 | Worker | 4 | 16 | 10 (localdb), 10, 10, 10 |
worker-2 | Worker | 4 | 16 | 10 (localdb), 10, 10, 10 |
worker-3 | Worker | 4 | 16 | 100 (cachedb), 50 (maindb), 10, 10, 10, 10, 10 |
worker-4 | Worker | 4 | 16 | 100 (cachedb), 50 (maindb), 10, 10, 10, 10, 10 |
В столбце «Тип виртуального диска vStorage» в скобках указан класс «storageClass». Если класс отсутствует, то используется стандартный класс. Persistent Volumes со стандартным классом может запрашиваться без явного указания класса. Нестандартные классы используются для баз данных, основанных на PostgreSQL, из-за того, что OpenShift не определяет оптимальный размер для Persistent Volumes.
После выполнения действий будет подготовлена среда для установки и обновления продукта «Форсайт. Мобильная платформа» на кластере.
Для установки и обновления продукта «Форсайт. Мобильная платформа» на кластере:
Назначьте хост, по которому будет доступен кластер, с помощью команды, выполняемой в консоли виртуальной машины:
CLUSTER_HOST=$(oc get route console -n openshift-console --template='{{ .spec.host }}' | cut -d '.' -f2-)
После выполнения команды генерируется стандартный хост. При необходимости можно задать другой хост вручную.
Установите продукт «Форсайт. Мобильная платформа» с помощью команды:
helm install fmp ./fmp/chart -n fmp \
-f ./fmp/values.production.yaml \
--set ingress.host=${CLUSTER_HOST} \
--timeout 30m0s
Где:
fmp. Наименование кластера;
-n fmp. Наименование созданного пространства имён;
${CLUSTER_HOST}. Хост, по которому будет доступен кластер, например: apps.dev.okd.lan.
Если установка продукта «Форсайт. Мобильная платформа» должна выполняться от имени другого сервис-аккаунта, то добавьте в команду следующий параметр:
--set django.deployment.serviceAccountName=your-service-account-name
Где:
your-service-account-name. Имя сервис-аккаунта.
Обновите установленный продукт «Форсайт. Мобильная платформа» версии 21.04 и выше на кластере с помощью команды:
helm upgrade fmp ./fmp/chart -n fmp \
-f ./fmp/values.production.yaml \
--set ingress.host=${CLUSTER_HOST} \
--timeout 30m0s \
--atomic
Где:
--atomic. Признак внесения изменений при успешном обновлении компонентов мобильной платформы. Если в процессе обновления компонентов возникнет ошибка, то будет выполнен откат всех изменений.
Если обновление установленного продукта «Форсайт. Мобильная платформа» должно выполняться от имени другого сервис-аккаунта, то добавьте в команду следующий параметр:
--set django.deployment.serviceAccountName=your-service-account-name
Где:
your-service-account-name. Имя сервис-аккаунта.
Примечание. Для обновления продукта «Форсайт. Мобильная платформа» версии 20.10 и переноса данных обратитесь к разделу «Обновление продукта «Форсайт. Мобильная платформа» версии 20.10».
После выполнения действий на кластере будет установлен и обновлен продукт «Форсайт. Мобильная платформа».
Для обновления продукта «Форсайт. Мобильная платформа» версии 20.10 на кластере:
Добавьте файл доступа к старому кластеру, который основан на Kubernetes, с наименованием old_cluster_kubeconfig в папку fmp/files.
Включите режим переноса данных со старого кластера с помощью Helm Values:
--set migrateFromOldCluster.enabled=true
--set migrateFromOldCluster.ns=your_old_cluster_namespace
Примечание. Перенос данных осуществляется только при первоначальной установке мобильной платформы. В дальнейшем повторный перенос данных не осуществляется даже при включенных параметрах.
При необходимости передайте значение secretKey со старого кластера для сохранения активных сессий пользователя к мобильной платформе:
--set django.deployment.secretKey=your_old_cluster_secret_key
Установите продукт «Форсайт. Мобильная платформа» с помощью Helm.
После выполнения действий в процессе установки продукта будет создана специальная Job, которая перенесет данные со старого кластера.
Важно. Для успешной работы Job должен обеспечиваться сетевой доступ из нового кластера к старому.
По умолчанию в «Форсайт. Мобильная платформа» используется монтирование файлов с помощью дополнительных разрешений, настроенных для контейнеров:
securityContext:
capabilities:
add:
- SYS_ADMIN
- DAC_READ_SEARCH
privileged: true
Для выключения монтирования файлов в «Форсайт. Мобильная платформа» задайте значение enabled:
--set django.deployment.mount.enabled=false
Если стандартный DNS по каким-то причинам не разрешает нужные адреса, то добавьте hosts-псевдонимы в /etc/hosts с помощью файла fmp/values.production.yaml:
django:
hostAliases:
- ip: "127.0.0.1"
hostnames:
- "foo.local"
- "bar.local"
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
Для удаления продукта «Форсайт. Мобильная платформа» с кластера выполните команду:
helm uninstall fmp -n fmp
После выполнения действия с кластера будет удален продукт «Форсайт. Мобильная платформа».
См. также:
Подготовка и развёртывание отказоустойчивого кластера на основе OKD/OCP | Добавление и удаление рабочих узлов