Skip to content

Alexxfromgit/DevOps_Deploy_a_Docker_container_with_NGINX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

task10_12_2

Общие требования к выполнению практических заданий:

1. Выполненное задание должно располагаться в отдельном репозитарии на github.com, т.е. если учетная запись на github называется ‘user’ и выполняется практическое задание с названием ‘task10_12_2’, то файлы задания должны быть доступны в репозитарии https://github.com/user/task10_12_2. 
2. Для проверки выполнения ДЗ будет использована свежеустановленная VM из этого образа - https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
3. Для выполнения ДЗ разрешается устанавливать любые дополнительные пакеты, помимо тех, что явно указаны в задании. В случае использования пакетов, которые не установлены в образе, необходимо предусмотреть их установку.
4. Запуск скриптов во время проекта будет осуществляться от имени root
5. Практические Задания по ЛК10-12 должны быть выполнены и загружены в соответствующие репозитарии до 23:59 13/05/18.

Задание
NGINX reverse proxy & Apache, но в контейнерах Используя наработки из задания task6_7 необходимо развернуть docker контейнер с NGINX, который будет выступать в качестве reverse proxy для веб-сервера Apache2, также развернутого в контейнере. NGINX должен осуществлять терминирование HTTPS соединения используя сертификат, сгенерированный автоматически в процессе установки.

Рисунок 1 - Топология задания

Необходимо написать bash скрипт, который:

• Автоматически устанавливает docker-ce и docker-compose
• Автоматически генерирует root CA сертификат и сертификат для nginx, подписанный корневым CA
    ◦ SubjectAltNames должен содержать имя докер-хоста и его IP-адрес (не контейнера). Эти параметры доступны из конфигурационного файла.
• Разворачивает два контейнера (apache2 и nginx) с использованием возможностей docker-compose. При этом:
    ◦ В качестве базовых образов используются nginx:1.13 и httpd:2.4
    ◦ Сертификаты для NGINX а также конфигурационный файл nginx.com должны быть примонтированы в контейнер через volume.
    ◦ Логи NGINX должны писаться в /srv/log/nginx директорию на хосте
    ◦ NGINX порт на хосте определяется переменной из конфигурационного файла.

Часть 1 - Необходимые файлы

1. В репозитории должен находиться файл с именем task10_12_2.sh. Именно он  является входной точкой и будет запущен
2. В репозитории должен находиться файл с именем config. В нем содержатся конфигурируемые параметры, которые должен корректно прочитать и применить скрипт. Перечень конфигурируемых параметров приведен ниже.
3. В репозитории могут находиться любые дополнительные файлы и папки на ваше усмотрение (например шаблон конфигурационного файла NGINX)
4. В конечном результате после запуска скрипта необходимо обеспечить приведенную ниже иерархию файлов (допускается как генерация файлов скриптом, так и редактирование уже существующих в репозитории файлов; допускается наличие любых дополнительных файлов и директорий, например web-chain.crt в директории certs):

WORKDIR				            # script working directory		
├── certs				        # directory with certificates
│   ├── root.crt		        # root CA certificate
│   ├── web.crt			        # nginx certificate
│   └── web.key			        # nginx private key
├── config				        # parameters file
├── docker	-compose.yml	    # docker compose file
├── etc				            # directory with NGINX config
│   └── nginx.conf		        # NGINX configuration file
└── task10_12_2.sh		        # main script file

Пример файла config:

# Host parameters
EXTERNAL_IP=10.14.254.15
HOST_NAME=docker-vm.domain.tld

# Docker parameters
NGINX_IMAGE="nginx:1.13"
APACHE_IMAGE="httpd:2.4"
NGINX_PORT=17080
NGINX_LOG_DIR=/srv/log/nginx

Часть 2 - Рекомендации

Ниже приведены некоторые рекомендации, которые помогут вам корректно выполнить текущее задание:

1. Для установки docker-ce и docker-compose используйте официальный репозиторий docker 
2. Можно воспользоваться официальной справкой по образам docker:
    a. NGINX
    b. Apache
3. Ознакомьтесь с возможностями и синтаксисом compose- файлов:
    a. Docker compose file v2
4. Используйте discovery сервис докера для проксирования трафика из контейнера NGINX в контейнер с apache2
5. Используйте наработки из д/з task6_7 для автоматической генерации сертификатов
6. Монтировать тома в докер контейнер можно как из папки проекта (в этом случае вам необходимо корректно определить полный    путь к папке проекта), так и из любого другого места (например скрипт создает дополнительные директории в /srv или /etc). Во втором случае убедитесь, что все необходимые файлы также доступны в директории проекта (будет проверяться их наличие).

Часть 3 - Проверка

В ходе проверки будет копироваться репозиторий task10_12_2 и запускаться скрипт task10_12_2.sh. Проверка будет заключаться в https запросе к докер-хосту по порту, указанному в конфигурационном файле и с указанием корневого сертификата (из директории certs проекта, файл root.crt). Ожидается, что https соединение будет успешно установлено и в ответе будет страница apache2 по умолчанию (“It works!”). Будет проверено наличие двух контейнеров, nginx и apache, а также их базовые образы (nginx:1.13 и httpd:2.4 соответственно). Также будет проверена конфигурация точек монтирования для контейнера nginx (конфигурационный файл, сертификаты, логи). Будет проверено наличие записей в /srv/logs/nginx/access.log на докер хосте. После запуска скрипта будет проверено наличие обязательных файлов и директорий в директории проекта (docker-compose.yml, etc/nginx.conf, certs/)

About

NGINX Reverse Proxy & Apache, but in Containers Using the work from task 6_7, you need to deploy a Docker container with NGINX, which will act as a reverse proxy for the Apache2 web server, also deployed in a container. NGINX should terminate the HTTPS connection using a certificate generated automatically during the installation process

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages