Sun8877777 microservices repository
Введение в Docker
План Создание docker host Создание своего образа Работа с Docker Hub
Выполнены все пункты задания и задания со *.
Цели задания
- Научиться описывать и собирать Docker-образы для сервисного приложения
- Научиться оптимизировать работу с Docker-образами
- Запуск и работа приложения на основе Docker-образов, оценка удобства запуска контейнеров при помощи docker run
План
- Разбить наше приложение на несколько компонентов
- Запустить наше микросервисное приложение
Задание со ⭐
-
Остановите контейнеры --- docker kill $(docker ps -q)
-
Запустите контейнеры с другими сетевыми алиасами
-
Адреса для взаимодействия контейнеров задаются через ENV - переменные внутри Dockerfile 'ов
-
При запуске контейнеров ( docker run ) задайте им переменные окружения соответствующие новым сетевым алиасам, не пересоздавая образ
-
Проверьте работоспособность сервиса
docker run -d --network=reddit --network-alias=post_db_mongo --network-alias=comment_db_mongo mongo:latest docker run -d --network=reddit --network-alias=post_new -e POST_DATABASE_HOST='post_db_mongo' -e POST_DATABASE='posts_db' sun8877777/post:1.0 docker run -d --network=reddit --network-alias=comment_new -e COMMENT_DATABASE_HOST='comment_db_mongo' -e COMMENT_DATABASE='comments_db' sun8877777/comment:1.0 docker run -d --network=reddit -e POST_SERVICE_HOST='post_new' -e COMMENT_SERVICE_HOST='comment_new' -p 9292:9292 sun8877777/ui:1.0
Выполнено
Задания со ⭐ Попробуйте собрать образ на основе Alpine Linux Придумайте еще способы уменьшить размер образа Можете реализовать как только для UI сервиса, так и для остальных ( post , comment ) Все оптимизации проводите в Dockerfile сервиса. Дополнительные варианты решения уменьшения размера образов можете оформить в виде файла Dockerfile.<цифра> в папке сервиса
- Работа с сетями в Docker
- Использование docker-compose
Задание:
- Изменить docker-compose под кейс с множеством сетей, сетевых алиасов (стр 18). Сделано
- Параметризуйте с помощью переменных окружений: • порт публикации сервиса ui • версии сервисов • возможно что-либо еще на ваше усмотрение Сделано
- Параметризованные параметры запишите в отдельный файл c расширением .env сделано
- Без использования команд source и export docker-compose должен подхватить переменные из этого файла. Сделано
При запуске проекта вы увидите, что все создаваемые docker-compose сущности имеют одинаковый префикс, к примеру dockermicroservices_ui_1 Этот префикс можно изменит с помощью параметра -p. Оно образуется из названия папки, в которой находится docker-compose файл. docker-compose -p compose_project up -d
Задание со * Создайте docker-compose.override.yml для reddit проекта, который позволит • Изменять код каждого из приложений, не выполняя сборку образа сделано • Запускать puma для руби приложений в дебаг режиме с двумя воркерами (флаги --debug и -w 2) Итоговый файл закоммитьте. сделано
Выполнены все пунктиы основного задания. Сделано 1 -е задание со *.
Выполнены все пунктиы основного задания. Ссылки на образы: https://hub.docker.com/repository/docker/sun8877777/prometheus https://hub.docker.com/repository/docker/sun8877777/comment https://hub.docker.com/repository/docker/sun8877777/post https://hub.docker.com/repository/docker/sun8877777/ui
Сделаны все задания со *, кроме последнего (makefile).
План
- Подготовка окружения
- Логирование Docker-контейнеров
- Сбор неструктурированных логов
- Визуализация логов
- Сбор структурированных логов
- Распределенный трейсинг
Выполнено 1 ое задание со *.
План
- Разобрать на практике все компоненты Kubernetes, развернуть их вручную используя kubeadm
- Ознакомиться с описанием основных примитивов нашего приложения и его дальнейшим запуском в Kubernetes
Выполнено задание со *.
- План
- Развернуть локальное окружение для работы с Kubernetes
- Развернуть Kubernetes в Yandex Cloud
- Запустить reddit в Kubernetes Выполнены все задания со *
План
- Ingress Controller
- Ingress
- Secret
- TLS
- LoadBalancer Service
- Network Policies
- PersistentVolumes
- PersistentVolumeClaims Все задания выполнены полностью, включая задачу со *
Работа с Helm Развертывание Gitlab в Kubernetes Запуск CI/CD конвейера в Kubernetes