rshalgochev microservices repository
Добавил Dockerfile Чтобы собрать свой образ необходимо:
- Перейти в директорию docker-monolith
- Выполнить комманду
docker build -t reddit:local-test .
- Для запуска прилодения выполнить команду:
docker run -d -p 9292:9292 --name reddit reddit:local-test
- Для проверки работы приложения в адресной строке браузера ввести http://127.0.0.1:9292 Также ддобавил все необходимое для автоматизации развертывания прилодения в облачной инфраструктуре.
Разбил монолит на микромерсвисы. Оптимизировал размер образов микросервисов с помощью базовых образов на alpine Для запуска прилодения выполнить команды:
docker network create reddit
docker run -d --network reddit --network-alias mongodb --name mongodb -v reddit_db:/data/db mongo:latest
docker run -d --network reddit --network-alias app_post --name app_post --env POST_DATABASE_HOST=mongodb rshalgochev/post:1.0
docker run -d --network reddit --network-alias app_comment --name app_comment --env COMMENT_DATABASE_HOST=mongodb rshalgochev/comment:2.0
docker run -d --network reddit --name app_ui -p 9292:9292 --env POST_SERVICE_HOST=app_post --env COMMENT_SERVICE_HOST=app_comment rshalgochev/ui:2.0
Проверить рабоу прилодения можно перейдя в браузере по адресу http://127.0.0.1:9292
Чтобы остановить запущенное прилоджение выоплнить команду:
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
Написал docker-compose.yml Чтобы чтобы развернуть прилоение выполнить команду
docker-compose up -d
Если Необходимо переопределить стандартный префикс проекта, то запустить необходимо командой
docker-compose -p "PROJECT_NAME" up -d
Автоматизировал запуск сервера gitlab. Чтобы запустить сервер необходимо в директории gitlab-ci/terraform создать файл terrafotm.tfvars из файла terrafotm.tfvars.exmple. Затем выполнить команду:
terraform apply
Дождаться создания ВМ в облаке и запуска сервера gitlab-ci. Затем подключиться по ssh и провести первоначальную настройку самого gitlab, а имено - настроить пароль для пользователя root. Далее можно выполнить нужные настройки в web-части сервиса. После создания проекта необходимо перейти в настройки CI/CD, узнать там токен для регитсрации gitlab-runner и запустить в директории gitlab-ci/ansible плейбук, который зарегистрирует раннер командой:
ansible-playbook register_runner.yml -e gitlab_token=your_token -e gitlab_url=your_gitlab_url
Добавил конфигурацию для запуска мониторинга. Для запуска выполнить следующий порядок действий:
- Выполнить сборку образов сервисов и компонентов мониторинга, для этого можно использовать готовый Makefile. Команда для сборки:
export USER_NAME=your_docker_user
make build
make push
- Перейти в директорию docker и заполнить .env файл, образец заполнения в .env.example
- Запустить порилождение и систему мониторинга командой
docker-compose up -d
- Для проверки работы мониторинга перейти в браузере по адресу http://ip_сервера:9090
Добавил конфигурацию системы сбора логов и трейсов. Для запуска выполнить следующие действия:
- Из файлв .env.example создать файл .env
- Собрать образа серсивов
export USER_NAME="your_docker_login"
cd ./src/ui && bash docker_build.sh && docker push $USER_NAME/ui:logging
cd ../post-py && bash docker_build.sh && docker push $USER_NAME/post:logging
cd ../comment && bash docker_build.sh && docker push $USER_NAME/comment:logging
cd ../../logging/fluentd && docker build -t $USER_NAME/fluentd:logging . && docker push $USER_NAME/fluentd:logging
- Перейти в директорию docker и запустить систему сбора логов командой
docker-compose -f docker-compose-logging.yml up -d
- Также находясь в директории docker запустить сервисы и систему мониторига командой
docker-compose -f docker-compose.yml up -d
- Логи можно увидеть в Kibana, если перейти по адресу http://ip_address:5601
- Трейсы дсотупны по адресу http://ip_address:9411
- Развернул кластер kubernetes
- Подготовил манифесты для делпоя приложений
- Выполнил деплой командой
kubectl apply -f mongo-deployment.yml
kubectl apply -f ui-deployment.yml
kubectl apply -f post-deployment.yml
kubectl apply -f comment-deployment.yml
- Написал конфиг terraform и ansible для автоматизации развертывания кластера
- Развернул manageg-кластер kubernetes в yandex-cloud
- Подготовил автоматизацию через сценарий terraform для запуска кластера
- Чтобы запустить выполнить команду:
cd kubernetes/managed-k8s-terraform && \
terraform apply
- Подготовил конфиги сервисов для настройки взаимодействия компонентов прилоения между собой в кластере
- Выполнил установку приложений через kubectl
- Подготовил манифесты для применения сетевых политик, запроса постоянног охранилища
- Подготовил манифест для настройки ingress-контроллера
- Установил ingress-контроллер и задеплоил прилоение
- Подготовил helm-чарты для деплоя сервисов
- Подготовил helm-чарт с зависимостями для делпоя приложения
- Настроил устанвоку gitlab через helm
- Насnроил gitlab-ci