Code Monkey home page Code Monkey logo

tms-dp's Introduction

Реализация Infrastructure as Code для дипломного проекта.

Состав проекта:

- https://github.com/kignatovich/tms-dp - все для создания среды для разработки: ci\cd, мониторинг и тд;

- https://github.com/kignatovich/tms-dp-bot - телеграмм бот и терраформ;

Используемые технологии/программы/утилиты/яп:

  • Docker (Docker-compose)
  • Jenkins(IAC)
  • SonarQube
  • Python (bot)
  • Groovy (pipeline) готов тестовый пайплайн, нужно переделать в "боевой".
  • Bash
  • Nginx + SSL (certbot)
  • Prometheus
  • Loki
  • Grafana
  • caDvisor
  • Ansible
  • Pylint (можно заменить на flake8)
  • Apache Benchmark (нагрузочное тестирвоание)
  • Telegram (notification). Alertmanager - алерты готовы, остались в пайплайне jenkins.
  • Checkov - сканирование файлов на наличие ошибок в конфигурации(terraform, Dockerfile и т.д.)
  • trivy - сканирование образов docker
  • gpg (скрипт)

ВАЖНО: на данный момент все разворачивается автоматическ при использовании только одной команды. Единственное исключение - webhook. Его в jenkins нужно включать в пайплайнах вручную.

Ссылка на приложение, который будет учавствовать в сборке.

Начало работы.

При запуске команды в боте телеграм (/deploy), выполняется комнада terraform apply. В это время автоматически разворачиваются sqnarqube, jenkins и сопутсвующие сервисы/скрипты. Вывод команды terraform apply.

image

Один из важных скриптов которые отрабатывают в самом началае секции remote-exec - prepare.sh находящийся в шифрованом архиве keyp.zip, который добавляет возможность "читать ВМ" приватные репозитории gitlab.

#!/bin/bash
mv  ./id_rsa ./.ssh/
ssh-keyscan github.com >> /home/ubuntu/.ssh/known_hosts

После добавления закрытого ключа, remote-exec "стирает" его следы.

Главная страница

После успешного разворачивания инфраструктуры - будет создана главная страница проекта, доступная по адресу https://tms-dp1.devsecops.by.

image

Описание ресурсов:

Jenkins

image

После деплоя инфраструктуры в дженкинсе появляются два пайплайна: один для ветки main, второй для ветки dev.

Шаги пайплайнов:

  • Clone repository - клонируем код из репозитория(main или dev)
  • Checkov scaner - проверка правильности написания Dockerfile (может сканировать yaml, tf и т.д.)
  • Code style используется pylint
  • Sonar-scanner - сканирование с помощью sonarqube (каждый запуск отдельяная запись)
  • Deploy project - деплой c помощью ansible на другой сервер(клонирование репозитория, билд проекта, проверка сканером уязвимости билда проекта, запуск проекта)
  • code 200 & page search - тест ответа сервера 200 и поиск по главной странице определнного текста
  • Apache benchmark test - нагрузочный тест main или dev среды
  • Declarative: Post Actions уведомления, реализованы через телеграмм скрипт.

Пайплайны запускаются автоматически при пуше в соответствующую ветку репозитория github.

image

Отчеты Sonarqube

image

Отчеты сканера уязвимостей образов, располагаются по адресу:

https://tms-dp1.devsecops.by/report/ image image

Продакшен версия приложения:

https://prod1.devsecops.by/

Снимок экрана 2023-08-21 в 17 23 33

Девелопер версия приложения:

https://dev1.devsecops.by/

Снимок экрана 2023-08-21 в 17 24 15

Grafana:

Добавлены дашборды (автоматически разворачиваются):

  • docker host (мониторинг хоста на котором установлен docker)
  • docker containers (мониторинг докер контейнеров)
  • monitoring services (мониторинг мониторинга)
  • logs (кастомный вывод логов и алертов)
Снимок экрана 2023-08-21 в 17 26 14 Снимок экрана 2023-08-21 в 17 26 37 Снимок экрана 2023-08-21 в 17 27 04 Снимок экрана 2023-08-21 в 17 28 43

Также, добавлен loki для сборов логов:

Снимок экрана 2023-08-21 в 17 29 21 Снимок экрана 2023-08-21 в 17 30 29

Alertmanager - отправляет алеры в телеграм.

image

github.com packages

image image image

tms-dp's People

Contributors

kignatovich avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.