Commit Graph

11 Commits

Author SHA1 Message Date
Sergey Antropoff
bb03975105 chore(yandex-dns-controller): добавить реальные DNS-зоны в defaults и credentials в vault.example 2026-04-26 12:23:40 +03:00
Sergey Antropoff
fb5dcbc3af feat: добавить аддон hysteria2-server + playbook.yml для всех аддонов
hysteria2-server:
- Устанавливает Hysteria2 v2 на удалённый VPS (группа [hysteria2_server])
- TLS: selfsigned (IP, insecure=1) | acme (Let's Encrypt) | custom
- Obfuscation salamander, masquerade, лимиты полосы
- systemd-сервис, открытие firewall (ufw/firewalld)
- Вывод готового URL hysteria2://... для vault_hysteria2_url
- SSH с паролем: make addon-hysteria2-server ARGS="-k" (интерактивный ввод)

playbook.yml:
- addons/mediaserver/playbook.yml — hosts: k3s_master[0]
- addons/hysteria2-server/playbook.yml — hosts: hysteria2_server

Интеграция:
- inventory/hosts.ini: группа [hysteria2_server] (закомментированный пример)
- group_vars/all/addons.yml: addon_hysteria2_server
- vault.yml.example: vault_hysteria2_server_password, vault_hysteria2_obfs_password
- playbooks/addons.yml: оба аддона
- Makefile: addon-hysteria2-server target
2026-04-26 06:39:50 +03:00
Sergey Antropoff
357474f98f feat(mediaserver): поддержка vault_hysteria2_url — вставить URL целиком
- defaults: добавить mediaserver_hysteria2_url (приоритет над server/auth/obfs)
- tasks: парсинг URL через python3 urlparse → set_fact переопределяет отдельные переменные
- vault.yml.example: vault_hysteria2_url с примером, оба способа задокументированы
- README: способ 1 теперь реальный — одна строка в vault, всё разбирается автоматически
2026-04-26 00:49:11 +03:00
Sergey Antropoff
5d7b32023e feat: добавить аддон mediaserver — Plex, *arr, Transmission, Hysteria2, Samba
- Plex, Sonarr, Radarr, Lidarr, Bazarr, Prowlarr, Overseerr, Transmission
- Hysteria2 v2 как sidecar в Prowlarr поде (SOCKS5 127.0.0.1:1080)
- Init-контейнер автоматически прописывает прокси в config.xml Prowlarr
- Один shared PVC (RWX NFS) для всего стека с subPath-монтированием
- Samba LoadBalancer для LAN-доступа к медиафайлам
- bjw-s/app-template (auto-detect latest version)
- make addon-mediaserver, vault секреты, playbooks/addons.yml, addons.yml
2026-04-26 00:36:44 +03:00
Sergey Antropoff
e57e676392 feat: добавлены аддоны Jenkins, Gitea Actions, NetBird VPN
Jenkins:
- Helm chart jenkins/jenkins, dynamic k8s Pod agents, JCasC конфигурация
- 14 предустановленных плагинов (k8s, pipeline, git, blueocean, github/gitlab/gitea)
- Prometheus ServiceMonitor, Ingress с TLS

Gitea Actions:
- Флаг gitea_actions_enabled (default: false) в gitea Helm values
- act_runner Deployment с Docker-in-Docker sidecar (gitea_actions_runner_enabled)
- Job автоматически по��учает registration token через Gitea API и сохраняет в Secret
- Настраиваемые labels, replicas, DinD on/off

NetBird VPN (self-hosted WireGuard mesh):
- Management server (Helm netbirdio/management) — gRPC API + peer management
- Signal server (Helm netbirdio/signal) — WebRTC peer discovery
- Coturn — STUN/TURN с hostNetwork (корректный внешний IP)
- Все компоненты через kube-vip LoadBalancer (авто-назначение IP из pool)
- Subnet Router Deployment (hostNetwork + NET_ADMIN + ip_forward)
  — VPN-клиенты получают ��оступ к подсетям кластера
- Exit Node Deployment (hostNetwork + MASQUERADE iptables)
  — весь интернет-трафик VPN-клиентов через ноду кластера
- Static LB IPs через kube-vip annotation (опционально)
2026-04-25 18:41:54 +03:00
Sergey Antropoff
3765bc87b6 feat: добавлены аддоны SMTP Relay, HashiCorp Vault, External Secrets Operator
- SMTP Relay (bokysan/mail): Postfix relay через Yandex SMTP, порт 465 с
  TLS wrappermode, trusted networks only (pod/service CIDR), без аутентификации
  внутри кластера — поды отправляют на smtp-relay:25
- HashiCorp Vault (hashicorp/vault): standalone и HA (Raft) режимы,
  auto-unseal: k8s Secret (homelab), AWS KMS, GCP CKMS, Azure Key Vault,
  Transit; Vault Agent Injector по умолчанию; Job инициализации + Unsealer
  Deployment для k8s режима; README с полным гайдом по injection в YAML/Helm
- External Secrets Operator (ESO): синхронизирует Vault секреты в k8s Secrets,
  ClusterSecretStore с AppRole auth, README с примерами ExternalSecret в
  YAML манифестах, Helm чартах и ArgoCD

Обновлены: addons.yml (3 новых флага + секции), vault.yml.example
(smtp_relay_password, aws_kms_*, eso_approle_secret_id),
playbooks/addons.yml, Makefile
2026-04-25 18:31:06 +03:00
Sergey Antropoff
a209b8a9bf feat: добавлены аддоны CSI-S3, CSI-Ceph, CSI-GlusterFS, Vaultwarden
- CSI-S3 (ctrox/csi-s3): монтирование S3/MinIO бакетов как PVC,
  авто-интеграция с addon_minio через internal MinIO endpoint
- Rook-Ceph (csi-ceph): distributed block (RWO) и filesystem (RWX) storage,
  оператор Helm + CephCluster CRD + StorageClasses, опциональный Dashboard Ingress
- CSI GlusterFS: установка glusterfs-client на все ноды, CSI Driver из GitHub
  releases, StorageClass с Heketi provisioner, Endpoints для прямых подключений
- Vaultwarden (guerzon/vaultwarden): self-hosted Bitwarden, авто-версия,
  SMTP smtp.yandex.ru:465/force_tls, WebSocket, ingress TLS, ServiceMonitor

Обновлены: playbooks/addons.yml (8 пропущенных аддонов + 4 новых),
group_vars/all/addons.yml (флаги + комментарии конфигурации),
vault.yml.example (vaultwarden_admin_token, smtp_password, heketi_secret),
Makefile (PHONY + 4 новых цели)
2026-04-25 18:19:22 +03:00
Sergey Antropoff
e1e84aeb86 feat: добавить аддоны Harbor, Gitea, ownCloud OCIS, Nextcloud
Harbor (harbor/harbor, авто-версия):
- Values-шаблон с полной конфигурацией expose/ingress/tls/persistence
- external DB при addon_postgresql=true (Job для создания user/db)
- internal PostgreSQL + Redis в противном случае
- Метрики + ServiceMonitor при addon_prometheus_stack=true

Gitea (gitea-charts/gitea, авто-версия):
- Values-шаблон, встроенный PostgreSQL отключается при addon_postgresql=true
- Job для создания dedicated user/db в shared PostgreSQL
- Опциональный SSH NodePort (gitea_ssh_enabled)
- ServiceMonitor при addon_prometheus_stack=true

ownCloud OCIS (owncloud/ocis, авто-версия):
- Values-шаблон с insecure-режимом для HTTP
- Persistence для storageusers/storagesystem/nats/search/thumbnails
- Пароль admin через extraEnv IDM_ADMIN_PASSWORD
- ServiceMonitor при addon_prometheus_stack=true

Nextcloud (nextcloud/nextcloud, авто-версия):
- Values-шаблон, external PostgreSQL при addon_postgresql=true
- Job для создания dedicated user/db в shared PostgreSQL
- Встроенный Redis для file locking
- nextcloud-exporter (metrics sidecar) + ServiceMonitor
- Cron-задача для фоновых операций

Авто-версия: helm search repo ... --output json | from_json[0].version
Применяется при version: "" — переопределяется через ARGS="-e *_version=X.Y.Z"
2026-04-25 11:49:29 +03:00
Sergey Antropoff
71a5e14ebb refactor: убрать Traefik, добавить метрики и ingress аддонам, provisioning DB/MinIO
Traefik:
- k3s-server-config.yaml.j2: traefik всегда в disable list (убрана переменная)
- group_vars/all/main.yml: убрана k3s_disable_traefik
- ingress-nginx/tasks: убраны задачи отключения Traefik (дублирование)

Prometheus метрики (по умолчанию включены):
- postgresql, mysql: metrics.enabled + serviceMonitor (при addon_prometheus_stack)
- minio: metrics.serviceMonitor (при addon_prometheus_stack)
- velero: metrics.enabled + serviceMonitor (при addon_prometheus_stack)
- crowdsec: ServiceMonitor для /metrics:6060 (при addon_prometheus_stack)
- ingress-nginx: ingress_nginx_metrics_enabled: true (было false)

Ingress:
- velero: velero_ingress_enabled (API port 8085)
- crowdsec: crowdsec_ingress_enabled (LAPI port 8080)

Databasus — provisioning shared ресурсов вместо деплоя своих:
- addon_postgresql: Job создаёт user 'databasus' + database 'databasus' в shared PG
- addon_minio: Job создаёт bucket 'databasus-backups' в shared MinIO
- vault_databasus_db_password добавлен в vault.yml.example
2026-04-25 11:19:42 +03:00
Sergey Antropoff
80dbf686b0 feat: добавить аддоны postgresql, mysql, databasus, minio, velero, crowdsec
Базы данных:
- addons/postgresql: Bitnami PostgreSQL (Helm), vault_postgresql_*
- addons/mysql: Bitnami MySQL (Helm), vault_mysql_*

Объектное хранилище и backup:
- addons/minio: Bitnami MinIO в distributed режиме (4 ноды по умолчанию)
- addons/velero: backup кластера через Velero + MinIO как S3 backend;
  bucket создаётся автоматически через mc Job; daily schedule 02:00

Безопасность:
- addons/crowdsec: CrowdSec LAPI + DaemonSet агенты, мониторит ingress-nginx;
  опциональный nginx bouncer (crowdsec_nginx_bouncer_enabled: true)

Резервное копирование БД:
- addons/databasus: OCI chart, автоматически подключается к addon_postgresql
  и addon_mysql когда те включены (shared endpoint через postgresql_external_host
  и mysql_external_host)

Общее:
- group_vars/all/addons.yml: флаги addon_* + конфиги для всех 6 аддонов;
  shared DB endpoints postgresql_external_host / mysql_external_host
- group_vars/all/vault.yml.example: примеры паролей для всех аддонов
- Makefile: targets addon-postgresql/mysql/databasus/minio/velero/crowdsec
2026-04-25 11:11:18 +03:00
Sergey Antropoff
095b276cb3 first commit 2026-04-17 08:37:27 +03:00