Перевести приложение из предыдущего задания для работы через 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
)