Развертывание Атомкод в эксплуатационной среде
Для развертывания в эксплуатационной среде Атомкод требуется провести подготовку.
Подготовка к развертыванию
Для работы с проектами, включающими более трех тысяч классов, необходимо дополнить конфигурацию PostgreSQL, исходя из следующего положения: произведение параметров max_connections и max_locks_per_transaction должно быть больше общего количества классов во всех проектах, умноженного на 2,5. Например, если во всех проектах Атомкод создано 50000 классов, значение произведения должно быть 125000. Рекомендуемое значение параметра max_connections равно 500, а значение параметра max_locks_per_transaction должно быть равно 250.
По умолчанию при установке Атомкод max_connections = 500, а max_locks_per_transaction = 64. Значения этих параметров можно изменить в файле group_vars/all.yml директории инсталлятора в переменной postgres_run_params.
Убедитесь в следующем:
- Серверы соответствуют аппаратным и программным требованиям.
- DNS-сервер содержит записи для Сервера Приложений и Сервера БД, а также все серверы и пользовательские компьютеры в сети стенда используют этот DNS-сервер для разрешения имен.
При помощи программы для передачи файлов по ssh (например, WinSCP) переместите архив с дистрибутивом Атомкод в директорию /opt, на серверы с ролями Сервер БД, Сервер Приложений и Ansible-мастер.
Дополнительные действия для сервера под управлением ОС Astra Linux 1.7.5 и выше
В ОС Astra Linux версии 1.7.5 и выше имеется встроенный механизм проверки Docker-образов и Docker-контейнеров наличия уязвимостей. Для установки Атомкод 5.0 и выше отключите эту проверку согласно инструкции, описанной в официальной документации Astra Linux.
В зависимости от версии Docker отключите проверку наличия уязвимостей следующим образом:
-
Для Docker версии 25.0.5.astra2+ci5 и ниже в файле
/etc/docker/daemon.jsonопишите параметрыdebugиastra-sec-level, как показано в следующем примере:{
"debug" : true,
"astra-sec-level" : 6
} -
Для более новых версий Docker в Astra Linux настройте базу данных oval-db, например, с помощью следующей команды:
sudo oval-db config
Подготовка к развертыванию на сервере с ролью Сервер Приложений
Перейдите в консоль ssh на сервер с ролью Сервер Приложений.
Повысьте права командой
sudo -i
Для корректной работы Атомкод необходимо задать значение параметра fs.inotify.max_user_instances в операционной системе не меньше, чем 524288.
Чтобы задать значение параметра, выполните команду
echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Обеспечьте разрешение имени сервера с ролью Сервер Приложений на самом сервере. Для проверки корректности разрешения имени сервера воспользуйтесь командой:
ping <Имя Сервера>
где:
- Имя Сервера: FQDN сервера с ролью Сервер Приложений, например, test.pmd.local.
В результ ате выполнения команды должен отображаться ip-адрес сервера с ролью Сервер Приложений.
Перейдите в директорию /opt командой
cd /opt
Распакуйте архив с дистрибутивом
tar xzvf platformmd.*.tar.gz
Перейдите в директорию /opt/platform/scripts/ командой
cd /opt/platform/scripts/
Добавьте права на запуск файлов командой
chmod +x *.sh
Запустите скрипт подготовки системы в зависимости от ОС:
./prepare_system_AstraLinux.sh;./prepare_system_Ubuntu.sh;./prepare_system_Debian.sh.
Скрипт установит или обновит Docker и прочие необходимые пакеты.
Если на сервере отсутствует подключение к сети Интернет, но существует локальный прокси-сервер для pip-пакетов, создайте файл /etc/pip.conf с содержимым:
[global]
index-url = https://<Адрес прокси сервера>/simple/
trusted-host = <Адрес сервера с прокси>
После создания этого файла все попытки установить пакеты через pip будут выполняться через локальный прокси-сервер, а не из Интернета.
Перезагрузите систему (ответьте Y, система перезагрузится).
Повысьте права после перезагрузки командой
sudo -i
Сертификаты для предварительного развертывания можно создать самостоятельно или взять из архива с дистрибутивом.
-
Для создания сертификата воспользуйтесь Руководством по генерации самоподписанных сертификатов или Вашим удостоверяющим центром.
-
Для использования сертификатов перейдите в директорию
/opt/platform/files/дистрибутива. Для использования своих сертификатов необходимо заменить содержимое файлов сертификатов на свои данные. В директории/opt/platform/files/находятся описания следующих сертификатов:- external-certificate.pem: цепочка сертификатов серверов домена pmd.local, включающая сертификат сервера test.pmd.local, а также все промежуточные УЦ и корневой УЦ для внешнего домена. Сертификаты используются для работы со стендом в браузере по протоколу https. Порядок сертификатов в цепочке следующий:
- сертификат сервера test.pmd.local;
- сертификаты промежуточных удостоверяющих центров;
- корневой сертификат.
- external-certificate.key.pem: ключ сертификата сервера из файла
external-certificate.pem. - external-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ. Это те же, сертификаты, что в файле
external-certificate.pem. - git-root.crt: корневой сертификат, которым подписан сертификат внешнего git-репозитория проектов devtools, если такой сертификат используется.
- llm-root.crt: корневой сертификат, которым подписаны сертификаты, использующиеся на LLM, если такой сертификат используется.
- internal-certificate.pem: цепочка сертификатов аналогичная цепочке в сертификате external-certificate.pem, используется для внутреннего межсервисного взаимодействия стенда. Эта цепочка сертификатов может как совпадать с цепочкой сертификатов из external-certificate.pem, так и отличаться от них.
- internal-certificate.key.pem: ключ сертификата сервера из файла
internal-certificate.pem. - internal-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ для внутреннего домена.
- langfuse.crt: корневой сертификат, которым подписан сертификат сервера Langfuse.
предупреждениеВ составе дистрибутива эти файлы относятся к серверу только в домене
pmd.local. Если сервер с ролью Сервер Приложений находится в другом домене, содержимое файлов с префиксомexternalследует заменить.
Также можно заменить содержимое файлов с префиксомinternal.
Внутренние сертификаты могут не совпадать с внешними. - external-certificate.pem: цепочка сертификатов серверов домена pmd.local, включающая сертификат сервера test.pmd.local, а также все промежуточные УЦ и корневой УЦ для внешнего домена. Сертификаты используются для работы со стендом в браузере по протоколу https. Порядок сертификатов в цепочке следующий:
Запустите скрипт, кото рый скопирует файлы сертификатов командами:
cd /opt/platform/scripts/
./copy_certs.sh
Запустите скрипт, который установит portainer и выгрузит docker-образы Атомкод в локальный docker-registry командой
./install_portainer_and_images.sh
После выполнения скрипта переопределите при необходимости пароль для portainer, перейдя по ссылке https://test.pmd.local:9000.
Предустановленные логин и пароль:
логин: admin
пароль: zaq1!QAZxsw2.
Подготовка к развертыванию на сервере с ролью Сервер БД
Перейдите в консоль ssh на сервер с ролью Сервер БД.
Повысьте права командой
sudo -i
Обеспечьте разрешение имени сервера с ролью с ролями Сервер Приложений и Сервер БД. Для проверки корректности разрешения имени сервера воспользуйтесь командой:
ping <Имя Сервера>
где:
- Имя Сервера: FQDN сервера с ролью Сервер Приложений, например, test.pmd.local.
В результате выполнения команды должен отображаться ip-адрес сервера с ролью Сервер Приложений.
Перейдите в директорию /opt командой
cd /opt
Распакуйте архив с дистрибутивом
tar xzvf platformmd.*.tar.gz
Перейдите в директорию /opt/platform/scripts/ командой
cd /opt/platform/scripts/
Добавьте права на запуск файлов командой
chmod +x *.sh
Сертификаты для предварительного развертывания можно создать самостоятельно или взять из архива с дистрибутивом.
-
Для создания сертификата воспользуйтесь Руководством по генерации самоподписанных сертификатов или Вашим удостоверяющим центром.
-
Для использования сертификатов перейдите в директорию
/opt/platform/files/дистрибутива. Для использования своих сертификатов необходимо заменить содержимое файлов сертификатов на свои данные. В директории/opt/platform/files/находятся описания следующих сертификатов:- external-certificate.pem: цепочка сертификатов серверов домена pmd.local, включающая сертификат сервера test.pmd.local, а также все промежуточные УЦ и корневой УЦ для внешнего домена. Сертификаты используются для работы со стендом в браузере по протоколу https. Порядок сертификатов в цепочке следующий:
- сертификат сервера test.pmd.local;
- сертификаты промежуточных удостоверяющих центров;
- корневой сертификат.
- external-certificate.key.pem: ключ сертификата сервера из файла
external-certificate.pem. - external-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ. Это те же, сертификаты, что в файле
external-certificate.pem. - git-root.crt: корневой сертификат, которым подписан сертификат внешнего git-репозитория проектов devtools, если таковой используется.
- internal-certificate.pem: цепочка сертификатов аналогичная цепочке в сертификате external-certificate.pem, используется для внутреннего межсервисного взаимодействия стенда. Эта цепочка сертификатов может как совпадать с цепочкой сертификатов из
external-certificate.pem, так и отличаться от них. - internal-certificate.key.pem: ключ сертификата сервера из
internal-certificate.pem. - internal-root.crt: цепочка сертификато в, включающая в себя все промежуточные УЦ и корневой УЦ для внутреннего домена.
- langfuse.crt: корневой сертификат, которым подписан сертификат сервера Langfuse.
предупреждениеВ составе дистрибутива эти файлы относятся к серверу только в домене
pmd.local. Если сервер с ролью Сервер Приложений находится в другом домене, содержимое файлов с префиксомexternalследует заменить. Также можно заменить содержимое файлов с префиксомinternal. Внутренние сертификаты могут не совпадать с внешними. - external-certificate.pem: цепочка сертификатов серверов домена pmd.local, включающая сертификат сервера test.pmd.local, а также все промежуточные УЦ и корневой УЦ для внешнего домена. Сертификаты используются для работы со стендом в браузере по протоколу https. Порядок сертификатов в цепочке следующий:
Запустите скрипт, который скопирует файлы сертификатов командами:
cd /opt/platform/scripts/
./copy_certs.sh
Запустите скрипт подготовки системы в зависимости от ОС:
./prepare_system_AstraLinux.sh;./prepare_system_Ubuntu.sh;./prepare_system_Debian.sh.
Скрипт установит или обновит Docker и прочие необходимые пакеты.
Если на сервере отсутствует подключение к сети Интернет, но существует локальный прокси-сервер для pip-пакетов, создайте файл /etc/pip.conf с содержимым:
[global]
index-url = https://<Адрес прокси сервера>/simple/
trusted-host = <Адрес сервера с прокси>
После создания этого файла все попытки установить пакеты через pip будут выполняться через локальный прокси-сервер, а не из Интернета.
Перезагрузите систему (ответьте Y, система перезагрузится).
Повысьте права после перезагрузки командой
sudo -i
Перейдите в директорию с docker-образами командой
cd /opt/platform/docker
Импортируйте docker-образы командой
docker load --input platformmd_DBserver.tar
Подготовка к развертыванию на сервере с ролью Ansible-мастер
Перейдите в консоль ssh на сервер с ролью Ansible-мастер.
Повысьте права командой
sudo -i
Обеспечьте разрешение имени сервера с ролью с ролями Сервер Приложений и Сервер БД. Для проверки корректности разрешения имени сервера воспользуйтесь командой:
ping <Имя Сервера>
где:
- Имя Сервера: FQDN сервера с ролью Сервер Приложений, например, test.pmd.local.
В результате выполнения команды должен отображаться ip-адрес сервера с ролью Сервер Приложений.
Перейдите в директорию /opt командой
cd /opt
Распакуйте архив с дистрибутивом
tar xzvf platformmd.*.tar.gz
Перейдите в директорию /opt/platform/scripts/ командой
cd /opt/platform/scripts/
Добавьте права на запуск файлов командой
chmod +x *.sh
Запустите скрипт подготовки системы в зависимости от ОС:
./prepare_system_AstraLinux.sh;./prepare_system_Ubuntu.sh;./prepare_system_Debian.sh.
Скрипт установит или обновит Docker и прочие необходимые пакеты.
Если на сервере отсутствует подключение к сети Интернет, но существует локальный прокси-сервер для pip-пакетов, создайте файл /etc/pip.conf с содержимым:
[global]
index-url = https://<Адрес прокси сервера>/simple/
trusted-host = <Адрес сервера с прокси>
После создания этого файла все попытки установить пакеты через pip будут выполняться через локальный прокси-сервер, а не из Интернета.
Перезагрузите систему (ответьте Y, система перезагрузится).
Повысьте права после перезагрузки командой
sudo -i
Сертификаты для предварительного развертывания можно создать самостоятельно или взять из архива с дистрибутивом.
-
Для создания сертификата воспользуйтесь Руководством по генерации самоподписанных сертификатов или Вашим удостоверяющим центром.
-
Для использования сертификатов перейдите в директорию
/opt/platform/files/дистрибутива. Для использования своих сертификатов необходимо заменить содержимое файлов сертификатов на свои данные. В директории/opt/platform/files/находятся описания следующих сертификатов:- external-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ для внешнего домена, используется для ссылок
https://test.pmd.local. - internal-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ для внутреннего домена, используется для внутреннего межсервисного взаимодействия.
- langfuse.crt: корневой сертификат, которым подписан сертификат сервера Langfuse.
предупреждениеВ составе дистрибутива эти файлы относятся к серверу только в домене
pmd.local. Если сервер с ролью Сервер Приложений находится в другом домене, содержимое файлов с префиксом external требуется заменить. Домен для внутреннего межсервисного взаимодействия не обязан совпадать с доменом Сервера Приложений. - external-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ для внешнего домена, используется для ссылок
Выполните команды, при помощи которых операционная система будет доверять сертификатам:
cp /opt/platform/files/external-root.crt /usr/local/share/ca-certificates/platformmd-external-root.crt
cp /opt/platform/files/external-root.crt /usr/local/share/ca-certificates/platformmd-internal-root.crt
update-ca-certificates
Выполните скрипт установки ansible:
cd /opt/platform/scripts/
./install_ansible.sh
Скопируйте открытый ключ пользователя ansible из файла /home/ansible/.ssh/id_rsa.pub с сервера с ролью Ansible-мастер на серверы с ролями Сервер Приложений и Сервер БД в содержимое файла /home/ansible/.ssh/authorized_keys.
Выполните скрипт подготовки Inventory-стенда:
Если вы планируете использовать большие языковые модели, то предварительно разверните сервер vLLM.
./make_inventory.sh -s <имя стенда> -t <адрес сервера Приложений> -b <адрес сервера БД> -u <пароль пользователя с правами администратора postgres> -l <пароль пользователя сервисов Атомкод в postgres> -v <версия устанавливаемого релиза Атомкод> -a <ветка> -h <git-хост> -r <репозиторий> -m <расположение git>
где:
- имя сервера Приложений: имя стенда, которое используется для удобства работы с inventory. Имя может как совпадать с FQDN Сервера Приложений так и отличаться. Имя директории стенда в inventory совпадает с именем стенда, так что следует избегать символов, недопустимых в имени директорий;
- имя сервера БД: полное доменное имя сервера с ролью Сервер БД, например, dbserver.pmd.local;
- адрес сервера Приложений: FQDN сервера с ролью Сервер Приложений
- пароль пользователя с правами администратора postgres: пароль для postgres-пользователя с логином postgres, который обладает правами
superuserвpostgresна сервере с ролью Сервер БД; - пароль пользователя сервисов Атомкод в postgres: пароль для postgres-пользователя с логином platform, который будет владельцем баз данных Атомкод в postgres на сервере с ролью Сервер БД;
- версия устанавливаемого релиза Атомкод: версия Атомкод, например, 4.1.0;
- ветка: ветка git-репозитория проектов devtools, например, develop;
- git-хост: адрес сервера с git-репозиториями проектов devtools, например, внутренний хост стенда в домене pmd.local:
http://devtoolsgit.pmd.local:80/git; - репозиторий: имя репозитория проектов devtools, например локально на стенде по-умолчанию создается
pmd-repo; - расположение git: указание на используемый git-репозиторий, если используется внутренний git-репозиторий стенда, то указывается local, если внешний — external.
Пример:
./make_inventory.sh -s appServer -t appServer.pmd.local -b dbServer.pmd.local -u Pass1 -l Pass2 -v 4.1.0 -a develop -h http://devtoolsgit.pmd.local:80/git -r pmd-repo -m local
Откройте в текстовом редакторе файл /opt/platform/installer/inventory/<Имя стенда>/group_vars/all.yml и проверьте, что значения всех параметров заданы верно, следуя комментариям в файле.
Проверьте, что в файле /opt/platform/installer/inventory/<Имя стенда>/hosts.yml указаны верные имена серверов с ролями Сервер Приложений и Сервер БД.
Если необходимо сменить имя внутреннего домена Атомкод, создайте файл /opt/platform/installer/inventory/<Имя стенда>/group_vars/nginxproxy.yml с содержимым:
internal_domain: <внутренний домен> , где <внутренний домен>, например, vector.local.
Скопируйте свой файл лицензии в директорию /opt/platform/installer/files, переименовав его в license.lic.
Если у Вас нет файла лицензии, установите лицензию позже, после развёртывания Атомкод.
Изменение комплекта устанавливаемых сервисов при развертывании Атомкод
Вы можете изменить комплект устанавливаемых сервисов в файле /opt/platform/installer/inventory/<Имя стенда>/group_vars/all.yml. Чтобы изменить комплект устанавляваемых сервисов:
- перейдите в директорию
/opt/platform/installer/group_vars/editions - в этой директории найдите файлы, имена которых совпадают с названием комплекта сервисов;
- просмотрите содержимое этих файлов, чтобы увидеть, какие сервисы и devtools-проекты входят в состав каждого из комплектов;
- закомментируйте ненужные строки в файлах.