Update .env.example and README.md to clarify CHECK_TARGETS usage, allowing for a mix of private/public IPs and FQDNs. Added examples and detailed instructions for target configuration.
Publish cloudflare-balancer Docker image / build-and-push (push) Successful in 34s
Publish cloudflare-balancer Docker image / build-and-push (push) Successful in 34s
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
|
||||
# Обязательные
|
||||
POOL_DOMAIN=app.example.com
|
||||
# Цели: любые IP (частные или публичные) и имена (внутрикорпоративные или глобальные FQDN), через запятую.
|
||||
# Пример смешанного списка:
|
||||
# CHECK_TARGETS=10.0.0.1,192.168.1.5,node.dc.internal,api.public.example.com,203.0.113.1
|
||||
CHECK_TARGETS=10.0.0.1,10.0.0.2,backend.example.org
|
||||
CLOUDFLARE_API_TOKEN=
|
||||
|
||||
|
||||
@@ -37,6 +37,22 @@
|
||||
- **Проверка бэкендов** (`CHECK_MODE=curl`) — запросы к URL из целей / шаблону `CURL_URL_TEMPLATE`.
|
||||
- **Порт `STATUS_HTTP_PORT`** — только встроенная страница статуса внутри контейнера, не health-check.
|
||||
|
||||
### CHECK_TARGETS: не только «локальные» адреса
|
||||
|
||||
В инструкции в примерах часто встречаются частные IP — это лишь **пример**. Формат **тот же** для любых целей, которые контейнер реально может проверить:
|
||||
|
||||
| Тип | Примеры |
|
||||
|-----|---------|
|
||||
| Частные IP | `10.0.0.1`, `192.168.1.10`, `172.16.0.5` |
|
||||
| Публичные (глобальные) IP | `203.0.113.50`, адреса VPS/анонсеров |
|
||||
| Внутренние FQDN | `backend.prod.local`, `node1.dc.company.internal` |
|
||||
| Публичные домены | `api.example.com`, `origin.example.org` |
|
||||
| URL (режим `curl`) | `https://api.example.com/health`, `http://203.0.113.1:8080/ping` |
|
||||
|
||||
Имя резолвится через **DNS из контейнера** (`dig`); для сопоставления с пулом Cloudflare используется полученный **A/AAAA**. Проверка — обычный **ping** к IP или **curl** к URL.
|
||||
|
||||
Единственное условие: **из сети контейнера** до цели должен доходить трафик (маршрутизация, файрвол, `docker network`, VPN и т.д.). Публичные хосты в интернете обычно доступны из стандартного bridge; частные адреса за NAT без проброса/маршрута — нет, пока не настроите сеть.
|
||||
|
||||
---
|
||||
|
||||
## Требования
|
||||
@@ -87,7 +103,7 @@ docker run --rm \
|
||||
| Переменная | Обязательно | По умолчанию | Описание |
|
||||
|------------|-------------|--------------|----------|
|
||||
| `POOL_DOMAIN` | да | — | DNS-имя пула (все **A/AAAA** с этим именем управляются скриптом). |
|
||||
| `CHECK_TARGETS` | да | — | Список целей через **запятую**: IP, hostname или `http(s)://...`. |
|
||||
| `CHECK_TARGETS` | да | — | Список через **запятую**: любые **достижимые** цели — частные/публичные **IP**, внутренние или **глобальные** имена, либо `http(s)://...` (подробнее — подраздел **«CHECK_TARGETS: не только „локальные“ адреса»** выше). |
|
||||
| `CLOUDFLARE_API_TOKEN` | да* | — | Bearer-токен Cloudflare. |
|
||||
| `CLOUDFLARE_API_KEY` | нет | — | Алиас для токена (если не задан `CLOUDFLARE_API_TOKEN`). |
|
||||
| `CLOUDFLARE_ZONE_ID` | нет | — | ID зоны; если пусто — поиск по имени зоны. |
|
||||
@@ -162,6 +178,18 @@ docker run --rm --cap-add=NET_RAW \
|
||||
cloudflare-balancer:latest
|
||||
```
|
||||
|
||||
### Смешанные цели: частные IP, публичный домен, глобальный IP
|
||||
|
||||
```bash
|
||||
docker run --rm --cap-add=NET_RAW \
|
||||
-e POOL_DOMAIN=app.example.com \
|
||||
-e CHECK_TARGETS='10.0.0.1,origin.example.com,203.0.113.10' \
|
||||
-e CLOUDFLARE_API_TOKEN="$CLOUDFLARE_API_TOKEN" \
|
||||
cloudflare-balancer:latest
|
||||
```
|
||||
|
||||
*(Замените `203.0.113.10` на реальный публичный IP бэкенда; `origin.example.com` — на любой FQDN, который резолвится и отвечает на ping из контейнера.)*
|
||||
|
||||
### Веб-статус + проброс порта + whitelist
|
||||
|
||||
При доступе **с хоста Docker** клиентский IP в контейнере часто совпадает с адресом **шлюза bridge** (часто `172.17.0.1` или подсеть `172.17.0.0/16`). Добавьте её или конкретный IP в whitelist.
|
||||
|
||||
Reference in New Issue
Block a user