HAProxy Dynamic Provisioning SystemНазначение:Система автоматического управления HAProxy:
- создание backend'ов
- работа с maps (hosts / passth / acme)
- выпуск SSL сертификатов (Let's Encrypt)
- поддержка multi-node backend
- zero-downtime reload
---
📦 АрхитектураClient
↓
HAProxy (:80 / :443)
↓
Maps routing:
├── hosts.map (HTTP backend)
├── passth.map (TLS SNI backend)
└── acme_backends.map (ACME HTTP backend)
↓
Backends (auto-generated)
---
⚙️ CLI инструментОсновной скрипт:/usr/local/bin/haproxy-map-update.sh
---
📌 Общий синтаксисhaproxy-map-update.sh set DOMAIN BACKEND MODE IP_LIST PORT [-y]
haproxy-map-update.sh del DOMAIN
---
🧪 Примеры использования---
1. HTTP сайт (один сервер)haproxy-map-update.sh set ftp.cloud-life.site ftp http 10.10.1.37 80 -y
Результат:
- backend ftp:80
- certbot через HAProxy (8888)
- hosts.map обновлён
---
2. HTTPS backend (multi-node passthrough)haproxy-map-update.sh set games.cloud-life.site games passth "10.10.1.46,10.10.1.47,10.10.1.48" 443 -y
Результат:
- acme_games (HTTP/80)
- games backend (HTTPS/443)
- roundrobin между нодами
- SSL verify none
---
3. Удаление доменаhaproxy-map-update.sh del games.cloud-life.site
---
🔐 SSL схема (Let's Encrypt)HTTP challenge flow:Internet → HAProxy :80
→ /.well-known/acme-challenge/
→ 127.0.0.1:8888 (certbot standalone)
---
⚙️ Backend typesHTTP backend:- один сервер или несколько
- порт 80
- certbot active
PASSTH backend:- TLS SNI routing
- порт 443
- multi-node support
- acme backend auto-created
---
📂 Maps/etc/haproxy/maps/hosts.map
/etc/haproxy/maps/passth.map
/etc/haproxy/maps/acme_backends.map
---
🧠 Особенности системы- Backend создаётся автоматически при отсутствии
- Поддержка multi-server (comma-separated IPs)
- HTTPS backend автоматически получает ssl verify none
- ACME backend создаётся отдельно для passth
- Maps сортируются по длине ключа (важно для subdomains)
- HAProxy reload только после всех операций
---
🚀 Multi-server примерIP_LIST="10.10.1.46,10.10.1.47,10.10.1.48"
PORT=443
Результат:
server games1 10.10.1.46:443 ssl verify none check
server games2 10.10.1.47:443 ssl verify none check
server games3 10.10.1.48:443 ssl verify none check
---
💡 Режим -yАвтоматическое создание backend без вопросов:
-y
---
🏁 ИтогСистема заменяет:
- ручное редактирование haproxy.cfg
- ручное управление backend'ами
- ручное создание SSL
- ручной reload
И превращает HAProxy в:
динамический ingress controller уровня mini-Kubernetes