Перейти к основному содержимому

Обновление Monq 7.0

Требования

Предыдущая версия Monq: 6.12.2

В обновлении:

ПродуктНовая версия
pl7.0.0
sm7.0.0
cl7.0.0
fm7.0.0
plugins7.0.0

Уровень простоя - полная недоступность системы на время установки инфраструктурного обновления.

Релиз Monq 7.0.0 - Базовая информация

Релиз включает обновление различных модулей Monq. Если установлен только определенный набор модулей, например: pl и cl, то разделы с остальными модулями можно проигнорировать.

!!! ЛИЦЕНЗИЯ !!!

В версии Monq v7.0 производится обновление версии лицензии. Перед выполнением обновления требуется получить новую лицензию и после обновления применить ее на экране управления пространством Monq. Без применения новой лицензии после обновления работа с системой будет ограничена. Получить новую лицензию можно, обратившись в техническую поддержку Monq. Для Monq Free можно получить бесплатную лицензию на сайте. Внимательно отнеситесь к правильности указания доменного имени при выписке новой лицензии, оно должно совпадать с тем значением, которое было указано при установке Monq.

Проведение миграции 6.12.2 -> 7.0.0

Для запуска обновления требуется скачать клиент управления Monq monqctl и выполнить конфигурацию контекста monqctl.

!!! MonqCtl !!!

Минимальная версия monqctl: 1.4.0

Примечание: можно настроить 2 контекста для stage и production одновременно.

Примечание 2: токен для доступа в Monq ReleaseHub для скачивания обновления требуется получить, обратившись в поддержку Monq, либо из письма с регистрацией лицензии.

Выполнить обновление реестра микросервисов

monqctl registry update registry --version=3.6.0

Выполнить предрелизную подготовку

1. Проверить контекст monqctl и статус реестра микросервисов

# Просмотреть текущий контекст, с которым работает monqctl.
monqctl config current-context
# Просмотреть статус реестра микросервисов из контекста.
monqctl registry get status
# Просмотреть статус сервисов в реестре микросервисов из контекста.
monqctl registry get services

Примечание:

В ответе на команду monqctl registry get status вывод будет содержать

-------------------------
Consul | Failed
-------------------------

На данном этапе можно проигнорировать. Сервис Consul добавлен только для возможности получить адрес и токен monqctl, который формирует файл доступа для программы-мигратора. Но для Consul в реестре микросервисов не реализованы методы генерирования шаблонов микросервисов, поэтому и выбрасывается ошибка валидации. Будет исправлено в последующих версиях.

2. Установить контекст релиза, с которым будет работать monqctl в рамках контекста установленного Monq

Команда при этом скачивает и подготавливает релиз:

monqctl release use-version 7.0.0 --product=monq
При обновлении из папки
# Требуется выполнить экспорт релиза в папку
monqctl release version export 7.0.0 --product=monq --dest=<export directory>

# Выполнить команду `use-version` с аргументом `--sourceDir`.
monqctl release use-version 7.0.0 --product=monq --sourceDir=<папка с экспортированным обновлением>

Обновление инфраструктурной части

Произвести генерацию сертификатов, импорт и модификацию шаблонов

Внимание!

Требуется клиент kubectl v1.23.6.

Доступно два способа генерации сертификатов, выполнить необходимо только один.

В автоматическом режиме
monqctl release exec shell --module=pl --file="infra.sh"
В ручном режиме
global_domain=$(monqctl registry get services K8s --output=json | jq -r '.JsonConfig.Parameters[] | select(.Name=="%GlobalDomain%") | .Value')
internal_domain="api.${global_domain}"
cat > monqinternal.cnf <<EOF
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
subjectKeyIdentifier = hash
authorityKeyIdentifier=keyid,issuer
[alt_names]
DNS.1 = ${internal_domain}
EOF
openssl genrsa -out monqinternal.ca.key.pem 2048
openssl req -x509 -new -nodes -key monqinternal.ca.key.pem -days 3650 -out monqinternal.ca.crt.pem -subj "/CN=monq-internal"
openssl genrsa -out monqinternal.key.pem 2048
openssl req -new -key monqinternal.key.pem -out monqinternal.csr.pem -subj "/CN=monq-internal"
openssl x509 -req -in monqinternal.csr.pem -CA monqinternal.ca.crt.pem -CAkey monqinternal.ca.key.pem -CAcreateserial -out monqinternal.crt.pem -days 3650 -extfile monqinternal.cnf
namespace=$(monqctl registry get services KubeOptions --output=json | jq -r '.JsonConfig.KubeNamespace')
kubectl create secret generic -n infra monq-internal-ca \
--from-file=./monqinternal.ca.key.pem --from-file=./monqinternal.ca.crt.pem

# Если secret monq-ca-certificates существует
kubectl get secrets -n ${namespace} monq-ca-certificates -o json | jq --arg cert "$(cat monqinternal.ca.crt.pem | base64)" \
'.data."monqinternal.ca.cert.pem"=$cert' | kubectl apply -f -
# Если secret monq-ca-certificates не существует
kubectl create secret -n ${namespace} monq-ca-certificates --from-file=./monqinternal.ca.crt.pem

kubectl create secret tls -n ${namespace} ${internal_domain}-tls --cert=monqinternal.crt.pem --key=monqinternal.key.pem

monqctl registry get services K8s --output json | jq '.' > registry-k8s-template-backup.json
internal_secrets="[{\"hosts\":[\"${internal_domain}\"],\"secretName\":\"${internal_domain}-tls\"}]"
cat registry-k8s-template-backup.json | jq --argjson secrets ${internal_secrets} '.JsonConfig.Parameters |= . + [{Name:"%InternalIngressSecrets%",Value:$secrets}] | .JsonConfig.ServiceGrpc = {"kind":"Service","apiVersion":"v1","metadata":{"name":"%AppName%","namespace":"%Namespace%","labels":{"app":"%AppName%"}},"spec":{"ports":[{"name":"http-local","protocol":"TCP","port":80,"targetPort":5005},{"name":"grpc-local","protocol":"TCP","port":5006,"targetPort":5006}],"selector":{"app":"%AppName%"},"type":"ClusterIP"}} | .JsonConfig."container-grpc" = {"name":"%AppName%","image":"%PrivateRegistryAddress%/%ContainerName%:%AppVersion%","ports":[{"name":"http-local","containerPort":5005,"protocol":"TCP"},{"name":"grpc-local","containerPort":5006,"protocol":"TCP"}],"env":[{"name":"ASPNETCORE_ENVIRONMENT","value":"%AspnetcoreEnviroment%"},{"name":"ASPNETCORE_APPLICATION_NAME","value":"%Name%"}],"volumeMounts":[{"name":"consul-config-volume","mountPath":"/app/aspnet_consul_config.json","subPath":"aspnet_consul_config.json"},{"name":"monq-ca-certificates","mountPath":"/certs"}],"livenessProbe":{"httpGet":{"path":"/api/version","port":5005,"scheme":"HTTP"},"initialDelaySeconds":10,"periodSeconds":30}}' > registry-k8s-template.json
monqctl registry apply service K8s --file registry-k8s-template.json
consul_cred=$(monqctl registry get services Consul --output=json)
consul_host=$(echo ${consul_cred} | jq -r '.Host')
consul_token=$(echo ${consul_cred} | jq -r '.RootPassword')
modules=$(monqctl instance get version --output=json | jq -r '.[].Modules[].Name')
base_uri="https://${internal_domain}"
for module in ${modules}; do
curl -s -H "X-Consul-Token: ${consul_token}" ${consul_host}/v1/kv/${namespace}/${module}/common-appsettings.json?raw | jq --arg baseuri "${base_uri}" '.BaseUri = $baseuri' | curl -X PUT -s -H "X-Consul-Token: ${consul_token}" --data-binary @- ${consul_host}/v1/kv/${namespace}/${module}/common-appsettings.json
done
context=$(monqctl config current-context)
changed_microservices=$(cat /tmp/monqctl/updates/${context}/monq/7.0.0/package.json | jq -r '.moduleVersions[].changedMicroservices[].name')
for ms in ${changed_microservices}; do kubectl delete ing -n ${namespace} ${ms}; done

Выполнить перезапуск monq

namespace=$(monqctl registry get services KubeOptions --output=json | jq -r '.JsonConfig.KubeNamespace')
kubectl delete po -n ${namespace} --all

Выполнить обновление маршрутизации

monqctl release update routing --module=pl
monqctl release update routing --module=cl
monqctl release update routing --module=sm
monqctl release update routing --module=fm
monqctl release update routing --module=plugins

Monq Platform (pl)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=pl

Выполнить конфигурацию баз данных микросервисов

monqctl release update db pgsql --module=pl --microservice=pl-i18n-service --file pl-i18n-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-userspaces-api-service --file userspace-configuration.sql
monqctl release update db pgsql --module=pl --microservice=pl-user-grants-api-service --file sqls/pl-user-grants-api-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-user-groups-service --file sqls/pl-user-groups-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-work-groups-api-service --file sqls/pl-work-groups-api-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-userspaces-api-service --file sqls/pl-userspaces-api-service.sql
monqctl release update db clickhouse --module=pl --microservice=pl-events-history-api-service --file sqls/pl-events-history-api-service-clickhouse.sql

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=pl --k8s-merge-type=Replace

Запустить миграции с помощью мигратора

monqctl release update migrator --module=pl --command="migrate workGroupKeys"
monqctl release update migrator --module=pl --command="migrate automaton"

Сбросить кэш для микросервисов

monqctl instance clear cache --microservice=pl-i18n-service
monqctl instance clear cache --microservice=pl-userspaces-api-service
monqctl instance clear cache --microservice=pl-user-grants-api-service

Обновить существующие и установить новые библиотеки автоматона

monqctl release update automaton-libraries --module=pl --file=automaton-libs/automaton.core.import
monqctl release update automaton-libraries --module=pl --file=automaton-libs/automaton.signals.import
monqctl release update automaton-libraries --module=pl --file=automaton-libs/automaton.cmdb.import

При ошибке HTTP 500 и сообщении в теле ответа "Operation timeout exception" повторить команды.

Перезапустить микросервисы pl-automaton-v2

monqctl release exec shell --module=pl --file=restart_microservice.sh --arguments="pl-automaton-v2-processor-service"
monqctl release exec shell --module=pl --file=restart_microservice.sh --arguments="pl-automaton-v2-processor-service-runner"

Выполнить удаление устаревших настроек

monqctl release exec shell --module=pl --file=remove-rmq-queue.sh --arguments="pl_automaton_prefilter_service"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="pl-agents-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="pl-agents-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="pl-tags-api-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="pl-tags-api-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="pl-userspaces-api-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="pl-userspaces-api-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="pl-user-groups-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="pl-user-groups-service appsettings-async.json"

Monq Service Monitor (sm)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=sm

Выполнить обновление маршрутизации

monqctl release update routing --module=sm --file monq.json

Выполнить копирования ключа consul для корректной работы миграторов с удаленными микросервисами

monqctl release exec shell --module=sm --file=backup-consul-appsettings-key.sh --arguments="sm-synthetic-triggers-api-service appsettings.json"
monqctl release exec shell --module=sm --file=backup-consul-appsettings-key.sh --arguments="fm-application-form-api-service appsettings.json"

Выполнить конфигурацию баз данных микросервисов

monqctl release update db pgsql --module=sm --microservice=pl-userspaces-api-service --file userspace-configuration.sql
monqctl release update db pgsql --module=sm --microservice=sm-action-generator-service --file sqls/sm-action-generator-service.sql
monqctl release update db pgsql --module=sm --microservice=sm-integral-events-configurator-api-service --file sqls/sm-integral-events-configurator-api-service.sql
monqctl release update db pgsql --module=sm --microservice=sm-rsm-attributes-service --file sqls/sm-rsm-attributes-service.sql
monqctl release update db pgsql --module=sm --microservice=sm-rsm-maps-service --file sqls/sm-rsm-maps-service.sql
monqctl release update db pgsql --module=sm --microservice=sm-rsm-mode-api-service --file sqls/sm-rsm-mode-api-service.sql
monqctl release update db arangodb --module=sm --microservice=sm-rsm-service --file sqls/sm-rsm-service.aql
monqctl release update db pgsql --module=sm --microservice=sm-sla-service --file sqls/sm-sla-service.sql

Добавить новые микросервисы в реестр

monqctl release update microservices --module=sm --microservice=sm-signals-service --skip-k8s
monqctl release update microservices --module=sm --microservice=sm-rsm-attached-files-service --skip-k8s

Выполнить создание схемы БД для новых микросервисов

monqctl release update db pgsql --module=sm --microservice=sm-signals-service --file sqls/sm-signals-service.sql
monqctl release update db pgsql --module=sm --microservice=sm-signals-service --file sqls/sm-signals-service-2.sql
monqctl release update db clickhouse --module=sm --microservice=sm-signals-service --file sqls/sm-signals-service-clickhouse.sql
monqctl release update db pgsql --module=sm --microservice=sm-rsm-attached-files-service --file sqls/sm-rsm-attached-files-service.sql

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=sm --k8s-merge-type=Replace

При обновлении команда выбросит ошибки на сервисах sm-synthetic-triggers-api-service и sm-sla-templates-api-service (пример: The database live_sm_sla_templates_api_service will not be dropped. Drop it manually after the backing up). Эти сервисы удаляются из системы, но при этом не удаляются их базы данных. Выполните резервное копирование баз данных и вручную удалите их после установки релиза Monq 7.0.1. Так же появится ошибка удаления Ingress (пример: Не удалось получить информацию Kubernetes по адресу: /apis/networking.k8s.io/v1/namespaces/staging/ingresses/sm-synthetic-triggers-api-service. Статус: NotFound.). Эта ситуация нормальная, т.к. отдельные ingress по каждому сервису были удалены командой monqctl release exec shell --module=pl --file="infra.sh".

Сбросить кэш для микросервисов

monqctl instance clear cache --microservice=sm-rsm-maps-service
monqctl instance clear cache --microservice=sm-sla-service

Запустить миграции с помощью мигратора

monqctl release update migrator --module=sm --command="migrate config-items-attached-files"
monqctl release update migrator --module=sm --command="migrate config-items-entity-info"
monqctl release update migrator --module=sm --command="migrate rsm-attributes"

Выполнить миграцию вложений КЕ

namespace=$(monqctl registry get services KubeOptions --output=json | jq -r '.JsonConfig.KubeNamespace')
fm_pod=$(kubectl get po -n ${namespace} -l app=fm-application-form-api-service -o=jsonpath='{.items[0].metadata.name}')
sm_pod=$(kubectl get po -n ${namespace} -l app=sm-rsm-attached-files-service -o=jsonpath='{.items[0].metadata.name}')

kubectl cp ${namespace}/${fm_pod}:/storage/data /tmp/fm/data
kubectl cp /tmp/fm/data ${namespace}/${sm_pod}:/storage

Выполнить удаление устаревших настроек

monqctl release exec shell --module=pl --file=remove-rmq-queue.sh --arguments="sm_rsm_service_async"
monqctl release exec shell --module=pl --file=remove-rmq-queue.sh --arguments="sm_sla_templates_api_service"
monqctl release exec shell --module=pl --file=remove-rmq-queue.sh --arguments="sm_synthetic_triggers_service_async"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="sm-rsm-maps-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="sm-rsm-maps-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="sm-rsm-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="sm-rsm-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="sm-zabbix-connector-api-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="sm-zabbix-connector-api-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="sm-sla-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="sm-sla-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="sm-rsm-attributes-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="sm-rsm-attributes-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="sm-integral-events-configurator-api-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="sm-integral-events-configurator-api-service appsettings-async.json"

Сбросить кэш для микросервисов

monqctl instance clear cache --microservice=pl-userspaces-api-service
monqctl instance clear cache --microservice=sm-synthetic-triggers-api-service

Monq Collector (cl)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=cl

Выполнить конфигурацию баз данных микросервисов

monqctl release update db pgsql --module=cl --microservice=cl-streams-service --file sqls/cl-streams-service.sql
monqctl release update db pgsql --module=cl --microservice=pl-userspaces-api-service --file userspace-configuration.sql

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=cl --k8s-merge-type=Replace

Сбросить кэш для микросервисов

monqctl instance clear cache --microservice=pl-userspaces-api-service

Выполнить удаление устаревших настроек

monqctl release exec shell --module=pl --file=remove-registry-appsettings-key.sh --arguments="cl-streams-service appsettings-async.json"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="cl-streams-service appsettings-async.json"

Test Forge (fm)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=fm

Выполнить конфигурацию баз данных микросервисов

monqctl release update db pgsql --module=fm --microservice=pl-userspaces-api-service --file userspace-configuration.sql

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=fm --k8s-merge-type=Replace

При обновлении команда выбросит ошибки на сервисе fm-application-form-api-service (пример: The database live_fm_application_form_api_service will not be dropped. Drop it manually after the backing up.). Этот сервис удаляется из системы, но при этом не удаляется его база данных. Выполните резервное копирование базы данных и вручную удалите ее после установки релиза Monq 7.0.1. Так же появится ошибка удаления Ingress (пример: Не удалось получить информацию Kubernetes по адресу: /apis/networking.k8s.io/v1/namespaces/staging/ingresses/fm-application-form-api-service. Статус: NotFound.). Эта ситуация нормальная, т.к. отдельные ingress по каждому сервису были удалены командой monqctl release exec shell --module=pl --file="infra.sh".

Сбросить кэш для микросервисов

monqctl instance clear cache --microservice=pl-userspaces-api-service

PLUGINS (plugins)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=plugins

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=plugins --k8s-merge-type=Replace

Обновление Monq v7.0.1

Требования

Предыдущая версия Monq: 7.0.0

В обновлении:

ПродуктНовая версия
pl7.0.1
sm7.0.1
cl7.0.1
fm7.0.1
plugins7.0.1

Уровень простоя - частичная недоступность интерфейса во время установки обновления.

Релиз Monq 7.0.1 - Базовая информация

!!!ВНИМАНИЕ!!!

Установка версии Monq 7.0.1 является обязательной, если вы уже установили версию Monq 7.0.0.

В релизе Monq 7.0.1 содержится необходимый мигратор для переноса исторических данных из Monq 6.12.2.

Релиз включает обновление различных модулей Monq. Если установлен только определенный набор модулей, например: pl и cl, то разделы с остальными модулями можно проигнорировать.

Проведение миграции 7.0.0 -> 7.0.1

Для запуска обновления требуется скачать клиент управления Monq monqctl и выполнить конфигурацию контекста monqctl.

!!! MonqCtl !!!

Минимальная версия monqctl: 1.4.0

Примечание: можно настроить 2 контекста для stage и production одновременно.

Примечание 2: токен для доступа в Monq ReleaseHub для скачивания обновления требуется получить, обратившись в поддержку Monq, либо из письма с регистрацией лицензии.

Выполнить предрелизную подготовку

1. Проверить контекст monqctl и статус реестра микросервисов

# Просмотреть текущий контекст, с которым работает monqctl.
monqctl config current-context
# Просмотреть статус реестра микросервисов из контекста.
monqctl registry get status
# Просмотреть статус сервисов в реестре микросервисов из контекста.
monqctl registry get services

2. Установить контекст релиза, с которым будет работать monqctl в рамках контекста установленного Monq. Команда при этом скачивает и подготавливает релиз

monqctl release use-version 7.0.1 --product=monq
При обновлении из папки
# Требуется выполнить экспорт релиза в папку
monqctl release version export 7.0.1 --product=monq --dest=<export directory>

# Выполнить команду `use-version` с аргументом `--sourceDir`.
monqctl release use-version 7.0.1 --product=monq --sourceDir=<папка с экспортированным обновлением>

Monq Platform (pl)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=pl

Выполнить конфигурацию баз данных микросервисов

monqctl release update db pgsql --module=pl --microservice=pl-i18n-service --file pl-i18n-service.sql

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=pl --k8s-merge-type=Replace

Сбросить кэш для микросервисов

monqctl instance clear cache --microservice=pl-i18n-service

Обновить существующие и установить новые библиотеки автоматона

monqctl release update automaton-libraries --module=pl --file=automaton-libs/automaton.core.import

При ошибке HTTP 500 и сообщении в теле ответа "Operation timeout exception" повторить команды.

Перезапустить микросервисы pl-automaton-v2

monqctl release exec shell --module=pl --file=restart_microservice.sh --arguments="pl-automaton-v2-processor-service"
monqctl release exec shell --module=pl --file=restart_microservice.sh --arguments="pl-automaton-v2-processor-service-runner"

Monq Service Monitor (sm)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=sm

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=sm --k8s-merge-type=Replace

Выполнить конфигурацию баз данных микросервисов

monqctl release update db pgsql --module=sm --microservice=sm-rsm-attributes-service --file sqls/sm-rsm-attributes-service.sql

Monq Collector (cl)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=cl

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=cl --k8s-merge-type=Replace

Test Forge (fm)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=fm

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=fm --k8s-merge-type=Replace

PLUGINS (plugins)

Выполнить перекачку контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=plugins

Выполнить конфигурацию микросервисов в реестре для микросервисов из обновления и применить шаблоны в Kubernetes

monqctl release update microservices --module=plugins --k8s-merge-type=Replace

Мигратор данных "Синтетические триггеры" -> "Сигналы"

Запустить миграции с помощью мигратора

monqctl release update migrator --module=sm --command="migrate synthetic-triggers -l 5000"
monqctl release update migrator --module=sm --command="migrate config-items-state-sync"

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

О завершении миграции свидетельствует выведенный отчет, примерно такого содержания:

info: Monq.Sm.Migrator.Commands.Migrators.SyntheticTriggersMigratorCommandHandler[0]
14079 events migrated to 15149 signals. 140/140 is completed.
info: Monq.Sm.Migrator.Commands.Migrators.SyntheticTriggersMigratorCommandHandler[0]
Migration results:
1. Signals are created from the original problems: 330154
1. Of which are open: 630
2. Signals created on linked KEs with another owner: 1086
1. Of which are open: 6
3. Initial problems total: 2099079
1. Of which are open: 862
4. Skipped problems because same signals already exists: 1770000
info: Monq.Sm.Migrator.Commands.Migrators.SyntheticTriggersMigratorCommandHandler[0]
Migration END
The migrator execution finished.
Внимание

Если в результате миграции вы получили сообщение об окончании процесса без отчета, и количество обработанных наборов данных отличается от общего (в примере 138/140), но с сообщением об успешном выполнении миграции "The migrator execution finished.", повторите миграцию.

info: Monq.Sm.Migrator.Commands.Migrators.SyntheticTriggersMigratorCommandHandler[0]
15000 events migrated to 15006 signals. 138/140 is completed.
The migrator execution finished.

Мигратор требователен к ресурсам оперативной памяти, если вы будете наблюдать высокую утилизацию ресурсов, а процесс миграции остановится без завершения самого процесса, можно выполнить следующее:

  • Аварийно завершить процесс командой kill
  • Заново запустить миграцию, уменьшив размер выборки, ключ -l
    Уже смигрированные данные останутся без изменений, программа мигратор их пропустит

Удалить ключ мигратора из consul

monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="sm-synthetic-triggers-api-service-backup appsettings.json sm"
monqctl release exec shell --module=pl --file=remove-consul-appsettings-key.sh --arguments="fm-application-form-api-service-backup appsettings.json fm"

Удалить устаревшие ingress

namespace=$(monqctl registry get services KubeOptions --output=json | jq -r '.JsonConfig.KubeNamespace')
context=$(monqctl config current-context)
changed_microservices=$(cat /tmp/monqctl/updates/${context}/monq/7.0.1/package.json | jq -r '.moduleVersions[].changedMicroservices[].name')
for ms in ${changed_microservices}; do kubectl delete ing -n ${namespace} ${ms}; done

Лицензионный ключ

Активация лицензии Monq

Перейдите к настройкам пространства и замените лицензионный ключ на новый. Документация.