README.md

Проект Инфраструктурной платформы

Проект состоит из трех директорий:

  1. cloud - настройка облака в Яндекс
  2. platform - развертывание платформы
  3. app - развертывание приложения

Подробные описания в каждой из директорий.

При выполнении проекта пытался сделать решение, которое будет создавать минимальные накладные расходы (в первую очередь по памяти). Чтобы его можно было в дальнейшем переиспользовать в маленьких кластерах, где терять лишнюю сотню мегабайт на sidecar grafana недопустимо.

Описание изменений

Основные изменения можно посмотреть по коммитам в git.

  1. Для начальной разработки был использован k3d.
  2. microservices-demo разворачивается через helmfile и официальный helm чарт.
  3. В чарт microservices-demo добавлена поддержка ingress для фронтенда
  4. Начало работы с мониторингом. Добавлен kube prometheus stack и его разворачивание через helmfile и скрипт.
  5. kube prometheus stack показался слишком “готовым” решением и prometheus много потребляет, переключился на victoria metrics.
  6. Начал пробовать вынести хранение наружу. Добавил telegraf для сбора метрик и отправки в influx cloud.
  7. Начал добавлять дашборды в grafana, настроенные на метрики, которые собирает телеграф.
  8. Добавил лимитов по памяти в приложения, в том числе gomemlimit, чтобы не так съедало память.
  9. Переключился на мониторинг через vmagent, с telegraf сложно переиспользовать готовые дашборды, настроенные на prometheus. Добавил стандартные дашборды для мониторинга кластера.
  10. Добавил дискаверинг дашбордов при старте grafana через init container (чтобы не держать sidecar запущенным)
  11. Добавил в vmagent дискаверинг подов для сбора метрик через аннотации prometheus.
  12. Добавил дашборд для traefik
  13. Переключился с развертывания через helmfile на kluctl, отпала необходимость в скриптах, стало очень удобно.
  14. Добавил простейший алерт и оповещения в telegram.
  15. Добавил запуск loki и victoria в кластере, чтобы не завязываться в текущем проекте на grafana cloud.
  16. Добавил развертывание яндекс облака через terraform.
  17. Добавил развертывание traefik в платформу (до этого использовался встроенный в k3d)
  18. Переделал развертывание приложения с helmfile на kluctl.
  19. Добавил в платформу kluctl controller для организации CD и webui для просмотра состояния развертывания.
  20. Перенес хранение настроек приложения в секрет k8s, чтобы запустить CD. И добавил CD приложения.
  21. Добавил развертывание cert-manager и выдачу сертификатов через let’s encrypt.
  22. Подправил terraform конфиг, чтобы сервисные аккаунты тоже создавались через него.
Конвейеры
0 успешных
0 с ошибкой