Установка без использования компонента Deploy Tools (CDJE)#
Инструкция предназначена для установки DCGN без использования программного компонента Deploy Tools (CDJE) продукта Platform V DevOps Tools (DOT). Для данной установки потребуются скрипты Delivery Lite и DevOps Tools Lite, которые поставляются в дистрибутиве по запросу.
Важно
Выполняйте установку последовательно, начиная со скриптов Delivery Lite.
Установка скриптами Delivery Lite#
Примечание
Далее <VERSION> — версия дистрибутива.
Для установки выполните следующие шаги:
Распакуйте архив дистрибутива в директорию и перейдите в эту директорию:
mkdir dcg unzip ./dcg-<VERSION>-distrib.zip -d dcg cd dcgРаспакуйте скрипты Delivery Lite и задайте путь к директории в качестве
PYTHONPATH:unzip dcgn-scripts-<VERSION>-distrib.zip dcgn-<VERSION>-scripts-distrib/delivery-lite/* export PYTHONPATH=$PWD/dcgn-<VERSION>-scripts-distrib/delivery-liteЗапустите скрипт в режиме
dry-runдля создания файлаbuild_config.json:# Для выполнения основной команды требуется модуль pyyaml: sudo pip3 install pyyaml python3 $PYTHONPATH/src/scripts/build_product.py --dry-runДобавьте в созданном файле
build_config.jsonдля каждого компонента (в файлахdocgen-service,template-provider,template-registry,ufs-adapter) параметр вbuild_args:"build_args": { "BASE_IMAGE": "<новый базовый образ>" }Проверенный базовый образ —
"BASE_IMAGE": "openjdk:11-jdk-stretch".Пример для компонента Template Provider
"template-provider:(...)": { "build": { "build_args": {"BASE_IMAGE": "openjdk:11-jdk-stretch"} } }Запустите скрипт сборки и загрузки образа:
Важно
# Адрес docker registry должен быть указан без протокола, например: registry-1.docker.io вместо https://registry-1.docker.io # Пользователь, запускающий скрипты, должен состоять в группе docker или иметь доступ к docker socket без sudo. Пример добавления пользователя в группу: sudo usermod -aG docker ${USER}# ТУЗ — учетная запись от docker registry python3 $PYTHONPATH/src/scripts/build_product.py --config_path 'build_config.json' --user <имя ТУЗ> --password <пароль> --registry <адрес_docker_registry> --registry_path <путь_в_docker_registry> --push_images trueИнициализируйте БД:
На сервере с БД создайте 3 директории под Tablespace и замените
<dir>на локацию, где будут располагаться Tablespace:mkdir <dir>/dcgn_ts_data mkdir <dir>/dcgn_ts_idx mkdir <dir>/dcgn_ts_lobНа сервере с БД убедитесь, что файлы принадлежат системному пользователю БД (
postgresв стандартных настройках):ls -l <dir> drwxr-xr-x 2 postgres postgres 4096 Jun 19 16:17 dcgn_ts_data drwxr-xr-x 2 postgres postgres 4096 Jun 19 16:17 dcgn_ts_idx drwxr-xr-x 2 postgres postgres 4096 Jun 19 16:17 dcgn_ts_lobПри необходимости смените владельца директории:
chown <user> <dir>/dcgn_ts_data chown <user> <dir>/dcgn_ts_idx chown <user> <dir>/dcgn_ts_lobЗамените переменные
<DB_SCHEMA_SUFFIX>,<DB_NAME>,<пароль>и заполните<dir>(из первого пункта) в SQL-скриптах ниже:create user dcgn_<DB_SCHEMA_SUFFIX> with encrypted password '<пароль>'; create schema dcgn_<DB_SCHEMA_SUFFIX>; grant connect on database <DB_NAME> to dcgn_<DB_SCHEMA_SUFFIX>; grant all on schema dcgn_<DB_SCHEMA_SUFFIX> to dcgn_<DB_SCHEMA_SUFFIX>; alter user dcgn_<DB_SCHEMA_SUFFIX> VALID UNTIL 'INFINITY'; grant usage on schema dcgn_<DB_SCHEMA_SUFFIX> to dcgn_<DB_SCHEMA_SUFFIX>; create tablespace dcgn_ts_data owner dcgn_<DB_SCHEMA_SUFFIX> location '<dir>/dcgn_ts_data'; create tablespace dcgn_ts_idx owner dcgn_<DB_SCHEMA_SUFFIX> location '<dir>/dcgn_ts_idx'; create tablespace dcgn_ts_lob owner dcgn_<DB_SCHEMA_SUFFIX> location '<dir>/dcgn_ts_lob';
Запустите Liquibase скрипты:
Перейдите в директорию
owned/dcgn-bin-<VERSION>-distrib/package/db.Распакуйте архив:
unzip ./template-registry-db-<VERSION>.zipПерейдите в директорию
template-registry-db-<VERSION>.Заполните файл
template-registry-db-<VERSION>/scripts/properties_block.xml: параметрdb_schema_suffix— аналогично<DB_SCHEMA_SUFFIX>выше, но с нижним подчеркиванием в начале.Пример
Если значение <DB_SCHEMA_SUFFIX> =
aflt, то значениеdb_schema_suffix=_aflt.Запустите миграцию:
Важно
Необходимо находиться в директории выше
/scripts.java -cp "liquibase-core-4.9.1.jar:postgresql-42.5.1.jar" liquibase.integration.commandline.Main --url="jdbc:postgresql://<DB_HOST>:<DB_PORT>/<DB_NAME>" --changeLogFile=./scripts/0001_changelog.xml --username=dcgn_<DB_SCHEMA_SUFFIX> --password=<пароль> update
Перейдите к установке скриптами DevOps Tools Lite.
Установка скриптами DevOps Tools Lite#
Примечание
Далее <VERSION> — версия дистрибутива.
Для запуска процесса установки необходимо сконфигурировать настройки:
Из директории, в которую был распакован дистрибутив, перейдите в директорию со скриптами установки:
cd ./owned/dcgn-cfg-<VERSION>-distrib/package/conf/scripts/install_scripts/Заполните файл
external_params.ymlс обязательными параметрами установки:параметры Template Registry;
параметры дистрибутива;
параметры БД;
параметр пути до keystore (в директории install_scripts должен быть файл db-keystore.jks: корневой сертификат, клиентский и ключ от клиентского);
hostname Ingress;
путь до распакованного дистрибутива (заменить на путь на сервере).
Заполните файл
secrets.ymlс обязательными параметрами установки:пароль к keystore.
Выполните следующие команды:
при необходимости сохраните текущую конфигурацию, которая используется в пространстве имен, для возможности последующего отката на нее в случае неуспешной установки текущего дистрибутива:
chmod +x install.sh export TOKEN=<token_аккаунта_для_установки_в_k8s> # Создаем dump-файл тех манифестов, которые планируются к обновлению в рамках текущего дистрибутива ./install.sh --server=<адрес_api_сервера_k8s_например_https://api.example.com:6443> --token=$TOKEN --namespace=<имя_name_k8s_куда_устанавливать> --dump-file=<файл_в_которой_будет_сохранена_конфигурация> # Проверяем валидность созданного dump-файла при помощи запуска восстановления из него в "холостом" режиме (--dry-run) ./install.sh --server=<адрес_api_сервера_k8s_например_https://api.example.com:6443> --token=$TOKEN --namespace=<имя_namespace_k8s_куда_устанавливать> --from-dump=<файл_в_которой_будет_сохранена_конфигурация> --dry-runдля установки манифестов из дистрибутива:
chmod +x install.sh export TOKEN=<token_аккаунта_для_установки_в_k8s> ./install.sh --server=<адрес_api_сервера_k8s_например_https://api.example.com:6443> --token=$TOKEN --namespace=<имя_namespace_k8s_куда_устанавливать> --dry-run ./install.sh --server=<адрес_api_сервера_k8s_например_https://api.example.com:6443> --token=$TOKEN --namespace=<имя_namespace_k8s_куда_устанавливать>для восстановления из сохраненного файла конфигурации (в случае неуспешной установки из дистрибутива):
chmod +x install.sh export TOKEN=<token_аккаунта_для_установки_в_k8s> ./install.sh --server=<адрес_api_сервера_k8s_например_https://api.example.com:6443> --token=$TOKEN --namespace=<имя_namespace_k8s_куда_устанавливать> --from-dump=<файл_в_которой_будет_сохранена_конфигурация>где
--server— адрес до API целевого пространства имен среды контейнеризации.--token— токен, используемый для развертывания в целевом пространстве имен среды контейнеризации.--namespace— целевое пространство имен среды контейнеризации для развертывания.--dry-run— режим развертывания в среде контейнеризации, при использовании ключа выполняются только проверки манифестов со стороны сервера, фактической установки и применения манифестов не происходит. Режим служит для предварительной проверки валидности настроенных параметров и оценки готовности к развертыванию.--dump-file— имя файла для сохранения текущих манифестов из среды контейнеризации, сохраняет только те манифесты, которые планируются к обновлению в рамках текущего дистрибутива (пересекаются по имени с манифестами из дистрибутива). При использовании ключа не выполняется установка манифестов из дистрибутива. Из файла можно восстановить предыдущее рабочее состояние при неуспешной установке из дистрибутива (см. ключ--from-dump).--from-dump— имя файла, из которого следует восстановить манифесты, предварительно сохранненые использованием ключа--dump-file. Возможно использование вместе с ключом--dry-runдля предварительной проверки манифестов (без их реальной установки).--withIstio— параметр, управляющий режимом установки в среды контейнеризации из каталога конфигураций Istio.
Алгоритм работы скрипта install.sh
Шаблонизируются все файлы в директории
manifests, c использованием всех найденных файлов параметров*.confи*.yml. При этом параметры изexternal_params.ymlполучают максимальный приоритет.При успешном прохождении этапа шаблонизации выводится сообщение «Шаблонизация успешно завершена».
В зависимости от наличия ключа
--dry-runвыполняется проверка параметров и манифестов («холостая» установка) или выполняется применение манифестов из директорииmanifestsв среде контейнеризации.При успешном прохождении этапа установки в среде контейнеризации выводится сообщение «Деплой успешно завершен» или «Деплой в режиме DryRun успешно завершен» при использовании ключа
--dry-run.Успешное завершение скрипта (exit code = 0) подразумевает следующее:
все манифесты успешно применены в среды контейнеризации;
все healthcheck-приложения пройдены успешно (readiness probe);
приложение готово обрабатывать запросы.