Установка без использования компонента Deploy Tools#
Текущая инструкция предназначена для установки без использования компонента Deploy Tools (CDJE) продукта Platform V DevOps Tools (DOT). Для данной установки потребуются скрипты Delivery Lite и DevOps Tools Lite
Установка выполняется последовательно, начиная с Delivery Lite.
Версии пакетов могут отличаться от заданных примеров.
Установка с Delivery Lite#
Более подробная инструкция к скриптам находится в файле README.md в директории Delivery Lite.
Для запуска процесса требуется выполнить следующие шаги:
Распаковать архив дистрибутива в директорию и переключиться на эту директорию:
mkdir dcg unzip ./dcg-1.4.1.1-04-distrib.zip -d dcg cd dcgРаспаковать скрипты Delivery Lite и задать путь к директории в качестве PYTHONPATH:
unzip dcgn-scripts-1.0.0-1-distrib.zip dcgn-1.0.0-scripts-distrib/delivery-lite/* export PYTHONPATH=$PWD/dcgn-1.0.0-scripts-distrib/delivery-liteЗапустить скрипт в режиме dryrun для создания файла build_config.json:
#Для выполнения основной команды требуется модуль pyyaml: sudo pip3 install pyyaml python3 $PYTHONPATH/src/scripts/build_product.py --dryrunВ созданном файле build_config.json добавить параметры в build_args для каждого компонента:
"build_args": { "BASE_IMAGE": "<новый базовый образ>" }Проверенный базовый образ — «BASE_IMAGE»: «openjdk:11-jdk-stretch».
Пример для template-provider, произвести для всех компонентов (docgen-service, template-provider, template-registry, ufs-adapter):
... "template-provider:(...)": { (...) "build": { "build_args": {"BASE_IMAGE": "openjdk:11-jdk-stretch"}, (...) }, ...Запустить скрипт сборки и загрузки образа: (ТУЗ — учетная запись от docker registry):
#Пользователь, запускающий скрипты должен состоять в группе docker или иметь доступ к docker socket без sudo. Пример добавления пользователя в группу: sudo usermod -aG docker ${USER}python3 $PYTHONPATH/src/scripts/build_product.py --config_path 'build_config.json' --user <имя ТУЗ> --password <пароль> --registry <адрес docker registry> --registry_path <путь в docker registry> --push_images trueАдрес docker registry должен быть указан без протокола, например:
registry-1.docker.ioвместоhttps://registry-1.docker.io.Инициализировать БД:
На сервере с БД создать 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
Заменить в SQL-скриптах ниже переменные <DB_SCHEMA_SUFFIX> <DB_NAME> <пароль> и заполнить <dir> (из первого пункта)
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-D-01.004.01-1076-distrib/package/db
Распаковать архив:
unzip ./template-registry-db-D-01.004.01-1076.zipПереключиться на директорию template-registry-db-D-01.004.01-1076
Заполнить файл template-registry-db-D-01.004.01-1076/scripts/properties_block.xml
Параметр db_schema_suffix - аналогично DB_SCHEMA_SUFFIX выше, но с “_” в начале (пример: DB_SCHEMA_SUFFIX = aflt, db_schema_suffix в xml = _aflt)Запустить миграцию:
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Очень важно находиться в директории выше /scripts
Перейти к установке с помощью DevOps Tools Lite (DOT Lite)
Установка с DevOps Tools Lite (DOT Lite)#
Требования для запуска - Выполнена установка с Delivery Lite.
Более подробная инструкция к скриптам находится в файле README.md в директории DOT Lite.
Для запуска процесса установки необходимо произвести настройку конфигурационных файлов:
Из директории, в которую был распакован дистрибутив, переключиться в директорию со скриптами установки:
cd ./owned/dcgn-cfg-D-01.004.01-1953_BD-distrib/package/conf/scripts/install_scripts/
Заполнить файл external_params.yml с обязательными параметрами установки.
Параметры Registry;
Параметры дистрибутива;
Параметры БД;
Параметр пути до keystore (в директории install_scripts должен быть файл db-keystore.jks: корневой сертификат, клиентский и ключ от клиентского);
Указать hostname ingress;
Указать путь к распакованному дистрибутиву (заменить на путь на сервере).
Заполнить файл secrets.yml с обязательными параметрами установки
Заполнить пароль к keystore
Далее требуется выполнить следующие команды:
При необходимости сохранить текущую, уже установленную в namespace конфигурацию, для возможности последующего отката на нее, в случае неуспешной установки текущего дистрибутива:
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 целевого namespace Kubernetes/DropApp (опционально OpenShift);--token- token, используемый для deploy в целевой namespace Kubernetes/DropApp (опционально OpenShift);--namespace- целевой namespace Kubernetes/DropApp (опционально OpenShift), в который будет произведена попытка установки;--dry-run- параметр, управляющий режимом deploy в Kubernetes/DropApp (опционально OpenShift), при указании выполнятся только проверки манифестов со стороны сервера (фактической установки и применения манифестов не произойдет). Используйте данный режим для предварительной проверки валидности настроенных вами параметров (оценки готовности к установке). При необходимости уже применения самих манифестов (реальной установки) не указывайте данный ключ;--dump-file- имя файла, куда сохранить слепок текущих манифестов из Kubernetes/DropApp (опционально OpenShift). Сохраняет только те манифесты, которые планируются к обновлению в рамках текущего дистрибутива (пересекаются по имени с манифестами из текущего дистрибутива). При указании данного ключа не выполняется установка манифестов из текущего дистрибутива. Данный файл в последствии может понадобиться при неуспешной установке текущего дистрибутива, чтобы восстановить предыдущее рабочее состояние (смотри ключ--from-dump);--from-dump- имя файла, из которого сделать восстановление манифестов (предварительно сохранненых ранее при запуске с ключом--dump-file). Возможно указать вместе с ключом--dry-run, для предварительной проверки манифестов (без их реальной установки);--withIstio- параметр, управляющий режимом установки в Kubernetes/DropApp (опционально OpenShift) из каталога конфигураций Istio.
Алгоритм работы скрипта install.sh:
Шаблонизация всех файлов в директории manifests, используя все найденные *.conf и *.yml файлы настроенных параметров. При этом параметры из external_params.yml будут с самым высоким приоритетом.
В зависимости от наличия ключа
--dry-runпроисходит один из следующих шагов:--dry-run: выполняется проверка параметров и манифестов к установке («холостая» установка).--dry-run: выполняется применение манифестов из директории manifests в Kubernetes/DropApp (опционально OpenShift).
При успешном прохождении этапа шаблонизации появится сообщение: «Шаблонизация успешно завершена».
При успешном прохождении этапа установки в Kubernetes/DropApp (опционально OpenShift): «Деплой успешно завершен» или «Деплой в режиме DryRun успешно завершен» при использовании --dry-run.
Успешное завершение скрипта (exit code = 0) подразумевает следующее:
Все манифесты успешно применены в Kubernetes/DropApp (опционально OpenShift).
Все healthcheck-приложения пройдены успешно (readiness probe).
Приложение готово обрабатывать запросы.