tuturu0 microservices repository
- Работа с Helm
- Развертывание Gitlab в Kubernetes
- Запуск CI/CD конвейера в Kubernetes
- Изучен kube-dns
- Изучены балансировщики нагрузки
- Установлен ingress controller
- Создан TLS сертификат и использован ingress-secret
- Применена сетевая политика
- Создан том и запрос на его использование подом mongo
- Развернуто локальное окружение minikube для работы с Kubernetes
- Развернут Kubernetes в Yandex Cloud
- Запущен reddit в Kubernetes
- Настроены master и worker-ноды: установлены kubeadm, kubectl, kubelet
- Созданы Deployment манифесты приложений reddit
- Установлен сетевой плагин calico
- Изучен сбор и фильтрация логов с использованием сервиса post
- Изучен сбор и фильтрация логов с использованием сервиса ui
- Изучены Grok-шаблоны
<filter service.ui>
@type parser
<parse>
@type grok
<grok>
pattern service=%{WORD:service} \| event=%{WORD:event} \| path=%{GREEDYDATA:path} \| request_id=%{GREEDYDATA:request_id} \| remote_addr=%{IPV4:remote_addr} \| method= %{WORD:method} \| response_status=%{INT:response_status}
</grok>
</parse>
key_name message
# reserve_data true
</filter>
Дополнительное задание 2 не делалось
- Prometheus: запуск, конфигурация, знакомство с Web UI
- Мониторинг состояния микросервисов
- Сбор метрик хоста с использованием экспортера
- Подготовлена инсталляция Gitlab CI
- Подготовлен репозиторий с кодом приложения
- Создан пайплайн
- Определены окружения
- Проведены эксперименты с сетевымы драйверами docker
- Создан docker-compose.yml
- Параметризированы некоторые значения при помощи .env
- Создан docker-compose.yml.override
Имя проекта по умолчанию берётся из каталога docker-compose.yml, можно указать вручную при помощи ключа "-p"
Пример использования:
docker compose -p prod up -d
- Собраны образы для сервисов post-py, comment, ui
- Созданы контейнеры
- Сборка ui началась не с первого шага, т.к. начальные шаги сборки были в кэше после сборки comment, которая была ранее
- Создана сеть bridge reddit, чтобы обойти ограничение обращений только по адресам
- В образы на основе ruby пришлось добавить архивный репозиторий
- Для образа post-py необходимо добавить в requirements.txt "markupsafe==1.1.1" или использовать в качестве базового образа FROM python:3.6-alpine
- Образ mongo:latest не работает, так что использовался mongo:4
- Для сохранения постов для контейнера с mongo создан volume
Изменение алиасов и переменных окружения без переписывания Dockerfile представлено ниже:
docker run -d --network=reddit \
--network-alias=post_db_new --network-alias=comment_db_new \
mongo:4
docker run -d --network=reddit \
--network-alias=post_new \
--env POST_DATABASE_HOST=post_db_new \
tuturu0/post:1.0
docker run -d --network=reddit \
--network-alias=comment_new \
--env POST_DATABASE_HOST=comment_db_new \
tuturu0/comment:1.0
docker run -d --network=reddit -p 9292:9292 \
--env POST_SERVICE_HOST=post_new \
--env COMMENT_SERVICE_HOST=comment_new \
tuturu0/ui:1.0
Образ пересобран на основе alpine:3.14 (файл Dockerfile_alpine)
- Базовое знакомство с docker
- Пуш образа docker hub
Заглушка для закрытия ДЗ 12 на сайте otus