Пошаговое руководство с веб-сервером NGINX

Дженкинс - один из распространенных инструментов, которые можно встретить в стратегии DevOps любой компании. Конвейер как код - один из востребованных навыков, которым вам нужно овладеть, если вы действительно увлекаетесь DevOps. От создания приложения до их развертывания в различных средах Jenkins может позаботиться о сквозном конвейере. Вы даже можете спроектировать конвейер для всего процесса.

В этом посте мы увидим, как настроить обратный прокси для экземпляра Jenkins на виртуальной машине Azure.

  • Предварительные требования Jenkins
  • Предварительные требования для Azure
  • Установка Jenkins на виртуальную машину Azure
  • Зачем нужен обратный прокси
  • Настроить обратный прокси-сервер NGINX
  • Тестирование
  • Резюме
  • Заключение

Предпосылки Jenkins

Единственное предварительное условие для работы Jenkins на вашем компьютере - это Java. Вам нужно установить Java и другой способ запуска Jenkins через Docker. Мы расскажем об этом в отдельной статье. Вы можете установить открытый JDK по следующей ссылке. Вы также можете пройти через раздел предварительных требований на странице «Установка Jenkins».

Если вы новичок в Jenkins или только начинаете, вы можете прочитать следующую статью.

Как начать работу с Дженкинсом

Предварительные требования для Azure

Azure - это платформа облачных вычислений от Microsoft. Microsoft Azure позволяет создавать готовые к будущему инновации во всех ваших средах с использованием новейших технологий. Вы даже можете зарегистрировать бесплатную учетную запись Azure и бесплатно получать популярные услуги в течение 12 месяцев.

Если вы новичок в Azure или только начинаете, вы можете прочитать следующую статью.

Как начать работу с Azure

Установка Jenkins на виртуальную машину Azure

Вот подробная статья о том, как установить Jenkins на виртуальную машину Azure. Я использовал дистрибутив CentOS Linux для установки Jenkins, и вы можете следовать аналогичной инструкции для любого другого дистрибутива.

Как запустить Jenkins на виртуальной машине Azure

Вы можете получить доступ к экземпляру Jenkins на общедоступном IPv4-адресе виртуальной машины с портом 8080, как показано ниже. Например, если общедоступный IP-адрес 40.114.0.177 и вы можете получить доступ к Jenkins с этим адресом http://40.114.0.177:8080

Зачем нужен обратный прокси

Вы можете настроить альтернативные серверы для связи с веб-браузерами от имени Jenkins, а также это снимает с Jenkins большую часть работы, такой как шифрование SSL или доставка статических изображений.

Есть еще одна причина, по которой, если вы хотите получить доступ к экземпляру Jenkins, вам нужно открыть весь трафик для получения HTTP-запросов. Вам нужно либо запустить сервер Jenkins на порту 80 вместо 8080, либо открыть его для всего трафика.

Обратный прокси-сервер также будет полезен для масштабирования и балансировки нагрузки. Что происходит, когда вы запускаете Jenkins на нескольких серверах, вам необходимо настроить балансировку нагрузки, чтобы входящий запрос перенаправлялся на несколько серверов Jenkins.

Настроить обратный прокси NGINX

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

sudo 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.

Настроить DNS-имя

Вы также можете настроить DNS-имя для этой виртуальной машины. Щелкните ссылку «Не настроено», как показано ниже.

Вы можете давать любое имя, если оно действительно и доступно.

Вы можете увидеть настроенную ссылку ниже и нажать на нее в браузере.

Вы можете использовать DNS-имя вместо общедоступного IP-адреса.

Резюме

  • Дженкинс - один из распространенных инструментов, которые можно встретить в стратегии 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.