Пошаговое руководство с веб-сервером NGINX
Дженкинс - один из распространенных инструментов, которые можно встретить в стратегии DevOps любой компании. Конвейер как код - один из востребованных навыков, которым вам нужно овладеть, если вы действительно увлекаетесь DevOps. От создания приложения до их развертывания в различных средах Jenkins может позаботиться о сквозном конвейере. Вы даже можете спроектировать конвейер для всего процесса.
В этом посте мы увидим, как настроить обратный прокси для экземпляра Jenkins на AWS EC2.
- Предварительные требования Jenkins
- Предварительные требования к AWS
- Установка Jenkins на EC2
- Зачем нужен обратный прокси
- Настроить обратный прокси-сервер NGINX
- Тестирование
- Резюме
- Заключение
Предпосылки Jenkins
Единственное предварительное условие для работы Jenkins на вашем компьютере - это Java. Вам нужно установить Java и другой способ запуска Jenkins через Docker. Мы расскажем об этом в отдельной статье. Вы можете установить открытый JDK по следующей ссылке. Вы также можете пройти через раздел предварительных требований на странице «Установка Jenkins».
Если вы новичок в Jenkins или только начинаете, вы можете прочитать следующую статью.
Предварительные требования AWS
Amazon - ведущий поставщик облачных услуг и пионер облачных вычислений. AWS предоставляет более 200 сервисов, и очень важно знать, какой сервис выбрать для своих нужд.
Если вы новичок в AWS или только начинаете, вы можете прочитать следующую статью.
Установка Jenkins на EC2
Вот подробная статья о том, как установить Jenkins на AWS EC2. Я использовал дистрибутив CentOS Linux для установки Jenkins, и вы можете следовать аналогичной инструкции для любого другого дистрибутива.
Вы можете получить доступ к экземпляру Jenkins на общедоступном IPv4-адресе виртуальной машины с портом 8080
, как показано ниже. Например, если общедоступный IP-адрес 18.117.117.219 и вы можете получить доступ к Jenkins с этим адресом https://18.117.117.219:8080
Зачем нужен обратный прокси
Вы можете настроить альтернативные серверы для связи с веб-браузерами от имени Jenkins, а также это снимает с Jenkins большую часть работы, такой как шифрование SSL или доставка статических изображений.
Есть еще одна причина, по которой, если вы хотите получить доступ к экземпляру Jenkins, вам нужно открыть весь трафик для получения HTTP-запросов. Вам нужно либо запустить сервер Jenkins на порту 80 вместо 8080, либо открыть его для всего трафика.
Обратный прокси-сервер также будет полезен для масштабирования и балансировки нагрузки. Что происходит, когда вы запускаете Jenkins на нескольких серверах, вам необходимо настроить балансировку нагрузки, чтобы входящий запрос перенаправлялся на несколько серверов Jenkins.
Настроить обратный прокси-сервер NGINX
Сначала давайте запустим следующую команду, чтобы добавить репозиторий.
rpm -ihv https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
Для установки Nginx на CentOS необходимо выполнить следующую команду.
sudo yum install -y nginx
Вы можете найти все конфигурации в следующем файле.
sudo cat /etc/nginx/nginx.conf
Вы можете заметить блоки HTTP и HTTPS, когда видите весь файл конфигурации. Давайте возьмем серверный блок в конфигурации HTTP-блока и создадим отдельный файл с именем jenkins.conf в следующем месте.
// create a file sudo vi /etc/nginx/conf.d/jenkins.conf // check the file cat /etc/nginx/conf.d/jenkins.conf
Поместим указанную выше конфигурацию в файл и сохраним. Сервер Nginx прослушивает порт 80 и пересылает все HTTP-запросы вышестоящему серверу по IP-адресу 127.0.0.1:8080
, на котором запущен экземпляр Jenkins.
Вы можете получить доступ к журналам доступа и журналам ошибок по следующему адресу.
access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;
Теперь включите этот файл в файл /etc/nginx/nginx.conf.
Вот обновленный файл nginx.conf. Обратите внимание на строку номер 36 в следующем файле.
Имея этот файл на месте, давайте запустим следующую команду, чтобы запустить сервер Nginx.
// start the server sudo systemctl start nginx // check the status sudo systemctl status nginx
Теперь nginx запущен и работает, и вам нужно открыть для HTTP-трафика порт 80. Давайте добавим правило для входящего трафика для HTTP и удалим правило «Весь трафик», как показано ниже.
Тестирование
Это следующие вещи, которые мы сделали в предыдущих разделах.
- Настроить веб-сервер NGINX и запустить его на 80-м порту.
- Перенаправить весь HTTP-трафик на порт 80 на восходящий адрес 127.0.0.1:8080
- Добавлено правило InBound на порт 80.
- На всех остальных портах удалено правило InBound.
Давайте найдем общедоступный IP-адрес и общедоступный IPv4 DNS и выберем его в браузере, как показано ниже. Убедитесь, что вы используете HTTP вместо HTTPS.
Если вы нажмете общедоступный IP-адрес, вы получите плохой шлюз, как показано ниже.
Давайте посмотрим на ошибку, обратившись к журналам, вы можете четко увидеть, что для подключения к восходящему потоку отказано в разрешении.
sudo cat /var/log/nginx/error.log
Выполните следующую команду, чтобы убедиться, что он подключится к вышестоящему серверу.
sudo setsebool httpd_can_network_connect on
Теперь вы можете увидеть, как Jenkins работает через сервер NGINX.
С общедоступным IP-адресом
С общедоступным DNS
Резюме
- Дженкинс - один из распространенных инструментов, которые можно встретить в стратегии DevOps любой компании. Конвейер как код - один из востребованных навыков, которым вам нужно овладеть, если вы действительно увлекаетесь DevOps.
- Вы можете настроить альтернативные серверы для связи с веб-браузерами от имени Jenkins, а также это снимает с Jenkins большую часть работы, такой как шифрование SSL или доставка статических изображений.
- Есть еще одна причина, по которой, если вы хотите получить доступ к экземпляру Jenkins, вам нужно открыть весь трафик для получения HTTP-запросов. Вам нужно либо запустить сервер Jenkins на порту 80 вместо 8080, либо открыть его для всего трафика.
- Обратный прокси-сервер также будет полезен для масштабирования и балансировки нагрузки. Что происходит, когда вы запускаете Jenkins на нескольких серверах, вам необходимо настроить балансировку нагрузки, чтобы входящий запрос перенаправлялся на несколько серверов Jenkins.
- Настроить веб-сервер NGINX и запустить его на 80-м порту.
- Перенаправить весь HTTP-трафик на порт 80 на восходящий адрес 127.0.0.1:8080
- Добавлено правило InBound на порт 80.
- На всех остальных портах удалено правило InBound.
Заключение
Мы настроили реверсивный прокси NGINX для экземпляра Jenkins и протестировали его. В будущих публикациях мы увидим, как включить SSL и доступ по HTTPS, а также настроить конвейеры CI / CD.