homelab: автоматизация развертывания и управления домашними серверами

Проект homelab — это инфраструктура для домашних серверов, управляемая с помощью GitOps, на базе Kubernetes, Talos, ArgoCD и Terraform.

Он решает задачу автоматизации развертывания и управления домашними лабораториями, позволяя пользователям легко поддерживать и обновлять свою инфраструктуру через код. В отличие от классифицируемых решений, которые предполагают ручное или частично автоматизированное управление, homelab использует концепции GitOps, что минимизирует ошибки и упрощает процесс внедрения изменений. Подход подойдет тем, кто хочет углубиться в DevOps и облачные технологии, применяя современные инструменты в домашних условиях.

Проект написан с использованием YAML и Bash, и для запуска может потребоваться опыт работы с Terraform и Kubernetes. Однако стоит учесть, что он нацеливается на пользователей с определённым уровнем подготовки, так как потребует установки и настройки упомянутых технологий. Проверь README для деталей и возможных ограничений.

Eden # Eden ### Инфраструктура домашней лаборатории

Проект Eden — это личная лабораторная среда, которая используется для экспериментов с инфраструктурой и хостинга самоуправляемых сервисов. Автор проекта, Мортен Виктор Нордбье, работает с этими технологиями ежедневно, но в лаборатории он может свободно исследовать идеи и шаблоны, которые не всегда подходят для производственной среды. Это место для практического тестирования новых инструментов, решения реальных задач и, иногда, готовности к ошибкам ради обучения.

Репозиторий является публичным, что обеспечивает прозрачность и соблюдение лучших практик, даже если работа ведётся для удовольствия.

Статус кластера обновляется каждые 15 минут через API Kubernetes и Prometheus, и отображается на главной странице проекта.

Как это работает

Terraform создает виртуальные машины Talos на Proxmox, а все последующие изменения приходят через Git. Основной процесс выглядит следующим образом:


push to main
   ├─ GitHub Actions builds portfolio and blog, pushes to GHCR
   │     └─ Kargo promotes stage to prod as a pull request you merge
   ├─ external app repos call bump-image.yml, which opens a PR pinning an immutable sha tag
   └─ Argo CD reconciles k8s/talos/** onto the cluster
         ├─ External Secrets fetches credentials at runtime, so none are committed
         ├─ Traefik publishes routes through Gateway API, cert-manager and external-dns handle TLS and DNS
         └─ KEDA lets idle apps drop to zero; the HTTP interceptor wakes them on the first request

Система Argo CD управляет приложениями благодаря методу «приложение в приложении». Две корневые приложения в `k8s/talos/infra/argocd/` контролируют все остальные приложения, так что новое рабочее нагрузка предполагает создание новой директории.

Обзор репозитория

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

  • k8s/talos/ — развертывание приложений и инфраструктура.
  • terraform/ — конфигурация для Proxmox и Azure.
  • blog/ — исходный код блога на Hugo.
  • portfolio/ — исходный код портфолио сайта.
  • ai/ — агенты ИИ и связанные проекты.

Технический стек Kubernetes

Проект использует следующие технологии:

  • GitOps: Argo CD, Kargo.
  • Сеть: Cilium, Traefik, external-dns.
  • Безопасность: Falco, Authentik, cert-manager.
  • Наблюдаемость: Prometheus, Grafana, Loki.
  • Масштабирование: KEDA с HTTP-дополнением.
  • Автоматизация: Reloader.
  • Хранилище: Proxmox CSI, csi-driver-nfs.
  • Базы данных: PostgreSQL 18.
  • Платформа: Proxmox VE на трёх узлах Lenovo, Talos Linux.

Безопасность

Проект включает автоматизированное сканирование контейнеров на наличие уязвимостей каждый месяц и при изменениях в Dockerfile с помощью Trivy. Falco мониторит активность на уровне системных вызовов для обнаружения аномалий.

CI/CD Рабочие процессы

Рабочие процессы CI/CD включают следующие этапы:

  • Сборка и развертывание блога.
  • Сборка и развертывание портфолио.
  • Сканирование уязвимостей контейнеров.
  • Автоматическое создание диаграмм состояния.

Оборудование

Лаборатория состоит из нескольких вычислительных узлов, NAS, сетевого оборудования и устройств IoT. Узлы работают на различных моделях Lenovo, каждый из которых обеспечивает 32 ГБ ОЗУ и 1 ТБ хранения.

Другие проекты

Кроме этого проекта, автор разрабатывает и хостит несколько других решений, например:

  • logeverylift — мобильное приложение для отслеживания тренировок.
  • lawless-waf — инструмент для настройки Azure WAF.
  • headroom — трекер личных финансов.

Открыть на GitHub: mortennordbye/homelab →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте