Перейти к содержанию

Обзор развертывания Incus на сервере

Предварительные требования и базовые условия

Для развертывания платформы контейнеризации и виртуализации Incus требуется операционная система на основе Debian. Процесс установки использует менеджер пакетов APT и зависит от конкретных системных конфигураций для корректной работы.

  • Операционная система: Дистрибутив на базе Debian (требуется кодовое название Debian для настройки репозитория).

  • Привилегии: Для установки пакетов, настройки системных служб и изменения сетевых настроек требуются права root или эквивалентные привилегии sudo.

  • Системные пакеты: Для настройки требуются или устанавливаются следующие базовые инструменты:

  • ca-certificates

  • gnupg

  • incus

  • qemu-system (требуется для поддержки виртуальных машин)

  • incus-ui-canonical (компонент веб-интерфейса)

  • Сетевая конфигурация: На хост-системе должно быть включено пересылание IPv4-пакетов (net.ipv4.ip_forward установлено в 1).

FQDN целевого сервиса

Приложение доступно по определенному полностью доменному имени (FQDN), размещенному в домене hostkey.in. URL-адрес формируется по шаблону на основе идентификатора сервера.

  • Шаблон домена: incus<Server ID>.hostkey.in

  • Полный URL доступа: https://incus<Server ID>.hostkey.in/

  • Внешний порт: 443 (HTTPS)

Структура файлов и каталогов

Установка Incus и связанные с ним прокси-сервисы используют определенные директории для хранения конфигураций, данных и пользовательских сертификатов.

  • Пул хранения Incus: /var/lib/incus/storage-pools/default

  • Файл конфигурации пред-настройки Incus (Preseed): /root/incus-preseed.yml

  • Ресурсы веб-интерфейса: /opt/incus/ui

  • Конфигурация Nginx и прокси:

  • Файл Docker Compose: /root/nginx/compose.yml

  • Конфигурация пользователя Nginx: /data/nginx/user_conf.d/

  • Файл окружения Nginx: /data/nginx/nginx-certbot.env

  • Каталог секретов Nginx: /etc/letsencrypt (монтируется из тома nginx_secrets)

Процесс установки приложения

Приложение Incus устанавливается с помощью менеджера пакетов APT из репозитория Zabbly. Процесс включает добавление ключа репозитория, настройку списка источников и установку основных компонентов.

  1. Настройка репозитория:

  2. Ключ репозитория Zabbly извлекается и сохраняется в /etc/apt/keyrings/zabbly.asc.

  3. Конфигурация репозитория добавляется в /etc/apt/sources.list.d/zabbly-incus-stable.sources.

  4. Установка пакетов:

  5. Пакет incus предоставляет демон и командную строку (CLI).

  6. Пакет qemu-system обеспечивает возможности виртуальных машин.

  7. Пакет incus-ui-canonical предоставляет ресурсы веб-интерфейса.

  8. Инициализация:

  9. Incus инициализируется в неинтерактивном режиме с использованием файла пред-настройки (preseed), расположенного в /root/incus-preseed.yml.

  10. В процессе инициализации создается сетевой мост с именем incusbr0 и пул хранения с именем default, использующий драйвер dir.

  11. Создается профиль с именем default для присоединения корневого диска и сетевого устройства моста к экземплярам.

Права доступа и безопасность

Безопасность обеспечивается с помощью системных групп, ограничений привязки к сетевым интерфейсам и правил брандмауэра, управляемых прокси-слоем.

  • Группы пользователей:

  • Создается системная группа с именем incus-admin.

  • Пользователь root добавляется в группу incus-admin для управления экземплярами Incus.

  • Привязка сети:

  • API и интерфейс Incus настраиваются на привязку ко всем сетевым интерфейсам на порту 8443 (core.https_address установлено в :8443).

  • Службы:

  • Служба incus.socket или incus.service активируется и запускается через systemd.

  • Безопасность прокси:

  • Внешний контейнер Nginx обрабатывает завершение SSL-сессий и открывает порт 443 для доступа из публичного интернета.

  • Конфигурация Nginx перенаправляет запросы к внутренней службе Incus.

Контейнеры Docker и их развертывание

Для управления обратным проксированием и генерацией SSL-сертификатов с помощью Certbot разворачивается контейнер Docker.

  • Образ контейнера: jonasal/nginx-certbot:latest

  • Метод развертывания: docker compose

  • Файл конфигурации: /root/nginx/compose.yml

  • Детали сервиса:

  • Сервис работает с network_mode: host.

  • Для хранения сертификатов Let's Encrypt в каталоге /etc/letsencrypt используется том nginx_secrets.

  • Каталог конфигурации пользователя /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d внутри контейнера.

  • Сервис настроен с параметром restart: unless-stopped.

Прокси-серверы

Доступ к веб-интерфейсу Incus осуществляется через контейнер обратного прокси-сервера Nginx, который обрабатывает завершение SSL-сессий и маршрутизацию доменов.

  • Прокси-сервер: Nginx (запускается в контейнере Docker).

  • SSL/Сертификаты: Управляются Certbot, сертификаты хранятся в томе nginx_secrets.

  • Конфигурация домена:

  • Файл конфигурации Nginx расположен по адресу /data/nginx/user_conf.d/incus<Server ID>.hostkey.in.conf.

  • Правило прокси-сервера направляет трафик с корневого пути (/) к внутреннему экземпляру Incus.

  • Директива Proxy Pass: proxy_pass https://127.0.0.1:8443;

  • Внешний порт: 443 (HTTPS).

Доступные порты для подключения

Система открывает определенные порты для внутреннего управления службами и внешнего доступа пользователей.

Порт Протокол Описание Доступ
443 TCP HTTPS (Внешний доступ через прокси Nginx) Публичный (Внешний)
8443 TCP API и веб-интерфейс Incus (Внутренний) Внутренний (127.0.0.1 или интерфейс хоста)

Запуск, остановка и обновление

Управление службами основного демона Incus и контейнера прокси выполняется через systemd и docker compose соответственно.

  • Управление службой Incus:

  • Служба Incus управляется как юнит systemd.

  • Для обеспечения работы службы и её автоматического запуска при загрузке, запускается юнит incus.socket или incus.service.

  • Управление контейнером прокси:

  • Контейнер прокси Nginx запускается и управляется с помощью Docker Compose из каталога /root/nginx.

  • Команда для запуска/перезапуска прокси:

    docker compose -f /root/nginx/compose.yml up -d
    

  • Обновление конфигурации Incus:

  • Настройка привязки сети выполняется с помощью командной строки Incus:

    incus config set core.https_address :8443
    

  • Управление экземплярами и проектами осуществляется с помощью стандартного инструмента командной строки incus.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×