Skip to content

Latest commit

 

History

History
30 lines (24 loc) · 4.13 KB

README.md

File metadata and controls

30 lines (24 loc) · 4.13 KB

Домашнее задание #2.

Задание.

Перевести приложение из предыдущего задания для работы через Istio. Для этого:

  • написать скрипт для запуска Istio в вашем кластере, и настройки добавления лейблов для того, чтобы Istio начал автоматически внедрят sidecat контейнеры к вашим приложениям в Kubernetes. Также, в этом скрипте, при запуске Istio в вашем кластере, необходимо указать настройку, которая запрещает внешний трафик по умолчанию, если нет необходимых манифестов.
  • написать все необходимые манифесты, чтобы теперь весь входящий трафик шел через Ingress Gateway
  • теперь при обращении на endpoint GET /time вашего приложения, оно должно делать запрос на http://worldtimeapi.org/api/timezone/Europe/Moscow и возвращать пользователю значение поля datetime из запроса выше.
  • создать манифейсты, которые разрешают внешний трафик на worldtimeapi.org
  • в readme проекта опишите куда надо сделать запрос, чтобы получить результат(оставить с предыдущего задания, если ничего не поменялось).

Решение.

В текущей директории (hw1/) запускаем скрипт ./refresh.sh, (возможно, для запуска потребуется прописать chmod +x refresh.sh). Скрипт делает следующее:

  • Удаляет minikube ноду (было необходимо для оперативного тестирования)
  • Поднимает новую minikube ноду
  • Ставит в качестве окружения docker. Это необходимо, чтобы minikube видела локальные образы и не было необходимости пушить образы на dockerhub. (после данного действия может перестать работать docker run / docker build, поэтому чтобы "отменить" переключение, необходимо выполнить eval $(minikube docker-env -u))
  • Запускает ./run.sh (возможно, для запуска потребуется прописать chmod +x run.sh) - скрипт, который собирает все образы и накатывает настройки на кластер.

Для проверки, что всё корректно работает, помимо запуска ./refresh.sh, надо после действий выше отдельно произвести следующие шаги (находясь в этой же директории):

  • kubectl get po - получаем список подов, их состояния
  • kubectl describe pod webapp-deployment-**hash**: проверяем, что всё работает
  • kubectl logs script-deployment-**hash** -c script - видим, что curl запросы происходят
  • minikube service webapp - создается туннель для удобного доступа к приложению, здесь мы ожидаем 404 page not found в открывающемся браузере (так как у нас нет endpoint'а /)
  • Нас интересует endpoint /time - дописываем его в строку поиска, должны увидеть что-то вроде Mon, 13 May 2024 13:40:27 UTC
  • Аналогично можем зайти на endpoint /statistics
  • Копируем с пода наш лог-файл kubectl cp script-deployment-**hash**:statistics.log ./statistics.log
  • Видим, что всё работает (cat statistics.log)