Skip to content

Otus-DevOps-2020-05/Ingvar78_microservices

Repository files navigation

Ingvar78_microservices

Ingvar78 microservices repository

Infra Status

Microservices Status Docker-2 Status Docker-3 Status Docker-4 Status

GitLab-CI-1 Status Monitoring-1 Status Monitoring-2 Status

Logging-1 Status

Kubernetes-1 Status Kubernetes-2 Status Kubernetes-3 Status Kubernetes-4 Status Kubernetes-5 Status

17. Docker контейнеры. Docker под капотом

17.1 Установка и настройка docker, docker-compose, docker-machine, Изучение команд docker

17.2 Создание docker-host в yandex cloud с помощью docker-machine

Созданы файлы для работы, собран образ, описанный в 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. Docker образы. Микросервисы

18.1 Научиться описывать и собирать Docker-образы для сервисного приложения

18.2 Научиться оптимизировать работу с Docker-образами

18.3 Запуск и работа приложения на основе Docker-образов, оценка удобства запуска контейнеров при помощи docker run

этапы сборкаи и запуска приложения описаны в ./src/test.xt

19. Сетевое взаимодействие Docker контейнеров. Docker Compose. Тестирование образов

19.1 Работа с сетями в Docker. Использование docker-compose

• Разобраться с работой сети в Docker: none, host, bridge

19.2 docker-compose

• Установить docker-compose на локальнуюмашину

• Собрать образы приложения reddit с помощью docker-compose

• Запустить приложение reddit с помощью docker-compose

19.3 Переменные окружения в docker-compose

Параметризация с помощью переменных окружений: • порт публикации сервиса ui • версии сервисов • возможно что-либо еще на ваше усмотрение

  • COMPOSE_PROJECT_NAME=xxx - название проекта (по умолчанию имя директории)

19.4 Работа с docker-compose.override.yml, дебаг приложения

21. Устройство Gitlab CI. Построение процесса непрерывной поставки

• Подготовить инсталляцию Gitlab CI
• Подготовить репозиторий с кодом приложения
• Описать для приложения этапы пайплайна
• Определить окружения

Slack for GitLabCI

23. Введение в мониторинг. Системы мониторинга.

23.1 Prometheus: запуск, конфигурация, знакомство с Web UI

23.2 Мониторинг состояния микросервисов

23.3 Сбор метрик хоста с использованием экспортера

24. Мониторинг приложения и инфраструктуры

24.1 Мониторинг Docker контейнеров

24.2 Визуализация метрик

24.3 Сбор метрик работы приложения и бизнес метрик

Настройка и проверка алертинга

язык запросов 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))

Список образов на Dockerhub

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

26. Логирование и распределенная трассировка

• Подготовка окружения
• Логирование Docker-контейнеров
• Сбор неструктурированных логов
• Визуализация логов
• Сбор структурированных логов
• Распределенный трейсинг

28. Введение в Kubernetes

• Разобрать на практике все компоненты Kubernetes, развернуть их вручную используя The Hard Way;
• Ознакомиться с описанием основных примитивов нашего приложения и его дальнейшим запуском в Kubernetes.

29. Основные модели безопасности и контроллеры в Kubernetes

Kubernetes. Запуск кластера и приложения. Модель безопасности

• Развернуть локальное окружение для работы с Kubernetes
• Развернуть Kubernetes в Ya.cloud k8s
• Запустить reddit в Kubernetes

30.Ingress-контроллеры и сервисы в Kubernetes

30.1 Kubernetes. Networks, Storages.

План • Ingress Controller

• Ingress

• Secret

• TLS

• LoadBalancer Service

• Network Policies

• PersistentVolumes

• PersistentVolumeClaims

31. CI/CD в Kubernetes

План • Работа с Helm

• Развертывание Gitlab в Kubernetes

• Запуск CI/CD конвейера в Kubernetes

31.1 Helm

31.2 GitLab + Kubernetes

Дополнительно Helm

32 Kubernetes. Мониторинг и логирование

План

• Развертывание Prometheus в k8s

• Настройка Prometheus и Grafana для сбора метрик

• Настройка EFK для сбора логов

32.1 Мониторинг