docker containers for all binaries
This commit is contained in:
1 parent
6f5aa35df5
commit
200760f390
8 files changed
+197
No files matched your search
@@ -32,3 +32,110 @@ docker run -d --platform linux/amd64 --cap-add NET_RAW --name prober \
|
||||
Примечания:
|
||||
--platform linux/amd64 бинарник в bin/ собран под Linux x86_64
|
||||
--cap-add NET_RAW нужен проберу для ICMP-проверок
|
||||
|
||||
===============================================================================
|
||||
|
||||
Сборка образа admin-dashboard (из корня репозитория):
|
||||
|
||||
docker build --platform linux/amd64 -t cloud-ip-validator-admin-dashboard -f deploy/docker/admin-dashboard/Dockerfile .
|
||||
|
||||
Запуск контейнера admin-dashboard:
|
||||
|
||||
docker run -d --platform linux/amd64 -p 8090:8090 --name admin-dashboard \
|
||||
-e ADMIN_DASHBOARD_CONTROL_API_URL=<http://control-api-host:port> \
|
||||
-e ADMIN_DASHBOARD_LISTEN_ADDR=:8090 \
|
||||
-e ADMIN_DASHBOARD_CONTROL_API_TIMEOUT_SECONDS=10 \
|
||||
-e ADMIN_DASHBOARD_LAST_COMPLETED_COUNT=20 \
|
||||
-e ADMIN_DASHBOARD_POLL_INTERVAL_SECONDS=5 \
|
||||
cloud-ip-validator-admin-dashboard
|
||||
|
||||
Рабочий пример (стенд 62.176.10.113):
|
||||
|
||||
docker run -d --platform linux/amd64 -p 8090:8090 --name admin-dashboard \
|
||||
-e ADMIN_DASHBOARD_CONTROL_API_URL=http://62.176.10.113:8081 \
|
||||
cloud-ip-validator-admin-dashboard
|
||||
|
||||
Переменные окружения:
|
||||
ADMIN_DASHBOARD_CONTROL_API_URL обязательная
|
||||
ADMIN_DASHBOARD_LISTEN_ADDR опциональная, дефолт :8090
|
||||
ADMIN_DASHBOARD_CONTROL_API_TIMEOUT_SECONDS опциональная, дефолт 10
|
||||
ADMIN_DASHBOARD_LAST_COMPLETED_COUNT опциональная, дефолт 20
|
||||
ADMIN_DASHBOARD_POLL_INTERVAL_SECONDS опциональная, дефолт 5
|
||||
|
||||
Примечания:
|
||||
--platform linux/amd64 бинарник в bin/ собран под Linux x86_64
|
||||
-p 8090:8090 проброс порта дашборда наружу
|
||||
|
||||
===============================================================================
|
||||
|
||||
Сборка образа control-api (из корня репозитория):
|
||||
|
||||
docker build --platform linux/amd64 -t cloud-ip-validator-control-api -f deploy/docker/control-api/Dockerfile .
|
||||
|
||||
У control-api конфиг содержит списки (validators/sites/check_types/targets/
|
||||
ip_addresses) и имена env-переменных для OpenStack-креденшлов — это не
|
||||
шаблонизируется через docker run -e, как у остальных компонентов. Конфиг
|
||||
монтируется файлом (по образцу configs/control-api.example.yaml, который
|
||||
также лежит в образе как /etc/cloud-ip-validator/control-api.yaml.example),
|
||||
а сама база данных — volume'ом для персистентности.
|
||||
|
||||
Запуск контейнера control-api:
|
||||
|
||||
docker run -d --platform linux/amd64 -p 8080:8080 --name control-api \
|
||||
-v /path/to/control-api.yaml:/etc/cloud-ip-validator/control-api.yaml:ro \
|
||||
-v cloud-ip-validator-db:/var/lib/cloud-ip-validator \
|
||||
-e OS_AUTH_URL=<keystone_url> \
|
||||
-e OS_PROJECT_ID=<project_id> \
|
||||
-e OS_REGION_NAME=<region> \
|
||||
-e OS_TOKEN=<token> \
|
||||
cloud-ip-validator-control-api
|
||||
|
||||
(при auth_method: password — вместо OS_TOKEN передать OS_USERNAME,
|
||||
OS_USER_DOMAIN_NAME, OS_PASSWORD; для openstack.mode: mock креденшлы не
|
||||
нужны)
|
||||
|
||||
Примечания:
|
||||
--platform linux/amd64 бинарник в bin/ собран под Linux x86_64
|
||||
-p 8080:8080 проброс порта control-api наружу
|
||||
-v .../control-api.yaml обязателен: конфиг с validators/sites/targets/ip_addresses
|
||||
-v cloud-ip-validator-db volume для /var/lib/cloud-ip-validator/control-api.db
|
||||
|
||||
===============================================================================
|
||||
|
||||
Сборка образа validator-agent (из корня репозитория):
|
||||
|
||||
docker build --platform linux/amd64 -t cloud-ip-validator-validator-agent -f deploy/docker/validator-agent/Dockerfile .
|
||||
|
||||
Запуск контейнера validator-agent:
|
||||
|
||||
docker run -d --platform linux/amd64 --cap-add NET_RAW --name validator-agent \
|
||||
-e VALIDATOR_AGENT_VALIDATOR_ID=<validator_id> \
|
||||
-e VALIDATOR_AGENT_CONTROL_API_URL=<http://control-api-host:port> \
|
||||
-e VALIDATOR_AGENT_POLL_INTERVAL_SECONDS=5 \
|
||||
-e VALIDATOR_AGENT_SELF_CHECK_TIMEOUT_SECONDS=10 \
|
||||
-e VALIDATOR_AGENT_HTTPS_TIMEOUT_SECONDS=10 \
|
||||
-e VALIDATOR_AGENT_ICMP_TIMEOUT_SECONDS=5 \
|
||||
-e VALIDATOR_AGENT_ICMP_COUNT=3 \
|
||||
-e VALIDATOR_AGENT_SSH_ENABLED=false \
|
||||
-e VALIDATOR_AGENT_SSH_TIMEOUT_SECONDS=5 \
|
||||
cloud-ip-validator-validator-agent
|
||||
|
||||
Переменные окружения:
|
||||
VALIDATOR_AGENT_VALIDATOR_ID обязательная, должен совпадать с
|
||||
control-api config's validators[].validator_id
|
||||
VALIDATOR_AGENT_CONTROL_API_URL обязательная
|
||||
VALIDATOR_AGENT_POLL_INTERVAL_SECONDS опциональная, дефолт 5
|
||||
VALIDATOR_AGENT_SELF_CHECK_TIMEOUT_SECONDS опциональная, дефолт 10
|
||||
VALIDATOR_AGENT_HTTPS_TIMEOUT_SECONDS опциональная, дефолт 10
|
||||
VALIDATOR_AGENT_ICMP_TIMEOUT_SECONDS опциональная, дефолт 5
|
||||
VALIDATOR_AGENT_ICMP_COUNT опциональная, дефолт 3
|
||||
VALIDATOR_AGENT_SSH_ENABLED опциональная, дефолт false
|
||||
VALIDATOR_AGENT_SSH_TIMEOUT_SECONDS опциональная, дефолт 5
|
||||
|
||||
Примечания:
|
||||
--platform linux/amd64 бинарник в bin/ собран под Linux x86_64
|
||||
--cap-add NET_RAW нужен агенту для ICMP-проверок
|
||||
ip_echo_urls в шаблон не выведены — при отсутствии в конфиге
|
||||
агент сам подставляет дефолт (api.ipify.org,
|
||||
ifconfig.me/ip); свой список задавайте через
|
||||
смонтированный конфиг вместо шаблона при необходимости
|
||||
@@ -0,0 +1,11 @@
|
||||
FROM alpine:3.20
|
||||
|
||||
RUN apk add --no-cache gettext
|
||||
|
||||
COPY bin/admin-dashboard /usr/local/bin/admin-dashboard
|
||||
COPY deploy/docker/admin-dashboard/admin-dashboard.yaml.tmpl /etc/admin-dashboard/admin-dashboard.yaml.tmpl
|
||||
COPY deploy/docker/admin-dashboard/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"]
|
||||
@@ -0,0 +1,10 @@
|
||||
server:
|
||||
listen_addr: "${ADMIN_DASHBOARD_LISTEN_ADDR}"
|
||||
|
||||
control_api:
|
||||
base_url: "${ADMIN_DASHBOARD_CONTROL_API_URL}"
|
||||
timeout_seconds: ${ADMIN_DASHBOARD_CONTROL_API_TIMEOUT_SECONDS}
|
||||
|
||||
overview:
|
||||
last_completed_count: ${ADMIN_DASHBOARD_LAST_COMPLETED_COUNT}
|
||||
poll_interval_seconds: ${ADMIN_DASHBOARD_POLL_INTERVAL_SECONDS}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
: "${ADMIN_DASHBOARD_CONTROL_API_URL:?ADMIN_DASHBOARD_CONTROL_API_URL is required}"
|
||||
|
||||
export ADMIN_DASHBOARD_LISTEN_ADDR="${ADMIN_DASHBOARD_LISTEN_ADDR:-:8090}"
|
||||
export ADMIN_DASHBOARD_CONTROL_API_TIMEOUT_SECONDS="${ADMIN_DASHBOARD_CONTROL_API_TIMEOUT_SECONDS:-10}"
|
||||
export ADMIN_DASHBOARD_LAST_COMPLETED_COUNT="${ADMIN_DASHBOARD_LAST_COMPLETED_COUNT:-20}"
|
||||
export ADMIN_DASHBOARD_POLL_INTERVAL_SECONDS="${ADMIN_DASHBOARD_POLL_INTERVAL_SECONDS:-5}"
|
||||
|
||||
envsubst '${ADMIN_DASHBOARD_LISTEN_ADDR} ${ADMIN_DASHBOARD_CONTROL_API_URL} ${ADMIN_DASHBOARD_CONTROL_API_TIMEOUT_SECONDS} ${ADMIN_DASHBOARD_LAST_COMPLETED_COUNT} ${ADMIN_DASHBOARD_POLL_INTERVAL_SECONDS}' \
|
||||
< /etc/admin-dashboard/admin-dashboard.yaml.tmpl > /etc/admin-dashboard/admin-dashboard.yaml
|
||||
|
||||
exec /usr/local/bin/admin-dashboard -config /etc/admin-dashboard/admin-dashboard.yaml
|
||||
@@ -0,0 +1,12 @@
|
||||
FROM alpine:3.20
|
||||
|
||||
RUN mkdir -p /var/lib/cloud-ip-validator /etc/cloud-ip-validator
|
||||
|
||||
COPY bin/control-api /usr/local/bin/control-api
|
||||
COPY configs/control-api.example.yaml /etc/cloud-ip-validator/control-api.yaml.example
|
||||
|
||||
WORKDIR /var/lib/cloud-ip-validator
|
||||
VOLUME ["/var/lib/cloud-ip-validator"]
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/control-api"]
|
||||
CMD ["-config", "/etc/cloud-ip-validator/control-api.yaml"]
|
||||
@@ -0,0 +1,11 @@
|
||||
FROM alpine:3.20
|
||||
|
||||
RUN apk add --no-cache gettext
|
||||
|
||||
COPY bin/validator-agent /usr/local/bin/validator-agent
|
||||
COPY deploy/docker/validator-agent/validator-agent.yaml.tmpl /etc/validator-agent/validator-agent.yaml.tmpl
|
||||
COPY deploy/docker/validator-agent/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"]
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
: "${VALIDATOR_AGENT_VALIDATOR_ID:?VALIDATOR_AGENT_VALIDATOR_ID is required}"
|
||||
: "${VALIDATOR_AGENT_CONTROL_API_URL:?VALIDATOR_AGENT_CONTROL_API_URL is required}"
|
||||
|
||||
export VALIDATOR_AGENT_POLL_INTERVAL_SECONDS="${VALIDATOR_AGENT_POLL_INTERVAL_SECONDS:-5}"
|
||||
export VALIDATOR_AGENT_SELF_CHECK_TIMEOUT_SECONDS="${VALIDATOR_AGENT_SELF_CHECK_TIMEOUT_SECONDS:-10}"
|
||||
export VALIDATOR_AGENT_HTTPS_TIMEOUT_SECONDS="${VALIDATOR_AGENT_HTTPS_TIMEOUT_SECONDS:-10}"
|
||||
export VALIDATOR_AGENT_ICMP_TIMEOUT_SECONDS="${VALIDATOR_AGENT_ICMP_TIMEOUT_SECONDS:-5}"
|
||||
export VALIDATOR_AGENT_ICMP_COUNT="${VALIDATOR_AGENT_ICMP_COUNT:-3}"
|
||||
export VALIDATOR_AGENT_SSH_ENABLED="${VALIDATOR_AGENT_SSH_ENABLED:-false}"
|
||||
export VALIDATOR_AGENT_SSH_TIMEOUT_SECONDS="${VALIDATOR_AGENT_SSH_TIMEOUT_SECONDS:-5}"
|
||||
|
||||
envsubst '${VALIDATOR_AGENT_VALIDATOR_ID} ${VALIDATOR_AGENT_CONTROL_API_URL} ${VALIDATOR_AGENT_POLL_INTERVAL_SECONDS} ${VALIDATOR_AGENT_SELF_CHECK_TIMEOUT_SECONDS} ${VALIDATOR_AGENT_HTTPS_TIMEOUT_SECONDS} ${VALIDATOR_AGENT_ICMP_TIMEOUT_SECONDS} ${VALIDATOR_AGENT_ICMP_COUNT} ${VALIDATOR_AGENT_SSH_ENABLED} ${VALIDATOR_AGENT_SSH_TIMEOUT_SECONDS}' \
|
||||
< /etc/validator-agent/validator-agent.yaml.tmpl > /etc/validator-agent/validator-agent.yaml
|
||||
|
||||
exec /usr/local/bin/validator-agent -config /etc/validator-agent/validator-agent.yaml
|
||||
@@ -0,0 +1,14 @@
|
||||
validator_id: "${VALIDATOR_AGENT_VALIDATOR_ID}"
|
||||
control_api_url: "${VALIDATOR_AGENT_CONTROL_API_URL}"
|
||||
poll_interval_seconds: ${VALIDATOR_AGENT_POLL_INTERVAL_SECONDS}
|
||||
|
||||
self_check:
|
||||
timeout_seconds: ${VALIDATOR_AGENT_SELF_CHECK_TIMEOUT_SECONDS}
|
||||
|
||||
checks:
|
||||
https_timeout_seconds: ${VALIDATOR_AGENT_HTTPS_TIMEOUT_SECONDS}
|
||||
icmp_timeout_seconds: ${VALIDATOR_AGENT_ICMP_TIMEOUT_SECONDS}
|
||||
icmp_count: ${VALIDATOR_AGENT_ICMP_COUNT}
|
||||
ssh:
|
||||
enabled: ${VALIDATOR_AGENT_SSH_ENABLED}
|
||||
timeout_seconds: ${VALIDATOR_AGENT_SSH_TIMEOUT_SECONDS}
|
||||
Reference in new issue
Block a user