docs: обновить документацию — добавить splitgw, ingress-proxypass, hysteria2-server

docs/networking.md:
  - Раздел ingress-proxypass: архитектура, пример конфигурации с TLS и auth
  - Раздел splitgw: TPROXY-маршрутизация, systemd и k8s режимы, пример TV
  - Раздел hysteria2-server: установка на VPS, SSH-пароль, URL для клиентов

docs/make-reference.md:
  - addon-mediaserver (с флагом без Hysteria2)
  - addon-hysteria2-server (SSH-ключ и интерактивный пароль -k)
  - addon-splitgw (systemd и k8s DaemonSet)
  - addon-ingress-proxypass

docs/troubleshooting.md:
  - Строки таблицы: 502/503/404 для ingress-proxypass, TPROXY для splitgw,
    firewall/TLS для hysteria2-server, Prowlarr sidecar для mediaserver
  - Разделы диагностики: ingress-proxypass, splitgw, hysteria2-server
    с конкретными командами kubectl/systemctl/iptables
This commit is contained in:
Sergey Antropoff
2026-04-26 07:36:46 +03:00
parent e9e0ffa3c2
commit fafcc34f03
3 changed files with 171 additions and 0 deletions

View File

@@ -127,6 +127,102 @@ netbird up --management-url grpc://netbird.example.com:80
---
## ingress-proxypass — проксировать внешние сервисы
Позволяет открыть по домену любой сервис, работающий **вне кластера** (роутер, NAS, Plex на отдельной машине и т.д.), через тот же ingress-nginx VIP. Для каждой записи создаётся: `Service (ClusterIP, без selector)` + `Endpoints` + `Ingress`. Подробнее: [addons/ingress-proxypass/README.md](../addons/ingress-proxypass/README.md).
```yaml
# group_vars/all/addons.yml
addon_ingress_proxypass: true
ingress_proxypass_proxies:
- name: router
hosts: [router.home.ru]
ips: [192.168.1.1]
port: 8080
- name: nas
hosts: [nas.home.ru]
ips: [192.168.1.20]
port: 5000
tls:
enabled: true
secretName: wildcard-tls
- name: grafana-ext
hosts: [grafana.home.ru]
ips: [192.168.1.60]
port: 3000
auth:
enabled: true
username: admin
password: "{{ vault_proxy_password }}" # хэш генерируется автоматически
```
```bash
make addon-ingress-proxypass
```
Маршрут трафика: `kube-vip VIP → ingress-nginx → Service → Endpoints → внешний IP:PORT`
---
## splitgw — прозрачный split-tunnel gateway
Устанавливает `sing-box` с TPROXY-перехватом на хосте или K3S DaemonSet. Трафик с указанных устройств (Smart TV и т.п.) маршрутизируется по правилам: YouTube/Google → Hysteria2 VPN, RU-сервисы и частные сети → прямой маршрут. Подробнее: [addons/splitgw/README.md](../addons/splitgw/README.md).
```yaml
# group_vars/all/addons.yml (+ group [splitgw] в inventory)
addon_splitgw: true
splitgw_tv_sources:
- "192.168.1.100/32" # Smart TV
splitgw_router_ip: "192.168.1.1"
# vault_hysteria2_url задаётся в vault.yml
```
```bash
# Режим systemd на хосте (по умолчанию):
make addon-splitgw
# Режим K8s DaemonSet:
make addon-splitgw ARGS="-e splitgw_deploy_mode=k8s"
```
Маршрут: `Smart TV → шлюз splitgw (TPROXY:7893) → sing-box → YouTube/Google: Hysteria2 VPN | остальное: прямой`
---
## hysteria2-server — VPN-сервер на удалённом VPS
Устанавливает Hysteria2-сервер на внешний VPS (не часть кластера). Сервер нужен для `splitgw` и `mediaserver` (Prowlarr sidecar). Подробнее: [addons/hysteria2-server/README.md](../addons/hysteria2-server/README.md).
```yaml
# inventory/hosts.ini
[hysteria2_server]
myvps ansible_host=1.2.3.4 ansible_user=root
# group_vars/all/vault.yml
vault_hysteria2_server_password: "мойпароль"
```
```bash
# По SSH-ключу:
make addon-hysteria2-server
# По SSH-паролю (интерактивный ввод):
make addon-hysteria2-server ARGS="-k"
```
После установки выводится готовая URL-строка для Shadowrocket / NekoBox / Hiddify:
```
hysteria2://пароль@1.2.3.4:443?insecure=1#MyVPS
```
---
## kube-vip LoadBalancer
kube-vip обрабатывает все `LoadBalancer` сервисы — каждый сервис с `type: LoadBalancer` автоматически получает IP из подсети кластера.