ilyafedotov microservices repository
- Установлены Docker, docker-compose, docker-machine
- Выполнено задание со (*) о сравнении команд docker inspect <u_container_id> и <u_image_id>
- Создан docker-monolith/Dockerfile, собран образ reddit:latest
- Образ загружен на Docker hub ilyafedotov/otus-reddit:1.0
- Разбили наше приложение на 4 микросервиса(3 микросервиса и DB)
- Подготовили Dockerfile и собрали контейнеры
- (*) передали новые алиасы через переменные окружения
docker run -d --network=reddit --network-alias=post_db1 --network-alias=comment_db1 mongo:latest
docker run -d --env POST_DATABASE_HOST=post_db1 --network=reddit --network-alias=post1 ilyafedotov/post:1.0
docker run -d --env COMMENT_DATABASE_HOST=comment_db1 --network=reddit --network-alias=comment1 ilyafedotov/comment:1.0
docker run -d --env COMMENT_SERVICE_HOST=comment1 --env POST_SERVICE_HOST=post1 --network=reddit -p 9292:9292 ilyafedotov/ui:1.0
- (*) Оптимизировали Dockerfile UI для уменьшения размера:
REPOSITORY TAG IMAGE ID CREATED SIZE
ilyafedotov/ui 3.1 0481fd46faca 4 seconds ago 69.8MB
ilyafedotov/ui 3.0 84daaa26cb45 5 minutes ago 278MB
ilyafedotov/ui 2.0 9ff50d483713 17 minutes ago 449MB
ilyafedotov/ui 1.0 b745498af5f9 50 minutes ago 770MB
- Изучили как работает сеть Docker
- Параметризован docker-compose.yml, приложения разнесены по разным сетям
- По умолчанию, в качестве имени проекта используется имя директории, можно задать через переменную COMPOSE_PROJECT_NAME.
- (*) Создан docker-compose.override.yml
- Создана VM в Yandex.Cloud с помощью Terraform
- (*) С помощью плейбуков Ansible на VM устанавливается Docker и запускаются контейнеры с Gitlab и Gitlab runner и регистрируем его
- (*) В пейпланне собирается контейнер с приложением reddit
- Знакомство с Prometheus
- (*) Добавлен экспортер для mongodb(на основе https://github.com/percona/mongodb_exporter)
- (*) Добавлен BlackBox экспортер на основе Cloudprober
- (*) Создан Makefile Ссылка на Docker Hub: https://hub.docker.com/repositories/ilyafedotov
- Продолжение изучения Prometheus
- (*) Build и push новых образов добавлены в Makefile
- (*) Настроена отдача метрик Docker демоном и настроен дашборд Docker Engine Metrics(https://grafana.com/grafana/dashboards/1229)
- (**) Настроено автоматическое добавление источников данных и дашбордов в Grafana
- Знакомство с EFK стеком.
- (*) Добавлен grok паттерн для разбора второго типа логов сервиса ui
- Знакомство с распределенным трейсинком на примере Zipkin
- (*) Траблшутинг UI: Изначально приложение не работало из-за дефолтных переменных POST_SERVICE_HOST и POST_SERVICE_PORT, решилось добавлением их в Dockerfile. Задержка была на этапе db_find_single_post(167 строка файла post_app.py: time.sleep(3))
- Пройден Kubernetes The Hard Way
- (*) Создана Ansible роль, описывающая развертывание мастер-ноды кластера(шаг 08-bootstrapping-kubernetes-controllers)
- Подготовлены манифесты для приложения Reddit
- Развернут Kubernetes в Yandex.Cloud и в нем запущено приложение Reddit
- Создан ingress
- (*)Создан манифест ui-secret.yml с описанием секрета для ingress
- Созданы сетевые политики для mongodb
- Созданы манифесты для диманического создания PersistentVolume
- Созданы Helm chart'ы для приложения reddit
- Развернуты GitLab в кластере
- Настроены процессы CI/CD для приложений
- (*) Связаны релизные пейплайны компонентов с автоматической выкаткой приложений на stage/production
- Установлен Prometheus
- В Prometheus настроено auto-discovery для приложения Reddit
- Установлена Grafana и параметризированы дашборды
- Установлен стек EFK для сбора логов 5 (*) Создан чарт для установки EFK стека