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
|
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
|
CHECK_TARGETS=10.0.0.1,10.0.0.2,backend.example.org
|
||||||
CLOUDFLARE_API_TOKEN=
|
CLOUDFLARE_API_TOKEN=
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,22 @@
|
|||||||
- **Проверка бэкендов** (`CHECK_MODE=curl`) — запросы к URL из целей / шаблону `CURL_URL_TEMPLATE`.
|
- **Проверка бэкендов** (`CHECK_MODE=curl`) — запросы к URL из целей / шаблону `CURL_URL_TEMPLATE`.
|
||||||
- **Порт `STATUS_HTTP_PORT`** — только встроенная страница статуса внутри контейнера, не health-check.
|
- **Порт `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** с этим именем управляются скриптом). |
|
| `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_TOKEN` | да* | — | Bearer-токен Cloudflare. |
|
||||||
| `CLOUDFLARE_API_KEY` | нет | — | Алиас для токена (если не задан `CLOUDFLARE_API_TOKEN`). |
|
| `CLOUDFLARE_API_KEY` | нет | — | Алиас для токена (если не задан `CLOUDFLARE_API_TOKEN`). |
|
||||||
| `CLOUDFLARE_ZONE_ID` | нет | — | ID зоны; если пусто — поиск по имени зоны. |
|
| `CLOUDFLARE_ZONE_ID` | нет | — | ID зоны; если пусто — поиск по имени зоны. |
|
||||||
@@ -162,6 +178,18 @@ docker run --rm --cap-add=NET_RAW \
|
|||||||
cloudflare-balancer:latest
|
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
|
### Веб-статус + проброс порта + whitelist
|
||||||
|
|
||||||
При доступе **с хоста Docker** клиентский IP в контейнере часто совпадает с адресом **шлюза bridge** (часто `172.17.0.1` или подсеть `172.17.0.0/16`). Добавьте её или конкретный IP в whitelist.
|
При доступе **с хоста Docker** клиентский IP в контейнере часто совпадает с адресом **шлюза bridge** (часто `172.17.0.1` или подсеть `172.17.0.0/16`). Добавьте её или конкретный IP в whitelist.
|
||||||
|
|||||||
Reference in New Issue
Block a user