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 (опционально)
This commit is contained in:
Sergey Antropoff
2026-04-25 18:41:54 +03:00
parent 684fc25908
commit e57e676392
20 changed files with 1213 additions and 0 deletions

View File

@@ -36,6 +36,8 @@ addon_vaultwarden: false # Vaultwarden (self-hosted Bitwarden-совм
addon_smtp_relay: false # SMTP Relay (Postfix → Yandex/другой SMTP) — для уведомлений из подов
addon_vault: false # HashiCorp Vault (секреты, PKI, динамические credentials)
addon_external_secrets: false # External Secrets Operator → Vault/AWS/GCP (k8s Secret sync)
addon_jenkins: false # Jenkins CI/CD (Helm, dynamic k8s agents, JCasC)
addon_netbird: false # NetBird VPN (управляющий сервер + subnet router + exit node)
# ─── NFS Server ───────────────────────────────────────────────────────────────
nfs_exports:
@@ -321,6 +323,35 @@ minio_api_ingress_host: "s3.example.com"
# external_secrets_vault_store_name: "vault-backend"
# Пароль задаётся в vault.yml: vault_eso_approle_secret_id
# ─── Jenkins ──────────────────────────────────────────────────────────────────
# CI/CD сервер с dynamic k8s pod agents.
# Пароль задаётся в vault.yml: vault_jenkins_admin_password
# jenkins_ingress_host: "jenkins.example.com"
# jenkins_storage_size: "20Gi"
# jenkins_plugins: [...] # переопределить список плагинов
# jenkins_agent_enabled: true
# ─── Gitea Actions ───────────────────────────────────────────────────────────<E29480><E29480><EFBFBD>
# GitHub Actions-совместимая CI/CD встроенная в Gitea.
# gitea_actions_enabled: false # включить Actions в Gitea (добавить в addon-gitea)
# gitea_actions_runner_enabled: false # установить act_runner Deployment (DinD)
# gitea_actions_runner_replicas: 2 # параллельных runner
# gitea_actions_runner_dind_enabled: true # Docker-in-Docker для docker build/run в jobs
# ─── NetBird VPN ──────────────────────────────────────────────────────────────
# Self-hosted WireGuard-based VPN. Management + Signal + Coturn (STUN/TURN) + kube-vip LB.
# Пароли задаются в vault.yml: vault_netbird_coturn_password, vault_netbird_router_setup_key
# netbird_domain: "netbird.example.com"
# netbird_management_lb_ip: "" # пусто = kube-vip назначит автоматически
# netbird_signal_lb_ip: ""
# netbird_coturn_lb_ip: ""
# Subnet router (доступ к подсетям кластера из VPN):
# netbird_subnet_router_enabled: false
# netbird_subnet_routes: ["192.168.1.0/24", "10.42.0.0/16"]
# Exit node (весь интернет-трафик VPN-клиентов через k3s ноду):
# netbird_exit_node_enabled: false
# После установки — настрой маршруты в Management UI
# ─── etcd backup ──────────────────────────────────────────────────────────────
etcd_backup_dir: "{{ k3s_data_dir }}/server/db/snapshots"
etcd_backup_retention: 5 # сколько снимков хранить

View File

@@ -88,3 +88,11 @@ vault_azure_kv_client_secret: ""
# Получить после шага 6 в addons/external-secrets/README.md:
# vault write -f -field=secret_id auth/approle/role/eso-role/secret-id
vault_eso_approle_secret_id: "" # AppRole Secret ID для ESO → Vault
# ─── Jenkins ───────────────────────────────────────────────────────────────────
vault_jenkins_admin_password: "changeme-jenkins"
# ─── NetBird VPN ───────────────────────────────────────────────────────────────
vault_netbird_coturn_password: "changeme-coturn" # пароль TURN credentials
vault_netbird_router_setup_key: "" # Setup Key из NetBird Management UI → Setup Keys
vault_netbird_exit_node_setup_key: "" # Setup Key для exit node (можно тот же что router)