Угадай, данную статью написал ChatGPT или нет? Хотите потестировать приложение, или опробовать в работе инструмент? В этой статье опишу то, как организовал тестовый стенд на Linux. Стенд поддерживает работу с доменами, умеет генерировать TLS сертификаты, легко масштабируется, окружение строится по принципе IaaC, не требует много ресурсов, легко разворачивается скриптами или SCM, есть UI, не зависит от внешних сервисов. Я являюсь системным инженером и наиболее эффективным языком для инструкций считаю "птичий" технический язык. Содержимое представляет собой последовательность команд с вкраплением комментариев, по которым коллега может однозначно понять этапы построения окружения без лишних слов. А дополнительную информацию о перечисленных инструментах можно легко получить уже из документации и после чего внести правки для тестового стенда. Кроме примеров кода и команд опишу те плюсы и те минусы, которые свойственны этой архитектуре, как бы громко это не звучало.  Конфигурация обыденная и не представляет ценности или сложности с точки зрения моего опыта, но может пригодится начинающим инженерам или даже опытным программистам, которые пишут код для сервисов или используют сервисную архитектуру для решения задач, но не погружаются в технические детали. Nomad — https://www.nomadproject.ioConsul — https://www.consul.ioVault    — https://www.vaultproject.ioTraefik — https://traefik.ioPacker — https://www.packer.ioDocker — http://docker.io Набор инструментов с легкостью умещается на небольшой виртуальной машине Инженер использует на практике современные подходы по релизу и выкладке программного обеспечения В случае необходимости стенд легко масштабируется в боевое окружение. Отлично подходит для MVP проекта Не подходит для отладки "на лету", но такая возможность есть Не пользуется популярностью Код приложения собирается с помощью Packer  в образ и размещается на локальном сервере (аналог Docker Registry). На данном этапе можно потренироваться с версионированием и работой в различных окружениях. Приложение запускается в виде контейнера Docker и вместе с тем появляется возможность оркестрации, т. е. множественных запусков и стратегий обновления контейнеров с помощью Nomad. Секретные данные передаются в контейнер шаблонами go-template или через переменные окружения из Vault. В случае Web-приложения или приложения с административным интерфейсом в Traefik создаются точки входа HTTPS с сертификатами TLS от Let'sEncrypt. Я буду приводить примеры установки и настройки сервера для Ubuntu, но различия с другими дистрибутивами будут только на этапе установки пакетов. Для тестового стенда подойдет виртуальная машина с 2 ядрами, 4Г памяти и диском объемом 20Г.  Можете оценить объем используемой памяти на примере моего стенда: Это полностью запущенный стенд состоящий из 5 сервисов на 4Г памяти (45% занято). Дороже всего обходится секретность. https://developer.hashicorp.com/nomad/downloadshttps://docs.docker.com/engine/install/ubuntu/ Я не учитываю блокировки доступа из России. Сейчас нам нужно запустить локальное хранилище образов, которое будет работать идентично публичному облаку или внутреннему в компании. Создаем файл с описанием сервиса docker-compose.yml И файл с конфигурацией сервиса config.yml После запуска наши образы будут храниться в папке /var/lib/registry Запускаем Генерируем ключ шифрования Создаем файл /etc/consul.d/lab_consul.hcl Запускаем Проверяем Панель по адресу Создаем файл /etc/vault.d/vault.hcl Запускаем В Vault нам потребуется подключить модуль для хранения наших секретов  Теперь сохраним токен Consul в хранилище Vault Панель по адресу Создаем файл /etc/nomad.d/lab_nomad.hcl Запускаем Панель по адресу Создаем файл  traefik.nomad Проверяем наш конфиг и применяем Панель по адресу Создаем файл whoami.pkr.hcl И запускаем сборку В конце сборки будет указан адрес образа для следующего шага Создаем файл whoami.nomad Проверяем и запускаем наш сервис Проверить можно по адресу После запуска обработать напильником... Думаю на примере готового приложения дальше будет разобраться попроще. Скрипт не идемпотентный, будте осторожны! Запускайте только на новой виртуальной машине с Ubuntu. Посмотреть все доступные адреса панелей можно так https://www.waypointproject.io? Оригинал тут