/cdnnow

Primary LanguageShell

cdnnow

Тестовое задание.

Дано:

Требуется написать скрипты деплоя на окружение dev и prod в Kubernetes приложения.
Результат выполнения задачи должен быть передан в виде ссылки на github.com или любого другого публичного git репозитория.
Требования к приложению:
1. Приложение состоит из nginx, php-fpm и единственной страницы index.php:
<?php
echo "Hello world!";
  1. Файл index.php должен быть в контейнере (т.е. не должен быть подключен из вне).
  2. В качестве платформы для запуска Kubernetes рекомендуется использовать minikube.
  3. Страница должна открываться по адресу “/” (т.е. не “/index.php”).
  4. Вы можете выбрать инструменты для организации деплоя на ваше усмотрение.

Решение.

Нормально выстроенная цепь прохождения кода выглядит следующим образом: Разработчик написал код и сделал git push в настроенный локальный gitlab.
В гитлабе срабатывает раннер и запускает последовательность, которая может включать в себя следующие действия:

  1. Подготовка окружения для сборки образов.
  2. Передача подготовленных данных в машину для сборки образов (или там же?).
  3. Сборка образов согласно заданным инструкциям. При провале зачистка окружения и завершение процесса.
  4. Прогон ряда автоматических тестов с целью получить на выходе exit 0. При провале зачистка окружения и завершение процесса.
  5. Отправка образа в реестр образов.
  6. Зачистка окружения.
  7. Отправка оповещения на ревью кода с целью получения одобрения.
  8. Запуск группы образов в среде stage.
  9. Запуск образов в среде production.

Обращаю внимание на необходимость произвести зачистку окружения в машине сборки образов в любом случае, вне зависимости от последующих результатов.

Cкрипт cdnnow-deploy.compose.sh работает с использованием docker-compose.
Сервис доступен по адресу http://cdnnow.

Скрипт cdnnow-deploy.minikube.sh работает с использованием docker-compose и minicube.
Откроется страница в браузере. Нужно в файле hosts прописать соответствие этому ip имени cdnnow и в строке адреса заменить ip на cdnnow. Нужно получить http://cdnnow:port