Обзор развертывания Jenkins на сервере¶
Предварительные требования и базовые условия¶
Для развертывания Jenkins на сервере требуются следующие системные характеристики и права доступа:
-
Операционная система: Ubuntu (совместимая с менеджером пакетов
apt). -
Права доступа: Требуется доступ root или права
sudoдля установки системных пакетов, управления службами и настройки Docker. -
Домен: Приложение настроено для работы в зоне
hostkey.in. -
Порты:
-
Внутренний порт приложения:
8080. -
Внешний защищенный порт:
443.
FQDN конечной панели¶
Приложение доступно через полностью квалифицированное доменное имя (FQDN), сформированное с использованием префикса jenkins-marketplace-app и конкретного идентификатора сервера (Server ID). Формат:
jenkins-marketplace-app<Server ID>.hostkey.in:443
Замените <Server ID> на фактический идентификатор, назначенный экземпляру сервера.
Структура файлов и каталогов¶
Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:
-
/root/nginx: Каталог, содержащий конфигурацию Docker Compose для прокси-сервера. -
/root/nginx/compose.yml: Файл Docker Compose, определяющий сервисы Nginx и Certbot. -
/data/nginx/user_conf.d: Каталог для хранения пользовательских файлов конфигурации Nginx для приложения. -
/data/nginx/user_conf.d/jenkins-marketplace-app<Server ID>.hostkey.in.conf: Специфичный файл конфигурации Nginx для экземпляра Jenkins. -
/data/nginx/nginx-certbot.env: Файл окружения для контейнера Nginx-Certbot. -
/etc/default/jenkins: Системный файл конфигурации службы Jenkins. -
/usr/share/keyrings/jenkins-keyring.asc: GPG-ключ для репозитория Jenkins. -
/etc/letsencrypt: Точка монтирования тома для SSL-сертификатов, управляемых контейнером прокси.
Процесс установки приложения¶
Приложение Jenkins устанавливается как нативная системная служба с использованием официального репозитория Jenkins. Процесс включает следующие шаги:
-
Подготовка системы: Индекс пакетов обновляется, и устанавливаются необходимые зависимости, такие как
fontconfigиopenjdk-21-jre-headless. -
Настройка репозитория: GPG-ключ Jenkins загружается и добавляется в системное кольцо ключей. Официальный репозиторий Debian Jenkins добавляется в источники APT.
-
Установка пакета: Пакет
jenkinsустанавливается через менеджер пакетовapt. -
Настройка Java: Переменная
JAVA_HOMEопределяется на основе установленного OpenJDK 21 JRE и явно устанавливается в файле/etc/default/jenkins, чтобы гарантировать использование службы правильной среды выполнения Java. -
Активация службы: Служба Jenkins включается для запуска при загрузке системы и запускается немедленно.
Контейнеры Docker и их развертывание¶
Обратный прокси-сервер и слой терминации SSL развертываются с использованием Docker. Для развертывания используется файл docker compose, расположенный по пути /root/nginx/compose.yml.
Конфигурация контейнера включает:
-
Образ:
jonasal/nginx-certbot:latest. -
Политика перезапуска:
unless-stopped. -
Режим сети:
host. -
Переменные окружения:
-
CERTBOT_EMAIL: Установлено значениеhkadm@hostkey.com. -
Томы:
-
nginx_secrets: Монтирован в/etc/letsencryptдля хранения SSL-сертификатов. -
/data/nginx/user_conf.d: Монтирован в/etc/nginx/user_conf.dдля предоставления пользовательских конфигураций Nginx.
Контейнер запускается с помощью команды:
выполненной из каталога/root/nginx. Прокси-серверы¶
Приложение обслуживается контейнером Nginx, работающим с Certbot для управления SSL.
-
Конфигурация прокси: Файл конфигурации Nginx для приложения находится по пути
/data/nginx/user_conf.d/jenkins-marketplace-app<Server ID>.hostkey.in.conf. -
Маршрутизация: Прокси настроен на пересылку запросов с корневого пути (
/) на внутренний экземпляр Jenkins. -
Целевой бэкенд: Прокси передает трафик на
http://127.0.0.1:8080. -
SSL/TLS: SSL-сертификаты автоматически управляются контейнером
nginx-certbotс использованием томаletsencrypt.
Настройки прав доступа¶
К критическим каталогам и файлам применяются следующие настройки прав доступа:
-
/root/nginx: Владелецroot:root, режим0755. -
/root/nginx/compose.yml: Владелецroot:root, режим0644. -
/usr/share/keyrings/jenkins-keyring.asc: Режим0644. -
/etc/default/jenkins: Изменяется процессом установки для установки переменнойJAVA_HOME.
Расположение файлов конфигурации и данных¶
Основные файлы конфигурации и места хранения данных приведены ниже:
| Файл или каталог | Путь | Описание |
|---|---|---|
| Docker Compose | /root/nginx/compose.yml | Определяет контейнеры Nginx и Certbot. |
| Конфигурация Nginx | /data/nginx/user_conf.d/jenkins-marketplace-app<Server ID>.hostkey.in.conf | Пользовательские правила прокси для Jenkins. |
| Окружение Nginx | /data/nginx/nginx-certbot.env | Переменные окружения для контейнера прокси. |
| Конфигурация Jenkins | /etc/default/jenkins | Конфигурация системной службы, включая JAVA_HOME. |
| SSL-сертификаты | /etc/letsencrypt | Точка монтирования тома для SSL-сертификатов. |
| GPG-ключ | /usr/share/keyrings/jenkins-keyring.asc | Ключ подписи репозитория. |
Доступные порты для подключения¶
Приложение открывает следующие порты:
-
Порт 443: HTTPS-трафик, обрабатываемый контейнером прокси Nginx. Это основная точка входа для внешних пользователей.
-
Порт 8080: Внутренний HTTP-трафик, используемый приложением Jenkins. Этот порт связан с
127.0.0.1и доступен локально только прокси-серверу.
Запуск, остановка и обновление¶
Приложение Jenkins управляется как нативная служба systemd, в то время как прокси управляется через Docker Compose.
Управление службой Jenkins:
-
Запустить службу:
-
Остановить службу:
-
Перезапустить службу:
-
Проверить статус службы:
-
Включить службу при загрузке:
Управление контейнером прокси:
-
Запустить или перезапустить стек прокси:
-
Остановить стек прокси: