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

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

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

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

  • Права доступа: для установки и управления службами требуется доступ к учетной записи root.

  • Домен: приложение настроено для работы в зоне hostkey.in.

  • Порты:

  • Внутренний порт: 8080.

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

  • Среда выполнения: для корректной работы приложения Jenkins требуются OpenJDK 21 JRE (openjdk-21-jre) и fontconfig.

FQDN финальной панели управления

Приложение доступно по полному доменному имени (Fully Qualified Domain Name, FQDN), следующему схеме: jenkins-marketplace-app<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Подключение устанавливается по протоколу HTTPS (порт 443).

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

Развертывание создает и использует следующие директории для хранения конфигураций и данных:

  • /root/nginx: директория, содержащая файлы конфигурации контейнера Nginx.

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

  • /data/nginx: базовая директория для данных Nginx и переменных окружения.

  • /usr/share/keyrings/jenkins-keyring.asc: расположение GPG-ключа для репозитория Jenkins.

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

Приложение Jenkins устанавливается через стандартный пакетный менеджер Debian, используя официальный репозиторий Jenkins. Процесс установки включает:

  1. Добавление GPG-ключа Jenkins из https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key.

  2. Настройка официального репозитория Jenkins (https://pkg.jenkins.io/debian-stable binary/).

  3. Установка пакета jenkins.

  4. Установка требуемых зависимостей: fontconfig и openjdk-21-jre.

  5. Включение и запуск службы jenkins через systemd.

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

  • Межсетевой экран (Firewall): доступ контролируется внешним портом 443 (HTTPS). Внутренняя служба работает на порту 8080 и не экспонируется напрямую во внешнюю сеть; она проксируется через Nginx.

  • Настройка прокси: настроен обратный прокси (reverse proxy) для пересылки трафика с внешнего порта на внутренний экземпляр Jenkins по адресу 127.0.0.1:8080.

  • SSL/TLS: управление SSL-сертификатами осуществляется через Certbot в контейнере Nginx.

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

Прокси и управление SSL обрабатываются контейнерами Docker. Контейнер разворачивается с помощью docker compose на основе файла конфигурации, расположенного по адресу /root/nginx/compose.yml.

Детали контейнера следующие:

  • Название службы (Service Name): nginx

  • Образ (Image): jonasal/nginx-certbot:latest

  • Политика перезапуска (Restart Policy): unless-stopped

  • Режим сети (Network Mode): host

  • Переменная окружения: CERTBOT_EMAIL=hkadm@hostkey.com

  • Тома (Volumes):

  • nginx_secrets (внешний) сопоставлен с /etc/letsencrypt для SSL-сертификатов.

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

Команда для запуска стека контейнеров: docker compose up -d, выполняемая из директории /root/nginx.

Серверы-прокси

Nginx используется в качестве обратного прокси для обеспечения безопасности и маршрутизации трафика к приложению Jenkins.

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

  • Пересылка (Proxy Pass): конфигурация Nginx включает директиву для пересылки запросов на http://127.0.0.1:8080.

  • Управление SSL: контейнер Nginx интегрируется с Certbot для автоматической обработки генерации и обновления SSL-сертификатов для настроенного домена.

Настройки прав доступа

  • Директория /root/nginx принадлежит пользователю root с правами доступа 0755.

  • Файл конфигурации compose /root/nginx/compose.yml принадлежит пользователю root с правами доступа 0644.

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

Расположение файлов конфигурации и данных

  • Docker Compose: /root/nginx/compose.yml.

  • Пользовательские конфигурации Nginx: /data/nginx/user_conf.d/<domain>.conf.

  • Окружение Nginx: /data/nginx/nginx-certbot.env.

  • Ключ репозитория Jenkins: /usr/share/keyrings/jenkins-keyring.asc.

  • Список репозиториев Jenkins: /etc/apt/sources.list.d/jenkins.list.

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

Порт Протокол Назначение
8080 HTTP Внутреннее общение между прокси Nginx и Jenkins. Не доступен из внешней сети.
443 HTTPS Внешний доступ пользователей через настроенное доменное имя.

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

Службой приложения Jenkins управляет systemd, в то время как прокси Nginx управляется через docker compose.

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

  • Запуск службы:

    systemctl start jenkins
    

  • Включение службы при загрузке:

    systemctl enable jenkins
    

  • Проверка состояния службы:

    systemctl status jenkins
    

Управление прокси Nginx:

  • Запуск контейнера прокси:

    cd /root/nginx && docker compose up -d
    

  • Остановка контейнера прокси:

    cd /root/nginx && docker compose down
    

  • Просмотр логов контейнера:

    docker logs -f nginx
    

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