From 6f5aa35df5cac0a4807536f67b989e09926f0a9f Mon Sep 17 00:00:00 2001 From: Sergey Bashashin Date: Sat, 29 Aug 2026 16:05:48 +0300 Subject: [PATCH] docker container for prober --- .DS_Store | Bin 0 -> 6148 bytes deploy/.DS_Store | Bin 0 -> 6148 bytes deploy/docker/.DS_Store | Bin 0 -> 6148 bytes deploy/docker/RUN.txt | 34 ++++++++++++++++++++++ deploy/docker/prober/Dockerfile | 11 +++++++ deploy/docker/prober/docker-entrypoint.sh | 15 ++++++++++ deploy/docker/prober/prober.yaml.tmpl | 8 +++++ 7 files changed, 68 insertions(+) create mode 100644 .DS_Store create mode 100644 deploy/.DS_Store create mode 100644 deploy/docker/.DS_Store create mode 100644 deploy/docker/RUN.txt create mode 100644 deploy/docker/prober/Dockerfile create mode 100644 deploy/docker/prober/docker-entrypoint.sh create mode 100644 deploy/docker/prober/prober.yaml.tmpl diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bc2968b1d40bffeedd352fac42668ae4c3cce700 GIT binary patch literal 6148 zcmeHK!AiqG5Z!I7ZYV+y3Oz1(Em&(Q7B8XJA26Z^mD-r1!I&*gYmidNS%1hc@q3)v z-3Xz2@gP!WVCGF{XExoJveRLV@%}tKV9aHV2~fm}1LhmSb<`E9*hm$S>pc{E39@t& z#41?Hroew>0N>pv3)z@WSj@`r?>(5rQ95h2K6s^C+t}O^Le#~L|DZB|Hk!@T{%CrI zpU#zvgTfyL7tuHyx;rN-nT?`kJkrc+Om(eq7KGzCL$|S5^o}}B z*=={0O}Xf`TTR(H>@Js%*xlPdJ{vy9PlHwoh0KgiA zwSbSa1lCB4p2gfCtblM+3TR5X9Wl5mhq$zPp2ggtDQDacAKX5f+X;p1r^EhIr!(#u zBufks17!wq_5*RT|DXOm|LY_&!~ij{o(%BXz#sJCY__+qoDzGj1ib}C!MxnyR|z<} h6+#gnqOHjlGfTi|=R<$S}c7e)gou aD>lb|OaX@8W5Uj{>yNK>->|&LoZ}QKne0 zMMUS9-ArU6A|tq=Ty5x@?VES3mk|ZRamHRwyYu$2X_`YP`*py$LpjPx8reMZZG%Py zr~nn90#twsd|ZJnv7_ \ + -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}