Результаты выполнения тестового задания следует опубликовать на GitHub или захостить на любой открытой платформе (например, Github Pages) и отправить на указанную в письме почту. Также следует указать свои контактные данные для получения обратной связи - e-mail, ФИО, телефон.
Тестовое задание состоит из четырех задач.
Написать простейший echo-server на Python или Go
Требуется написать простое веб-приложение на Python/Go, которое слушает входящие соединения на порту 8000 и предоставляет страницу с информацией:
- имя хоста
- ip адрес хоста
- имя автора, которое передаётся через переменную окружения $AUTHOR
Для приложения написать Dockerfile и запушить образ в докер хаб* (запушить в приватный регистри - пройти регистрацию в докер хаб, сделать регистри приватным).
В ответе к задаче приложить:
- исходный код
- Dockerfile
- команды, которые использовались для пуша образа в регистри
Полученный артефакты положить в папку /01-application
Автоматизация конфигурации на Ansible
Требуется поднять Виртуальную Машину (VM) с ОС Ubuntu 22.04. Возможные сценарии: локально через Virtual Box (или любое другое средство виртуализации), либо воспользовавшись Free-tier предложением от cloud.ru - https://cloud.ru/offers/free-tier.
Выполнить следующие задачи, используя Ansible:
- На VM установить пакет docker-ce;
- Запустить на docker контейнеры c подготовленным Web-приложением из первой задачи в 3-х экземплярах. Для развёртывания использовать приватный регистри из первой задачи;
- Настроить балансировщик на nginx, который будет отвечать при обращении к хосту и прокидывать запрос на запущенные контейнеры. Выбрать алгоритм балансировки для приложения и обосновать свой выбор.
В ответе к задаче приложить:
- исходный код Ansible
- текстовое обоснование выбранного алгоритма балансировки
Полученные артефакты положить в папку /02-ansible
Деплой приложения в Kubernetes
Требуется написать манифест для запуска приложения из первой задачи в Kubernetes в отдельном неймспейсе в виде Deployment с 3 репликами и сервиса с типом ClusterIP.
Выполнить следующие задачи:
- Для приложения организовать проброс значения переменной AUTHOR;
- Реализовать readiness- и liveness- пробы;
- Использовать образ из приватного регистри из задачи 1;
- опционально: поднять ingress-controller и создать правило ingress;
- опционально: использовать helm-chart, а не raw манифест.
В ответе к задаче приложить:
- исходный код всех манифестов
Полученные артефакты положить в папку /03-kubernetes
Проверить навыки администрирования *nix
- Создать ВМ с ОС Ubuntu 22.04;
- Установить пакет docker-ce;
- Выполнить команду docker run -it --rm ubuntu -- bash;
- Не покидая контейнер, не меняя флаги запуска и настройки демона, выполнить задачи:
4.1. сделать apt-get update, показать, что команда выполняется успешно;
4.2. изнутри контейнера заблокировать ему выход в сеть интернет, команды блокировки с описанием приложить к задаче;
4.3. показать, что apt-get update больше не работает. - Доп. задача - найти ещё +1 способ выполнить подобную блокировку изнутри контейнера.
В ответе к задаче приложить:
- текстовое описание применённых конфигураций
Полученные артефакты положить в папку /04-unix