Ingvar78 microservices repository
Созданы файлы для работы, собран образ, описанный в Dockerfile, запущенного через docker-machine
docker tag reddit:latest egerpro/otus-reddit:1.0
docker push egerpro/otus-reddit:1.0
docker run --name reddit -d -p 9292:9292 egerpro/otus-reddit:1.0
18.3 Запуск и работа приложения на основе Docker-образов, оценка удобства запуска контейнеров при помощи docker run
этапы сборкаи и запуска приложения описаны в ./src/test.xt
• Разобраться с работой сети в Docker: none, host, bridge
• Установить docker-compose на локальнуюмашину
• Собрать образы приложения reddit с помощью docker-compose
• Запустить приложение reddit с помощью docker-compose
Параметризация с помощью переменных окружений: • порт публикации сервиса ui • версии сервисов • возможно что-либо еще на ваше усмотрение
- COMPOSE_PROJECT_NAME=xxx - название проекта (по умолчанию имя директории)
• Подготовить инсталляцию Gitlab CI
• Подготовить репозиторий с кодом приложения
• Описать для приложения этапы пайплайна
• Определить окружения
язык запросов PromQl; Grafana, alermanager.
Много заданий со ⭐ (необязательных)
• Разделен docker-compose.yml разделён на две части: docker-compose.yml - приложение и docker-compose-monitoring.yml - мониторинг.
• Добавлен и запущен cAdvisor в сервисы докера и в настройки prometheus. Изучен его интерфейс и работа с ним.
• Добавлена и настроена на prometheus grafana.
• Скачан и импортирован в grafana дашборд "docker and system monitoring".(добавлен в каталог с дашбордами grafana DockerMonitoring.json)
• Создан дашборд UI_Service_Monitoring и Business_Logic_Monitoring. Добавлены графики по метрикам приложения:
UI_Service_Monitoring:
- Rate of UI request count ("rate(ui_request_count[1m])")
- Rate of UI requests count with error ("rate(ui_request_count{http_status=~\"^[45].*\"}[1m])")
- HTTP responce time of 95% ("histogram_quantile(0.95, sum(rate(ui_request_response_time_bucket[5m])) by(le))")
Business_Logic_Monitoring:
- Posts Rate ("rate(post_count[1h])")
- Comments Rate ("rate(comment_count[1h])")
• файлы дашбордов экспортированы и сохранены в директории monitoring/grafana/dashboards
• Создан, настроен и запущен Alertmanager(создан конфиг с уведомлениями в slack, настроен prometheus(конфиг + добавлен alerts.yml))
REPOSITORY TAG IMAGE ID CREATED SIZE egerpro/prometheus latest 852909dbba4d 58 minutes ago 112MB egerpro/alertmanager latest f1a04c9c90ce About an hour ago 31.9MB egerpro/comment latest 45c4acb916c8 6 days ago 768MB egerpro/post latest 88f354786719 6 days ago 110MB egerpro/ui latest 2668081ea7bc 6 days ago 449MB cloudprober/cloudprober v0.10.9 a0e2df9dd522 6 weeks ago 36.7MB mongo 3.2 fb885d89ea5c 22 months ago 300MB grafana/grafana 5.0.0 18cae91912fc 2 years ago 301MB google/cadvisor v0.29.0 4623226ef052 2 years ago 62.2MB prom/alertmanager v0.14.0 23744b2d645c 2 years ago 31.9MB prom/prometheus v2.1.0 c8ecf7c719c1 2 years ago 112MB prom/node-exporter v0.15.2 ff5ecdcfc4a2 2 years ago 22.8MB
• Подготовка окружения
• Логирование Docker-контейнеров
• Сбор неструктурированных логов
• Визуализация логов
• Сбор структурированных логов
• Распределенный трейсинг
• Разобрать на практике все компоненты Kubernetes, развернуть их вручную используя The Hard Way;
• Ознакомиться с описанием основных примитивов нашего приложения и его дальнейшим запуском в Kubernetes.
Kubernetes. Запуск кластера и приложения. Модель безопасности
• Развернуть локальное окружение для работы с Kubernetes
• Развернуть Kubernetes в Ya.cloud k8s
• Запустить reddit в Kubernetes
План • Ingress Controller
• Ingress
• Secret
• TLS
• LoadBalancer Service
• Network Policies
• PersistentVolumes
• PersistentVolumeClaims
План • Работа с Helm
• Развертывание Gitlab в Kubernetes
• Запуск CI/CD конвейера в Kubernetes
Дополнительно Helm
План
• Развертывание Prometheus в k8s
• Настройка Prometheus и Grafana для сбора метрик
• Настройка EFK для сбора логов