Установка и обновление продукта «Форсайт. Мобильная платформа» на кластере

В этой статье:

Подготовка среды

Установка и обновление продукта «Форсайт. Мобильная платформа»

Обновление продукта «Форсайт. Мобильная платформа» версии 20.10

Выключение монтирования файлов

Добавление hosts-псевдонимов

Удаление продукта «Форсайт. Мобильная платформа» с кластера

Для установки и обновления продукта «Форсайт. Мобильная платформа» на кластере:

  1. Подготовьте среду для установки продукта «Форсайт. Мобильная платформа».

  2. Установите и обновите продукт «Форсайт. Мобильная платформа» на кластере.

  3. Выключите монтирование файлов.

  4. Добавьте hosts-псевдонимы.

После выполнения действий на кластере будет установлен и обновлен продукт «Форсайт. Мобильная платформа».

При необходимости можно удалить мобильную платформу с кластера.

Подготовка среды

Для подготовки среды:

  1. Выполните авторизацию в OpenShift с помощью команды:

oc login -u <логин> -p <пароль> <хост>

В подстановке <хост> укажите хост, на котором содержится API установленного OpenShift.

  1. Создайте пространства имён для оператора 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
  1. Загрузите образы в реестр:

    1. Получите сертификаты для реестра с помощью команды:

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)

Примечание. Созданные переменные доступны только в текущей консоли.

    1. Выполните авторизацию в реестре с помощью команды, выполняемой в текущей консоли:
docker login -u ${CLUSTER_REGISTRY_USERNAME} -p ${CLUSTER_REGISTRY_TOKEN} ${CLUSTER_REGISTRY_HOST}
    1. Подготовьте образы для загрузки. Для этого загрузите архив образов мобильной платформы на текущую виртуальную машину с помощью команды:

docker load -i ./cluster_fmp_23.05.01_151.tgz
    1. Создайте переменную с именами образов:

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», то выполните одно из действий:

{
  "insecure-registries" : ["<хост реестра>"]
}
oc port-forward -n openshift-image-registry svc/image-registry 32000:5000 --address 0.0.0.0
CLUSTER_REGISTRY_HOST=localhost:32000
  1. Установите оператор  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
  1. Установите пакетный менеджер Helm не ниже версии 3.5. Для проверки версии установленного Helm выполните команду:

 helm version

После чего будет возвращена информация о версии Helm:

 << version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"clean", GoVersion:"go1.15.11"}
  1. Подготовьте 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.

После выполнения действий будет подготовлена среда для установки и обновления продукта «Форсайт. Мобильная платформа» на кластере.

Установка и обновление продукта «Форсайт. Мобильная платформа»

Для установки и обновления продукта «Форсайт. Мобильная платформа» на кластере:

  1. Назначьте хост, по которому будет доступен кластер, с помощью команды, выполняемой в консоли виртуальной машины:

CLUSTER_HOST=$(oc get route console -n openshift-console --template='{{ .spec.host }}' | cut -d '.' -f2-)

После выполнения команды генерируется стандартный хост. При необходимости можно задать другой хост вручную.

  1. Установите продукт «Форсайт. Мобильная платформа» с помощью команды:

helm install fmp ./fmp/chart -n fmp \
  -f ./fmp/values.production.yaml \
  --set ingress.host=${CLUSTER_HOST} \
  --timeout 30m0s

Где:

Если установка продукта «Форсайт. Мобильная платформа» должна выполняться от имени другого сервис-аккаунта, то добавьте в команду следующий параметр:

--set django.deployment.serviceAccountName=your-service-account-name

Где:

  1. Обновите установленный продукт «Форсайт. Мобильная платформа» версии 21.04 и выше на кластере с помощью команды:

helm upgrade fmp ./fmp/chart -n fmp \
  -f ./fmp/values.production.yaml \
  --set ingress.host=${CLUSTER_HOST} \
  --timeout 30m0s \
  --atomic

Где:

Если обновление установленного продукта «Форсайт. Мобильная платформа» должно выполняться от имени другого сервис-аккаунта, то добавьте в команду следующий параметр:

--set django.deployment.serviceAccountName=your-service-account-name

Где:

Примечание. Для обновления продукта «Форсайт. Мобильная платформа» версии 20.10 и переноса данных обратитесь к разделу «Обновление продукта «Форсайт. Мобильная платформа» версии 20.10».

После выполнения действий на кластере будет установлен и обновлен продукт «Форсайт. Мобильная платформа».

Обновление продукта «Форсайт. Мобильная платформа» версии 20.10

Для обновления продукта «Форсайт. Мобильная платформа» версии 20.10 на кластере:

  1. Добавьте файл доступа к старому кластеру, который основан на Kubernetes, с наименованием old_cluster_kubeconfig в папку fmp/files.

  2. Включите режим переноса данных со старого кластера с помощью Helm Values:

--set migrateFromOldCluster.enabled=true
--set migrateFromOldCluster.ns=your_old_cluster_namespace

Примечание. Перенос данных осуществляется только при первоначальной установке мобильной платформы. В дальнейшем повторный перенос данных не осуществляется даже при включенных параметрах.

  1. При необходимости передайте значение secretKey со старого кластера для сохранения активных сессий пользователя к мобильной платформе:

--set django.deployment.secretKey=your_old_cluster_secret_key
  1. Установите продукт «Форсайт. Мобильная платформа» с помощью Helm.

После выполнения действий в процессе установки продукта будет создана специальная Job, которая перенесет данные со старого кластера.

Важно. Для успешной работы Job должен обеспечиваться сетевой доступ из нового кластера к старому.

Выключение монтирования файлов

По умолчанию в «Форсайт. Мобильная платформа» используется монтирование файлов с помощью дополнительных разрешений, настроенных для контейнеров:

securityContext:
  capabilities:
    add:
    - SYS_ADMIN
    - DAC_READ_SEARCH
  privileged: true

Для выключения монтирования файлов в «Форсайт. Мобильная платформа» задайте значение enabled:

--set django.deployment.mount.enabled=false

Добавление hosts-псевдонимов

Если стандартный 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 | Добавление и удаление рабочих узлов