Перейти к основному содержимому

Установка

В не зависимости от выбраного вида установки hbf-server, необходимо настроить общие переменные окружения:

HBF_SERVER - IP-адрес hbf-server.

Setup HBF_SERVER
export HBF_SERVER=0.0.0.0

HBF_SERVER_PORT - порт, используемый hbf-server.

Setup HBF_SERVER_PORT
  export HBF_SERVER_PORT=9650

DNS_SERVER - Список доверенных IP-адресов DNS серверов.

Setup DNS_SERVER
export DNS_SERVER=['8.8.8.8']

VERSION - версия агента, которую пользователь хочет установить.

Setup VERSION
export VERSION=1.9.1
Перед развертыванием убедитесь, что у вас установлен docker:
Get docker version
docker -v
Клонируем репозиторий, переходим в директорию репозитория и переключаемся на тег необходимой версии командой:
Git setup
git clone https://github.com/H-BF/sgroups
cd sgroups
git fetch --tags --all
git checkout tags/v${VERSION}
Создайте конфигурационный файл для hbf-agent командой:
Configuration file setup
cat <<EOF > config-agent.yaml
---
graceful-shutdown: 10s

logger:
level: DEBUG

fqdn-rules:
strategy: dns

extapi:
svc:
def-daial-duration: 10s
sgroups:
dial-duration: 3s
address: 'tcp://${HBF_SERVER}:${HBF_SERVER_PORT}'
sync-status:
interval: 3s #mandatory
push: true

netlink:
watcher: #netlink watcher
linger: 1s

base-rules:
networks: ['${HBF_SERVER}/32']

dns:
nameservers: ${DNS_SERVER}
proto: tcp
port: 53
dial-duration: 3s
read-duration: 5s #default
write-duration: 5s #default 5s
retries: 5 #default 1
retry-timeout: 3s #default 1s

telemetry:
useragent: "string"
endpoint: 0.0.0.0:9660
metrics:
enable: true
healthcheck:
enable: true
EOF
Собираем образ hbf-agent командой:
docker build -f docker/Dockerfile.agent --tag to-nft:v${VERSION} .
Запускаем hbf-agent командой:
docker run \
-d \
-v ./config-agent.yaml:/opt/swarm/etc/to-nft/config-agent.yaml \
--name hbf-agent \
--entrypoint "/app/bin/to-nft" \
--privileged \
--user=0 \
to-nft:v${VERSION} -config /opt/swarm/etc/to-nft/config-agent.yaml

Параметры конфигурационного файла

Для настройки агентов требуется использовать конфигурационный файл, который содержит поля, позволяющие настраивать параметры в соответствии с потребностями пользователей. Так же есть алтьтернативный способ - переменные окружения. Обратите внимание, что переменные окружения являются более приоритетными, чем параметры из файла. Так же часть параметров можно настроить через файл, а часть через переменные окружения.

Параметры файла config-agent.yaml
Параметр / Переменная окруженияОписаниеТипОбязательно

exit-on-success

NFT_EXIT_ON_SUCCESS

Завершение процесса, если успешно применилась конфигурация для nft. Значение по умолчанию: false.BooleanНет

continue-on-failure

NFT_CONTINUE_ON_FAILURE

В случае ошибки на уровне job, агент не завершает свою работу (идет на цикл перезапуска своих job). Значение по умолчанию: true

BooleanНет

logger.level

NFT_LOGGER_LEVEL

Уровень логгирования. Допустимые значения: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, PANIC.StringНет

graceful-shutdown

NFT_GRACEFUL_SHUTDOWN

Определяет период времени, в течение которого процесс агента должен корректно завершиться. По истечению периода, процесс завершиться с кодом 1. Значение по умолчанию: 10s

StringНет

netns

NFT_NETNS

Имя сетевого namespac'a.StringНет

netlink.watcher.linger

NFT_NETLINK_WATCHER_LINGER

Время, в течение которого из netlink'а ожидаются события. Минимальное значение: 1s.String

base-rules.networks

NFT_BASE_RULES_NETWORKS

Список IP адресов, к которым всегда должен egress быть доступ. Не рекомендуется устанавливать в качестве значения пустой список.

ListДа

fqdn-rules.strategy

NFT_FQDN_RULES_STRATEGY

Способ обработки fqdn-правил. Значение по умолчанию: dns. Допустимые значения: dns, ndpi, combine.

StringНет

dns.nameservers

NFT_DNS_NAMESERVERS

Список доверенных IP-адресов DNS серверов.ListДа

dns.proto

NFT_DNS_PROTO

Протокол L4, используемый DNS сервером. Значение по умолчанию: udp. Допустимые значения: udp, tcp.

StringДа

dns.port

NFT_DNS_PORT

Порт, используемый DNS сервером. Значение по умолчанию: 53.IntДа

dns.retries

NFT_DNS_RETRIES

Количество повторных запросов к DNS серверу при сбое. Значение по умолчанию: 3.IntНет

dns.retry-timeout

NFT_DNS_RETRY_TIMEOUT

Период между повторным запросом DNS сервера при сбое. Значение по умолчанию: 1s.StringНет

dns.dial-duration

NFT_DNS_DIAL_DURATION

Период времени подключения к DNS серверу. Значение по умолчанию: 3s.StringНет

dns.write-duration

NFT_DNS_WRITE_DURATION

Максимальное временя ожидания ответа от DNS сервера при запросе резолва FQDN. Значение по умолчанию: 5s.

StringНет

dns.read-duration

NFT_DNS_READ_DURATION

Максимальное временя ожидания ответа от DNS сервера. Значение по умолчанию: 5s.StringНет

extapi.svc.def-dial-duration

NFT_EXTAPI_SVC_DEF_DIAL_DURATION

Длительность ожидания подключения к службе.StringНет

extapi.svc.sgroups.address

NFT_EXTAPI_SVC_SGROUPS_ADDRESS

IP адрес hbf-сервера.StringДа

extapi.svc.sgroups.dial-duration

NFT_EXTAPI_SVC_SGROUPS_DIAL_DURATION

Продолжительность ожидания подключения к hbf-серверу.StringНет

extapi.svc.sgroups.sync-status.interval

NFT_EXTAPI_SVC_SGROUPS_SYNC_STATUS_INTERVAL

Период синхронизации с hbf-сервером. Значение по умолчанию: 10s.StringДа

extapi.svc.sgroups.sync-status.push

NFT_EXTAPI_SVC_SGROUPS_SYNC_STATUS_PUSH

Использовать push модель для синхронизации с hbf-сервером. Значение по умолчанию: false.BooleanНет

telemetry.endpoint

NFT_TELEMETRY_ENDPOINT

IP адрес и порт, для доступа к метрикам. Рекомендуемое значение: 0.0.0.0:9660.StringНет

telemetry.metrics.enable

NFT_TELEMETRY_METRICS_ENABLE

Включить/Отключить возможность получения метрик. Значение по умолчанию: true. Пример получения метрик: curl 0.0.0.0:9660/metrics.

BooleanНет

telemetry.healthcheck.enable

NFT_TELEMETRY_HEALTHCHECK_ENABLE

Включить/Отключить возможность получения информации о статусе hbf-агента. Значение по умолчанию: true. Пример получения статуса: curl 0.0.0.0:9660/healthcheck.

BooleanНет

telemetry.useragent

NFT_TELEMETRY_USERAGENT

Позволяет устанавливать метку в параметры метрикStringНет

telemetry.profile.enable

NFT_TELEMETRY_PROFILE_ENABLE

Включить/Отключить возможность получения профиля hbf-агента. Значение по умолчанию: true. Пример получения профиля: curl 0.0.0.0:9660/debug/pprof/goroutine?debug=2.

BooleanНет