- Реализовать тривиальное HTTP "Hello, world!" web-приложение на любом удобном Вам языке программирования и завернуть его в clound native окружение.
- Dockerfile c Python приложением на Flask с названием testdrive которые выводит на 5000 TCP порт сообщение "Hello world".
- Приложение имеет ready-check в виде образа waisbrot/wait который через переменную окружения TARGETS=testdrive:5000 обращается к сервису и дожидаетя его запуска.
- Приложение имеет health-check через встроенную функцию HEALTHCHECK, обращается на 5000 TCP порт через curl и, в случае получения отрицательного HTTP кода ответа, выходит при получении не 0 ответа.
- Приложение предоставляет metrics endpoint для Prometheus через prometheus flask exporter (https://github.com/rycus86/prometheus_flask_exporter) встроенный в код и отдающий метрики по роуту /metrics.
- Подключена связка Prometheus и Grafana с Flask dashboard с визуализацией метрик.
- Все оформлено в docker-compose.yml файл, который запускает приложение со всеми необходимыми образами.
- Посмотреть метрики можно в Grafana обратившись к порту 3000 и ввести логин/пароль: admin/testdrive
- Также можно обратиться через curl по адресу http://ip:5000/metrics
Hi, in this practical test we expect you to show skills at IaC, cloud configuration management and web application deployment. Solution should be published as a git repo. You can use any tools that you want, there is no any limitations on that side.
- Setup a Kubernetes cluster
- Install Nginx Ingress
- Deploy basic web application
- Setup prometheus operator end expose Prometheus and Alertmanager
- Expose metrics from application to Prometheus
- Set up Grafana and expose a public Grafana dashboard
- Add dashboard in Grafana for Nginx ingress controller and your web application
Grafana - http://grafana.gcp.megaanton.ru (admin/prom-operator)
Application - http://app.gcp.megaanton.ru
Prometheus - http://prometheus.gcp.megaanton.ru
Alertmanager - http://alertmanager.gcp.megaanton.ru