Архитектура моей лаборатории
Моя лаборатория - это мой мини прокет по освоению новых для меня технологий. Для всей лаборатории я использую монорепозиторий.
На чем развернуто
У меня есть 2 стенда:
1) Домашний ПК
2) Виртуалки в клауде
Что дома, что в клауде используется Proxmox для виртуализации. Приложения разворачиваются в kubernetes. На отдельной ВМ крутятся БД. Стенды по содержанию идентичны
Схема стенда ./docs/sailor-lab/scema-sailor-lab-components.puml
Все виртуалки созданы Terraform через API Proxmox
Настройка окружения
Так как я люблю поиграть рабочая машина у меня на Win10 Pro. Программы которые я использую для работы в лабе и просто мое рабочее окружение
1) Visual Studio Code - IDE
Расширения Vs code:
- Remote SSH - Удаленный доступ на сервера. Иногда приходится подключаться через Vs code
- Python - Пакет для работы с питоном
- PlantUml - Поддержка синтаксиса и рендер диаграмм
- Markdownlint - Поддержка синтаксиса и рендер маркдауна
- HashiCorp Terraform - Поддержка синтаксиса HCL (Языка тераформа)
- Cline - АИ кодинг агент. Использую локальную нейронку
2) Tabby - SSH client
3) OpenTofu - Описание инфры как IaC. Перешел в моменте когда терраформ менял лицензию и так и остался
4) sops + age Для работы и хранения секретов
5) kubectl - работа с k8s
6) Helm - работа с k8s
7) KeePass - Менеджер паролей
8) Git - git
9) LM Studio - LLM на локальном ПК
10) V2rayTun - VPN client
Стек
Compute
- K8s
- Docker
Monitoring
- Victoriametrics
- Grafana
DevOps
- Gitea
Backup
- Restic
Docs
- Mkdocs
Inventory
- Netbox
VPN
- Wireguard
- Xray + Vless
Proxy
- NPM (Nginx Proxy Manager)
Регламент работы с ветками в монорепозитории
- Запрещен прямой commit в main ветку
Разделение на ветки
- Перед началом создается задача с описанием фичи и палном
- Для добавления фичи в репозиторий создается отдельная ветка с именем фичи
- Если мы возвращаемся к доработке какой то фичи, то перед началом работы подтягиваем изменения с мейн ветки
- После заверешния работы создается PR в main ветку
Компоненты
- Сама фича (код)
- Документация к ней