Инструкция по обновлению Monq до версии 7.0.0
Предыдущая версия Monq: 6.12.2
В обновлении:
Продукт | Новая версия |
---|---|
pl | 7.0.0 |
sm | 7.0.0 |
cl | 7.0.0 |
fm | 7.0.0 |
plugins | 7.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: 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
В обновлении:
Продукт | Новая версия |
---|---|
pl | 7.0.1 |
sm | 7.0.1 |
cl | 7.0.1 |
fm | 7.0.1 |
plugins | 7.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: 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
Лицензионный ключ
Перейдите к настройкам пространства и замените лицензионный ключ на новый. Документация.