Обзор развертывания MicroK8s и Nginx на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания системы необходимо наличие сервера с операционной системой Ubuntu. Пользователь, выполняющий установку, должен обладать правами администратора (sudo) для управления пакетами и службами.
Система требует доступа к интернету для загрузки компонентов через репозитории apt и snap. Для работы веб-сервера и панели управления необходимо открыть соответствующие порты в брандмауэре, включая порт 10443 для доступа к панели управления Kubernetes.
Процесс установки приложения¶
Установка платформы осуществляется через пакетный менеджер snap. Процесс включает следующие этапы:
- Обновление индекса пакетов
apt. - Установка пакета
snapdдля поддержки форматаsnap. - Установка платформы
microk8sиз канала, указанного в переменнойmicrok8s_version, с флагомclassic. - Добавление пользователя в группу
microk8sдля предоставления прав на управление кластером без использованияsudoдля командkubectl. - Активация дополнительных модулей (аддонов) платформы:
dnsдля внутренней системы именования.hostpath-storageдля хранения данных на хосте.dashboardдля веб-интерфейса управления.- Ожидание полной готовности кластера с помощью команды
microk8s status --wait-ready. - Создание алиаса для команды
kubectl, чтобы использовать её без префиксаmicrok8s.
Контейнеры Docker и их запуск¶
После установки платформы microk8s развертывается веб-сервер с помощью оркестратора контейнеров. Конфигурация контейнеров описана в файле compose.yml.
Используется образ jonasal/nginx-certbot:latest. Контейнер настроен на перезапуск в режиме unless-stopped.
Основные параметры развертывания контейнера nginx: - Режим сети: host (использует сетевой стек хоста). - Переменная окружения CERTBOT_EMAIL установлена на hkadm@hostkey.com. - Дополнительные переменные загружаются из файла /data/nginx/nginx-certbot.env. - Монтирование внешнего тома nginx_secrets в директорию /etc/letsencrypt для хранения SSL-сертификатов. - Монтирование локальной директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d для пользовательских конфигураций.
Для запуска контейнеров используется команда docker compose с указанным файлом конфигурации.
Прокси серверы¶
В системе развернут прокси-сервер Nginx в контейнере, который также выполняет функции получения и обновления SSL-сертификатов через Certbot.
Конфигурация прокси включает: - Использование внешнего тома nginx_secrets для хранения секретов Let's Encrypt. - Подключение пользовательских конфигурационных файлов из директории /data/nginx/user_conf.d. - Настройку email-адреса для уведомлений от Certbot.
Сервер работает в режиме host, что позволяет ему напрямую слушать порты хоста.
Права доступа и безопасность¶
Пользователь, выполняющий развертывание, добавляется в группу microk8s. Это действие предоставляет права на выполнение команд управления кластером без необходимости использования sudo.
Для доступа к панели управления Dashboard генерируется токен доступа с помощью команды microk8s kubectl create token default. Полученный токен выводится в консоль для последующего использования.
Доступ к веб-интерфейсу панели управления осуществляется через проброс порта. Команда microk8s kubectl port-forward перенаправляет локальный порт 10443 на порт 443 сервиса kubernetes-dashboard в пространстве имен kube-system.
Запуск, остановка и обновление¶
Управление платформой microk8s осуществляется через команды microk8s. Проверка статуса готовности выполняется командой microk8s status --wait-ready.
Для управления контейнером nginx используются стандартные команды docker compose: - Запуск: docker compose up -d - Остановка: docker compose down - Обновление образа: docker compose pull с последующим запуском.
После обновления платформы или контейнеров может потребоваться повторная генерация токена доступа к панели управления.