diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..bc2968b Binary files /dev/null and b/.DS_Store differ diff --git a/deploy/.DS_Store b/deploy/.DS_Store new file mode 100644 index 0000000..d3f2b4d Binary files /dev/null and b/deploy/.DS_Store differ diff --git a/deploy/docker/.DS_Store b/deploy/docker/.DS_Store new file mode 100644 index 0000000..4cb52e0 Binary files /dev/null and b/deploy/docker/.DS_Store differ diff --git a/deploy/docker/RUN.txt b/deploy/docker/RUN.txt new file mode 100644 index 0000000..7866a3a --- /dev/null +++ b/deploy/docker/RUN.txt @@ -0,0 +1,34 @@ +Сборка образа (из корня репозитория): + +docker build --platform linux/amd64 -t cloud-ip-validator-prober -f deploy/docker/prober/Dockerfile . + +Запуск контейнера-пробера: + +docker run -d --platform linux/amd64 --cap-add NET_RAW --name prober \ + -e PROBER_SITE_ID= \ + -e PROBER_CONTROL_API_URL= \ + -e PROBER_POLL_INTERVAL_SECONDS=5 \ + -e PROBER_TCP_TIMEOUT_SECONDS=5 \ + -e PROBER_ICMP_TIMEOUT_SECONDS=5 \ + -e PROBER_ICMP_COUNT=3 \ + cloud-ip-validator-prober + +Рабочий пример (стенд 62.176.10.113): + +docker run -d --platform linux/amd64 --cap-add NET_RAW --name prober \ + -e PROBER_SITE_ID=sbas \ + -e PROBER_CONTROL_API_URL=http://62.176.10.113:8081 \ + cloud-ip-validator-prober + +Переменные окружения: + PROBER_SITE_ID обязательная, должна быть зарегистрирована в + control-api (PUT /api/v1/admin/config/sites/{index}) + PROBER_CONTROL_API_URL обязательная + PROBER_POLL_INTERVAL_SECONDS опциональная, дефолт 5 + PROBER_TCP_TIMEOUT_SECONDS опциональная, дефолт 5 + PROBER_ICMP_TIMEOUT_SECONDS опциональная, дефолт 5 + PROBER_ICMP_COUNT опциональная, дефолт 3 + +Примечания: + --platform linux/amd64 бинарник в bin/ собран под Linux x86_64 + --cap-add NET_RAW нужен проберу для ICMP-проверок diff --git a/deploy/docker/prober/Dockerfile b/deploy/docker/prober/Dockerfile new file mode 100644 index 0000000..6d7b933 --- /dev/null +++ b/deploy/docker/prober/Dockerfile @@ -0,0 +1,11 @@ +FROM alpine:3.20 + +RUN apk add --no-cache gettext + +COPY bin/prober /usr/local/bin/prober +COPY deploy/docker/prober/prober.yaml.tmpl /etc/prober/prober.yaml.tmpl +COPY deploy/docker/prober/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] diff --git a/deploy/docker/prober/docker-entrypoint.sh b/deploy/docker/prober/docker-entrypoint.sh new file mode 100644 index 0000000..f1e8b18 --- /dev/null +++ b/deploy/docker/prober/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -eu + +: "${PROBER_SITE_ID:?PROBER_SITE_ID is required}" +: "${PROBER_CONTROL_API_URL:?PROBER_CONTROL_API_URL is required}" + +export PROBER_POLL_INTERVAL_SECONDS="${PROBER_POLL_INTERVAL_SECONDS:-5}" +export PROBER_TCP_TIMEOUT_SECONDS="${PROBER_TCP_TIMEOUT_SECONDS:-5}" +export PROBER_ICMP_TIMEOUT_SECONDS="${PROBER_ICMP_TIMEOUT_SECONDS:-5}" +export PROBER_ICMP_COUNT="${PROBER_ICMP_COUNT:-3}" + +envsubst '${PROBER_SITE_ID} ${PROBER_CONTROL_API_URL} ${PROBER_POLL_INTERVAL_SECONDS} ${PROBER_TCP_TIMEOUT_SECONDS} ${PROBER_ICMP_TIMEOUT_SECONDS} ${PROBER_ICMP_COUNT}' \ + < /etc/prober/prober.yaml.tmpl > /etc/prober/prober.yaml + +exec /usr/local/bin/prober -config /etc/prober/prober.yaml diff --git a/deploy/docker/prober/prober.yaml.tmpl b/deploy/docker/prober/prober.yaml.tmpl new file mode 100644 index 0000000..951310a --- /dev/null +++ b/deploy/docker/prober/prober.yaml.tmpl @@ -0,0 +1,8 @@ +site_id: "${PROBER_SITE_ID}" +control_api_url: "${PROBER_CONTROL_API_URL}" +poll_interval_seconds: ${PROBER_POLL_INTERVAL_SECONDS} + +checks: + tcp_timeout_seconds: ${PROBER_TCP_TIMEOUT_SECONDS} + icmp_timeout_seconds: ${PROBER_ICMP_TIMEOUT_SECONDS} + icmp_count: ${PROBER_ICMP_COUNT}