Установка Консоли управления с помощью инсталлятора¶
В инструкции описана установка Консоли управления «ПроAPI Защита» на выделенные серверы с помощью инсталлятора. Инсталлятор разворачивает на серверах кластер Kubernetes, Консоль управления и её базы данных и при необходимости настраивает отказоустойчивость.
Инструкция относится к версии «ПроAPI Защита» 3.0.0. Установка выполняется из дистрибутива этой версии (Дистрибутив); доступ к интернет серверам и рабочему месту администратора не нужен.
Фильтрующие ноды устанавливаются тем же инсталлятором по инструкции Установка фильтрующей ноды с помощью инсталлятора.
Для пилотного проекта фильтрующую ноду допускается установить на сервер Консоли управления профиля standalone (Фильтрующая нода на сервере Консоли управления).
Компоненты¶
- Консоль управления – веб-интерфейс и API для управления фильтрующими нодами, политиками безопасности и мониторинга. Хранит данные в PostgreSQL и ClickHouse.
- Фильтрующая нода – компонент, который проверяет трафик защищаемых приложений по спецификации OpenAPI. Подключается к Консоли управления по HTTPS.
- Инсталлятор (
installer) – программа, которая устанавливает, обновляет, проверяет и удаляет Консоль управления. Запускается на рабочем месте администратора и подключается к серверам по SSH. - Серверы Консоли управления – серверы, на которые устанавливается Консоль управления. На них работает кластер Kubernetes (дистрибутив k0s).
Пользователи (браузер) Фильтрующие ноды
│ HTTPS 443 │ HTTPS 443
▼ ▼
┌── Адрес Консоли управления (VIP Консоли или балансировщик) ──┐
│ │
│ Сервер 1 Сервер 2 Сервер 3 │
│ Консоль + БД Консоль + БД Консоль + БД │
│ │
└──────────────────── VIP Kubernetes API ──────────────────────────┘
▲
│ SSH 22, TCP 6443
Рабочее место администратора
(installer)
Обратите внимание
Фильтрующая нода продолжает проверять и блокировать трафик, даже если Консоль управления временно недоступна.
Варианты установки¶
Количество серверов¶
| Профиль | Серверов | Назначение |
|---|---|---|
standalone | 1 | Пилотный проект, демонстрация, тестовая среда. При отказе сервера Консоль управления недоступна до его восстановления. |
ha (отказоустойчивый) | 3 и больше | Промышленная эксплуатация. Консоль управления продолжает работать при отказе любого одного сервера без действий администратора. |
Отказоустойчивому профилю нужно не меньше трёх серверов: кластер и базы данных сохраняют работоспособность, пока доступно большинство серверов (2 из 3).
Публикация Консоли управления (профиль ha)¶
| Способ | Назначение |
|---|---|
| VIP Консоли управления (по умолчанию) | Серверы находятся в одной сети, балансировщика нет. Нужен один дополнительный свободный IP-адрес, который автоматически переходит на работающий сервер. |
Внешний балансировщик (external) | Аппаратный, программный или облачный балансировщик распределяет запросы между всеми серверами и исключает неработающие. |
Обратите внимание
Некоторые облачные балансировщики не отслеживают переход IP-адреса на другой сервер. Если перед Консолью управления стоит балансировщик облачной платформы, используйте способ external.
Дистрибутив¶
Дистрибутив «ПроAPI Защита» 3.0.0 передаётся по ссылке с паролем. Ссылку и пароль предоставляет менеджер WMX. По ссылке открывается папка 3.0.0 с файлами:
| Файл | Размер | Содержимое | Когда нужен |
|---|---|---|---|
apifw-installer-linux-amd64 | 61 МБ | Инсталлятор для Linux x86-64. Устанавливает, обновляет, проверяет и удаляет Консоль управления и фильтрующие ноды | Всегда |
proapi-3.0.0-standalone.bundle.tar.gz | 1,5 ГБ | Бандл Консоли управления для профиля standalone: кластер Kubernetes, Консоль управления, базы данных PostgreSQL и ClickHouse для одного сервера | Консоль управления на одном сервере |
proapi-3.0.0-ha.bundle.tar.gz | 1,8 ГБ | Бандл Консоли управления для профиля ha: те же компоненты, что в бандле standalone, а также компоненты отказоустойчивости – репликация баз данных между серверами и переход VIP-адреса на работающий сервер | Консоль управления на трёх и более серверах, для обоих способов публикации |
proapi-node-3.0.0.bundle.tar.gz | 673 МБ | Бандл фильтрующей ноды: кластер Kubernetes для сервера ноды, nginx с модулем «ПроAPI Защита», агент и хранилище событий | Фильтрующие ноды; один бандл для любого числа нод |
SHA256SUMS | меньше 1 КБ | Контрольные суммы файлов дистрибутива | Проверка, что файлы скачаны и перенесены без повреждений |
- Бандл – файл со всеми программами и образами контейнеров, которые нужны для установки. Инсталлятор устанавливает компоненты из бандла, поэтому доступ в интернет не нужен.
- Для Консоли управления нужен один бандл –того профиля, который выбран для установки (Количество серверов). Бандл профиля
standaloneне подходит для профиляha, и наоборот. - Бандл ноды нужен, только если фильтрующие ноды устанавливаются этим инсталлятором (Установка фильтрующей ноды с помощью инсталлятора).
- Инсталлятор и бандлы используются только из одного дистрибутива.
Внимание
Не распаковывайте файлы .tar.gz. Инсталлятор принимает бандл в виде файла, сам проверяет его целостность и распаковывает.
Требования¶
Серверы Консоли управления¶
| Параметр | Требование |
|---|---|
| Количество | 1 (standalone) или 3 и больше (ha) |
| Архитектура | x86-64 (amd64) |
| Операционная система | Linux с systemd. Alpine Linux не поддерживается |
| Ресурсы | Не меньше 4 vCPU, 8 ГБ оперативной памяти и 80 ГБ диска на каждом сервере. При высокой нагрузке ресурсы увеличиваются |
| Состояние | Чистая система: без установленных ранее Kubernetes, k0s или других оркестраторов |
| Настройки ОС | cgroup v2, стандартное ядро дистрибутива. Swap рекомендуется отключить (см. Настройки операционной системы) |
| Доступ | Пользователь root или пользователь с правом sudo без запроса пароля |
| Время | Синхронизировано по NTP на всех серверах |
| Имена серверов | Различаются у всех серверов |
| Данные | Хранятся в каталоге /var/lib/wmx/api-firewall/local-path. Для хранения на отдельном диске его монтируют в /var/lib/wmx/api-firewall до установки (см. Отдельный диск для данных) |
Сетевые адреса¶
- IP-адрес или DNS-имя каждого сервера для подключения по SSH.
- Для профиля
ha, если у серверов несколько сетей: адрес каждого сервера во внутренней сети, через которую серверы связываются между собой. - Для профиля
ha: свободный IP-адрес для VIP Kubernetes API в подсети серверов, вне диапазона DHCP, и маска подсети, например/24. - Для профиля
haсо способом публикации VIP: свободный IP-адрес для VIP Консоли управления в той же подсети, вне диапазона DHCP. - DNS-имя Консоли управления, например
proapi.example.ru. Запись типа A указывает:- для
standalone– на IP-адрес сервера; - для
haсо способом VIP – на VIP Консоли управления; - для
haсо способомexternal– на адрес балансировщика.
- для
Сертификат¶
Выберите один из вариантов (подробнее – в разделе TLS-сертификат Консоли управления):
- Самоподписанный (по умолчанию). Подготовка не требуется: инсталлятор создаёт собственный центр сертификации (CA) и выпускает сертификат для DNS-имени Консоли управления. Файл CA передаётся на фильтрующие ноды.
- Собственный сертификат от вашего или публичного центра сертификации: файл сертификата с цепочкой (
fullchain.pem) и файл закрытого ключа без пароля (privkey.pem), выданные на DNS-имя Консоли управления. - Let's Encrypt – публичный сертификат, который программа certbot на одном из серверов получает и продлевает автоматически. Требуются публичное DNS-имя и доступ к Консоли управления из интернета по TCP 80 и 443. Вариант недоступен, если Консоль управления перенесена с порта 80 параметром
ingress.httpPort. - Без TLS – только если перед Консолью управления стоит прокси-сервер или балансировщик, который сам завершает TLS.
Учётные данные и файлы¶
- Ссылка на дистрибутив «ПроAPI Защита» 3.0.0 и пароль к ней (см. Дистрибутив).
- Лицензионный ключ «ПроAPI Защита».
- Email для учётной записи первого администратора Консоли управления; пароль создаёт инсталлятор (см. Первый администратор и пароли).
Рабочее место администратора¶
- Linux x86-64 с клиентом OpenSSH (команды
ssh,ssh-keygen). - Свободное место: не меньше 5 ГБ в домашнем каталоге (файлы дистрибутива) и не меньше 3 ГБ в каталоге
/tmp(инсталлятор временно распаковывает в него бандл). - Для скачивания дистрибутива – любой компьютер с доступом в интернет и способ перенести файлы на рабочее место, например съёмный носитель.
- Рабочим местом может быть отдельный компьютер или один из серверов Консоли управления. Во втором случае инсталлятор запускается от имени пользователя, указанного в
ssh.user(с правомsudoбез пароля), и обращается к своему серверу без SSH. Права root инсталлятор получает сам черезsudo; запуск черезsudoили от имениrootне требуется.
Сетевое взаимодействие¶
Обозначения в таблицах:
- Серверы – все серверы Консоли управления;
- Контроллеры – первые три сервера в списке
hostsфайлаinstaller.yaml(в профилеstandalone– единственный сервер); - Рабочее место – компьютер, с которого запускается инсталлятор;
- VIP API и VIP Консоли – адреса из файла
installer.yaml.
Пользователи и фильтрующие ноды → Консоль управления¶
| Источник | Назначение | Протокол и порт | Назначение соединения |
|---|---|---|---|
| Браузеры пользователей | Адрес Консоли управления | TCP 443 | Веб-интерфейс и API |
| Браузеры пользователей | Адрес Консоли управления | TCP 80 | Необязательно: перенаправление с http:// на https:// |
| Фильтрующие ноды | Адрес Консоли управления | TCP 443 | Регистрация ноды, получение настроек, передача событий и статистики |
Адрес Консоли управления – VIP Консоли, адрес балансировщика или IP-адрес сервера (standalone).
Если заданы параметры ingress.httpsPort и ingress.httpPort (например, 8443 и 8080, когда на сервере Консоли управления установлена фильтрующая нода), вместо портов 443 и 80 используются указанные.
В варианте без TLS Консоль управления принимает только HTTP на порту 80 или на порту из параметра ingress.httpPort, порт 443 закрыт. Доступ к этим портам разрешается только с вашего прокси-сервера.
Рабочее место → серверы¶
| Источник | Назначение | Протокол и порт | Назначение соединения |
|---|---|---|---|
| Рабочее место | Все серверы | TCP 22 | SSH: установка, обновление, удаление |
| Рабочее место | VIP API (ha) или сервер (standalone) | TCP 6443 | Kubernetes API: установка, обновление, проверка состояния |
Доступ нужен на время установки, обновления и проверки состояния.
Между серверами¶
Рекомендуется разрешить весь трафик между серверами Консоли управления в их общей сети. Если политика безопасности требует перечислить порты:
| Источник | Назначение | Протокол и порт | Назначение соединения |
|---|---|---|---|
| Контроллеры | Контроллеры | TCP 2380 | Хранилище состояния кластера (etcd) |
| Все серверы | Контроллеры, VIP API | TCP 6443 | Kubernetes API |
| Контроллеры | Контроллеры, VIP API | TCP 9443 | Подключение сервера к кластеру |
| Все серверы | Контроллеры, VIP API | TCP 8132 | Служебный туннель кластера |
| Все серверы | Все серверы | TCP 10250 | Управление контейнерами |
| Все серверы | Все серверы | TCP 179 | Маршрутизация между серверами (BGP) |
| Все серверы | Все серверы | Весь трафик подсетей 10.244.0.0/16 и 10.96.0.0/12 | Трафик между контейнерами и сервисами кластера |
Контроллеры (ha) | Мультикаст 224.0.0.18 | IP-протокол 112 (VRRP) | Переход VIP API |
Все серверы (ha, способ VIP) | Все серверы | TCP и UDP 7946 | Переход VIP Консоли |
Обратите внимание
В профиле ha правила должны разрешать трафик на VIP-адреса: VIP может находиться на любом из серверов. Локальный межсетевой экран серверов (ufw, firewalld, собственные правила iptables) не должен блокировать подсети 10.244.0.0/16 и 10.96.0.0/12.
Внешний балансировщик → серверы (профиль ha, способ external)¶
| Источник | Назначение | Протокол и порт | Назначение соединения |
|---|---|---|---|
| Балансировщик | Все серверы | TCP 443 | Консоль управления по HTTPS |
| Балансировщик | Все серверы | TCP 80 | Необязательно: перенаправление с http:// |
Настройки балансировщика:
- режим балансировки – TCP (не HTTP): TLS-сертификат установлен на серверах Консоли управления;
- проверка доступности – TCP на порт 443, интервал 2–5 секунд, исключение сервера после 2–3 неудачных проверок подряд;
- чтобы Консоль управления получала IP-адреса пользователей, включите PROXY protocol (IP-адреса пользователей за балансировщиком);
- в пул входят все серверы Консоли управления.
Службы организации¶
| Источник | Назначение | Протокол и порт | Назначение соединения |
|---|---|---|---|
| Серверы | DNS- и NTP-серверы организации | UDP/TCP 53, UDP 123 | Разрешение имён и синхронизация времени |
Доступ в интернет серверам и рабочему месту не нужен: все компоненты устанавливаются из дистрибутива.
Let's Encrypt¶
Требуется только при использовании сертификата Let's Encrypt.
| Источник | Назначение | Протокол и порт | Назначение соединения |
|---|---|---|---|
| Интернет (серверы Let's Encrypt) | Адрес Консоли управления | TCP 80 и TCP 443 | Проверка владения DNS-именем при выпуске и продлении |
| Сервер с certbot | acme-v02.api.letsencrypt.org | TCP 443 | Выпуск и продление сертификата |
| Все серверы | Сервер с certbot | TCP 8888 (параметр ingress.acmeChallenge.port) | Передача проверочных запросов certbot |
Адреса серверов Let's Encrypt не публикуются, поэтому ограничить доступ к портам 80 и 443 по источнику нельзя.
Порты, которые не открываются наружу¶
Порты 2380, 9443, 8132, 10250, 179, 7946 и порты баз данных (5432, 8123, 9000, 9181) используются только между серверами Консоли управления. Не открывайте их для пользовательских сетей и интернета.
Подготовка рабочего места администратора¶
Скачивание дистрибутива¶
-
На компьютере с доступом в интернет откройте ссылку на дистрибутив и введите пароль. Скачайте по одному нужные файлы:
Файл Когда скачивать apifw-installer-linux-amd64Всегда SHA256SUMSВсегда proapi-3.0.0-standalone.bundle.tar.gzПрофиль standaloneproapi-3.0.0-ha.bundle.tar.gzПрофиль haproapi-node-3.0.0.bundle.tar.gzЕсли устанавливаются фильтрующие ноды Файлы сохраняются с теми же именами, что в папке дистрибутива. Не переименовывайте их: имена используются в командах этой инструкции и в файле
SHA256SUMS. Если браузер добавил к имени номер, напримерapifw-installer-linux-amd64 (1), удалите лишний файл и скачайте заново. -
Перенесите скачанные файлы на рабочее место администратора в домашний каталог пользователя, например на съёмном носителе.
Каталог установки¶
-
Создайте каталог установки и переместите в него файлы дистрибутива:
mkdir -p ~/proapi mv ~/apifw-installer-linux-amd64 ~/SHA256SUMS ~/proapi-*.bundle.tar.gz ~/proapi/ cd ~/proapi && ls -lКоманда
lsвыводит перенесённые файлы, например для профиляhaс фильтрующими нодами:SHA256SUMS apifw-installer-linux-amd64 proapi-3.0.0-ha.bundle.tar.gz proapi-node-3.0.0.bundle.tar.gz -
Проверьте, что файлы не повреждены:
sha256sum -c --ignore-missing SHA256SUMSДля каждого файла должно выводиться
OK, напримерproapi-3.0.0-ha.bundle.tar.gz: OK. Если для файла выводитсяFAILED, скачайте и перенесите этот файл заново. Файлы, которые не скачивались, команда пропускает. -
Подготовьте инсталлятор и проверьте его запуск:
cp apifw-installer-linux-amd64 installer chmod +x installer ./installer versionКоманда выводит версию инсталлятора и версии компонентов «ПроAPI Защита», с которыми он выпущен:
installer 3.0.0 (commit …) Release components: chart 3.0.0 manager 3.0.0 ui 3.0.0 module 3.0.0 agent 3.0.0 apistore 3.0.0Версию инсталлятора указывают при обращении в техническую поддержку. Файл
apifw-installer-linux-amd64оставьте в каталоге: он нужен для проверки контрольных сумм и для установки фильтрующих нод.
Файлы .tar.gz не распаковывайте: инсталлятор работает с ними как есть.
Все дальнейшие команды выполняются из каталога ~/proapi. Если рабочим местом служит один из серверов Консоли управления, команды выполняются от имени пользователя, указанного в ssh.user, без sudo перед ./installer.
SSH-ключ¶
Если SSH-ключа нет, создайте его:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ''
Скопируйте открытый ключ на каждый сервер (если инсталлятор запускается на сервере Консоли управления – на все остальные серверы). Команда один раз запросит пароль пользователя:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@10.0.0.11 # ЗАМЕНИТЕ пользователя и адрес
Ключи серверов¶
Инсталлятор подключается только к серверам, ключи которых уже известны рабочему месту. Подключитесь к каждому серверу один раз и подтвердите ключ ответом yes:
ssh root@10.0.0.11 hostname # ЗАМЕНИТЕ; повторите для каждого сервера
Команда должна вывести имя сервера без запроса пароля. Если выводится предупреждение REMOTE HOST IDENTIFICATION HAS CHANGED, сервер был переустановлен: удалите старый ключ командой ssh-keygen -R 10.0.0.11 и подключитесь снова.
Подготовка серверов¶
Проверки инсталлятора¶
Перед изменениями на серверах инсталлятор проверяет каждый сервер и останавливается с сообщением о причине, если:
- архитектура сервера отличается от x86-64;
- на сервере остались данные предыдущей установки;
- для данных свободно меньше 20 ГБ;
- имена серверов совпадают;
- время на серверах расходится больше чем на 30 секунд;
- у пользователя нет прав
rootилиsudoбез пароля; - сервер использует cgroup v1 вместо cgroup v2;
- в ядре нет нужных модулей или их загрузка запрещена;
- (
ha) VIP-адрес занят или находится вне подсети серверов; - на сервере нет нужных команд или места для бандла.
Следующие проверки выводят предупреждение WARNING: node <адрес>: ... и не останавливают установку: включён swap, в настройках ОС выключена пересылка пакетов (net.ipv4.ip_forward = 0), SELinux работает в режиме Enforcing без пакета container-selinux. Рекомендуется устранить их до установки (Настройки операционной системы).
sudo без пароля¶
Если для подключения используется не root, разрешите пользователю sudo без пароля. На каждом сервере (команда один раз запрашивает пароль пользователя):
echo 'admin ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/proapi # ЗАМЕНИТЕ admin на имя пользователя
sudo chmod 440 /etc/sudoers.d/proapi
sudo visudo -cf /etc/sudoers.d/proapi # проверка синтаксиса
Проверка с рабочего места: ssh admin@10.0.0.11 sudo -n true && echo OK.
Отдельный диск для данных (необязательно)¶
Данные Консоли управления хранятся в каталоге /var/lib/wmx/api-firewall/local-path. Чтобы хранить их на отдельном диске, смонтируйте диск в каталог /var/lib/wmx/api-firewall на каждом сервере до установки. Пример для диска /dev/sdb:
lsblk # найдите имя пустого диска
sudo mkfs.ext4 /dev/sdb # ВНИМАНИЕ: данные на диске будут удалены. ЗАМЕНИТЕ /dev/sdb
sudo mkdir -p /var/lib/wmx/api-firewall
echo "UUID=$(sudo blkid -s UUID -o value /dev/sdb) /var/lib/wmx/api-firewall ext4 defaults 0 2" | sudo tee -a /etc/fstab # ЗАМЕНИТЕ /dev/sdb
sudo mount -a && df -h /var/lib/wmx/api-firewall
Команда df должна показать новый диск, а не системный (/).
- Новый диск должен быть пустым; каталог
lost+foundдопускается. - Компоненты кластера и образы контейнеров остаются на системном диске.
- Допускается монтирование диска в
/var/lib/wmx/api-firewall/local-path. Другие точки монтирования внутри/var/lib/wmx/api-firewallне поддерживаются. - Каталог
/var/lib/wmxи путь к нему не должны быть символическими ссылками.
Настройки операционной системы¶
Инсталлятор проверяет настройки ОС автоматически. Выполняйте действия этого раздела, только если установка остановилась с ошибкой или вывела предупреждение. Требования действуют также для серверов фильтрующих нод.
cgroup v2. Сообщение the server uses cgroup v1, and Kubernetes needs cgroup v2. Проверка:
stat -fc %T /sys/fs/cgroup/ # требуется ответ cgroup2fs
Если ответ другой (например, tmpfs), включите cgroup v2 и перезагрузите сервер.
В РЕД ОС и других ОС с командой grubby:
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
sudo reboot
В Astra Linux, Альт, Debian, Ubuntu:
sudo sed -i 's/^GRUB_CMDLINE_LINUX="/&systemd.unified_cgroup_hierarchy=1 /' /etc/default/grub # в Альт файл /etc/sysconfig/grub2
sudo update-grub
sudo reboot
После перезагрузки повторите проверку командой stat.
Модули ядра. Кластер при запуске сам загружает модули overlay, nf_conntrack, br_netfilter, ip_tables и включает пересылку пакетов. Ручная настройка требуется только в следующих случаях:
kernel modules ... are missing from the server's kernel– сервер загружен с нестандартным ядром. Загрузите стандартное ядро дистрибутива.-
loading modules is turned off on this server– в ОС запрещена загрузка модулей ядра. Настройте загрузку модулей при старте сервера:printf '%s\n' overlay nf_conntrack br_netfilter ip_tables | sudo tee /etc/modules-load.d/proapi.conf sudo reboot -
the modprobe command is missing– установите пакетkmodиз репозитория ОС.
Пересылка пакетов. Предупреждение <файл> sets net.ipv4.ip_forward = 0. Кластер включает пересылку пакетов при запуске, но ОС может снова применить указанный файл, например при перезапуске сети. После этого сеть кластера перестаёт работать. Откройте файл (sudo nano <файл>) и замените в этой строке 0 на 1.
Swap. Предупреждение swap is on. При включённом swap и нехватке памяти работа кластера замедляется. Отключите swap:
sudo swapoff -a
sudo sed -i '/\sswap\s/s/^/#/' /etc/fstab # swap не включится после перезагрузки
swapon --show # пустой вывод: swap выключен
SELinux. Предупреждение SELinux is in enforcing mode, and the container-selinux package is not installed. Установите пакет до установки Консоли управления:
sudo dnf install container-selinux
Если пакета нет в репозитории ОС, обратитесь в техническую поддержку.
Лицензионный ключ¶
Лицензионный ключ не сохраняется в файлах конфигурации. Если он не задан, инсталлятор запросит его при запуске; вводимые символы не отображаются.
Для повторных запусков удобно использовать файл:
cat > secrets.env <<'EOF'
APIFW_LICENSE_KEY='ЗАМЕНИТЕ_лицензионный_ключ'
EOF
chmod 600 secrets.env
Перед запуском инсталлятора загрузите его в сеанс терминала:
set -a; . ./secrets.env; set +a
Обратите внимание
- Ключ заключается в одинарные кавычки
'...'. - Пробелы вокруг знака
=не допускаются. - Файл должен быть доступен только администратору. Не размещайте его в общих каталогах и системах контроля версий.
Конфигурация установки¶
Мастер настройки¶
./installer init
Мастер задаёт вопросы по одному и сохраняет ответы в файл installer.yaml; вопросы, которые к выбранному варианту не относятся, пропускаются. Стрелки выбирают вариант, Enter и Tab переходят к следующему шагу, Shift+Tab – к предыдущему, Alt+Enter добавляет строку в список, Ctrl+C завершает мастер без сохранения.
| Вопрос | Ответ |
|---|---|
| Способ доставки | Offline |
| Профиль | Standalone или HA |
| VM | Адрес каждого сервера для SSH, по одному в строке. Первые три сервера становятся контроллерами |
| SSH user | root или пользователь с sudo без пароля |
| SSH порт | Обычно 22 |
| Способ SSH-доступа | SSH key и путь к ключу, например ~/.ssh/id_ed25519 |
| DNS hostname для ingress | DNS-имя Консоли управления без https://, например proapi.example.ru |
| Email первого администратора | Логин для первого входа в Консоль управления, например admin@example.ru. Пароль создаёт инсталлятор (Первый администратор и пароли) |
| HTTPS для Manager | Самоподписанный сертификат, собственный сертификат или без TLS (TLS-сертификат) |
| Файл сертификата и ключа | Для собственного сертификата: пути к fullchain.pem и privkey.pem |
| Фильтрующая нода на этом же сервере? | Для профиля Standalone с TLS. Ответ «Да» переносит Консоль управления на порты 8443 и 8080, чтобы порты 80 и 443 использовала фильтрующая нода |
| HTTP порт и адреса прокси | Для варианта без TLS: порт Консоли управления и адреса прокси-сервера |
| Сеть для связи серверов и VIP (HA) | Мастер показывает сети, найденные на всех серверах, и предлагает выбрать внутреннюю. Если сеть одна, вопрос не задаётся |
| VIP для Kubernetes API (HA) | Свободный IP-адрес с маской, например 192.168.0.100/24 |
| Способ публикации (HA) | VIP Консоли управления или внешний балансировщик |
| VIP Manager (HA, способ VIP) | Свободный IP-адрес без маски, например 192.168.0.101 |
| Values-файлы | Оставьте пустым, если техническая поддержка не передала вам такой файл |
В конце мастер выводит все ответы под заголовком «Проверьте конфигурацию» и спрашивает «Сохранить конфигурацию?». Проверьте адреса серверов, DNS-имя, вариант TLS, порты Консоли управления и, для профиля ha, адреса VIP. Чтобы исправить ответ, выберите «Отмена» и запустите ./installer init снова: файл при этом не создаётся.
Мастер не перезаписывает существующий файл installer.yaml.
Дополнительные параметры профиля ha¶
Файл installer.yaml редактируется в текстовом редакторе. Для отступов используются только пробелы, по два на уровень.
Серверы с несколькими сетями. Мастер заполняет параметры сам. При ручной настройке укажите адрес во внутренней сети (privateAddress) для каждого сервера и интерфейс (interface) для VIP:
mode: ha
hosts:
- address: 203.0.113.11 # адрес для SSH
privateAddress: 192.168.0.11 # адрес во внутренней сети
- address: 203.0.113.12
privateAddress: 192.168.0.12
- address: 203.0.113.13
privateAddress: 192.168.0.13
ha:
controlPlane:
address: 192.168.0.100/24 # VIP API, с маской
interface: eth1 # интерфейс внутренней сети
ingress:
address: 192.168.0.101 # VIP Консоли, без маски
interface: eth1
Внешний балансировщик. VIP Консоли не указывается:
ha:
controlPlane:
address: 192.168.0.100/24
interface: eth1
ingress:
mode: external
VIP API недоступен с рабочего места. Укажите DNS-имя или адрес трансляции (NAT), ведущий на VIP API:
ha:
apiAddress: k8s-api.example.ru
В сети уже используется VRRP. Укажите уникальный номер виртуального маршрутизатора от 1 до 255:
ha:
controlPlane:
virtualRouterID: 77
Проверка конфигурации: ./installer status. Ошибки конфигурации выводятся с указанием параметра. Сообщение kubeconfig is unavailable до установки – штатное.
Первый администратор и пароли¶
Пароли баз данных, ключ подписи и пароль первого администратора создаёт инсталлятор. Задавать их вручную не требуется.
Первый администратор. Email (логин) задаётся в мастере настройки и хранится в installer.yaml:
admin:
email: admin@example.ru
organization: ООО Пример # необязательно: название организации в Консоли управления
- Пароль генерируется при установке и выводится один раз в конце установки, в строке
One-time password for admin@example.ru: .... Сохраните его до первого входа. - Пароль выводится только в окно терминала и не попадает в файл
install.log. - При первом входе Консоль управления требует сменить пароль.
- Администратор создаётся только при установке. Изменение
admin.emailиadmin.organizationпосле установки не действует; новых пользователей добавляют в Консоли управления.
Обратите внимание
Если одноразовый пароль не сохранён, его можно прочитать до первого входа на любом сервере Консоли управления:
sudo k0s kubectl -n api-firewall get secret api-firewall-manager-secrets -o jsonpath='{.data.WMX_USER_PASSWORD}' | base64 -d; echo
Пароли баз данных и ключ подписи генерируются при установке и хранятся в кластере, в секрете api-firewall-manager-secrets. При обновлении используются те же значения. Не удаляйте и не изменяйте этот секрет: без него Консоль управления потеряет доступ к своим базам данных.
Обратите внимание
Файлы values.yaml (параметр chart.values) не должны содержать пароли и учётную запись администратора: ключи POSTGRES_PASSWORD, CLICKHOUSE_PASSWORD, JWT_PRIVATE_KEY_PEM, WMX_USER_EMAIL, WMX_USER_PASSWORD, WMX_USER_NAME, WMX_USER_COMPANY. С такими ключами установка и обновление останавливаются с ошибкой chart.values files set ... до внесения изменений.
Установка¶
Перед установкой в каталоге ~/proapi находятся: installer, бандл Консоли управления своего профиля, secrets.env, installer.yaml и, если они используются, файлы сертификата и ключа и файлы из chart.values.
Профиль standalone:
cd ~/proapi
set -a; . ./secrets.env; set +a
set -o pipefail
./installer install --bundle ./proapi-3.0.0-standalone.bundle.tar.gz --verbose 2>&1 | tee install.log
Профиль ha:
cd ~/proapi
set -a; . ./secrets.env; set +a
set -o pipefail
./installer install --bundle ./proapi-3.0.0-ha.bundle.tar.gz --verbose 2>&1 | tee install.log
- Перед изменениями на серверах инсталлятор проверяет целостность бандла, его версию и профиль, наличие нужных команд и свободное место на серверах. Затем бандл копируется на каждый сервер.
- Установка занимает 15–30 минут. Не закрывайте терминал и не допускайте перехода рабочего места в спящий режим.
- Полный вывод сохраняется в файл
install.log. - При успешной установке выводятся сообщение
Installed product at https://<DNS-имя>, для самоподписанного сертификата – путь к файлу CA, логин первого администратора и, только в окне терминала, его одноразовый пароль (Первый администратор и пароли).
Если установка прервалась, выполните удаление и запустите установку снова.
Проверка установки¶
./installer status
Пример результата для профиля ha:
Cluster: READY; API /readyz: OK; nodes: 3/3 ready (expected 3)
Chart: deployed; release: api-firewall; version: 3.0.0
Readiness api-firewall: READY
Readiness api-firewall-operators: READY
Readiness metallb-system: READY
TLS: OK; self-signed; proapi.example.ru; valid until 2027-10-09 (364 days)
- Строка
metallb-systemвыводится только для профиляhaсо способом публикации VIP. - Строка
TLSпоказывает срок действия сертификата:WARNING– до окончания меньше 30 дней,EXPIRED– сертификат истёк. - Состояние
NOT READYв первые минуты после установки или перезагрузки сервера штатное. Если оно сохраняется дольше 15 минут (Устранение неполадок).
Команда использует файл installer.kubeconfig рядом с installer.yaml. Файл даёт полный доступ к кластеру: храните его как пароль администратора.
Откройте в браузере https://<DNS-имя Консоли управления> и войдите с email из admin.email и одноразовым паролем из вывода установки. Консоль управления предложит задать новый пароль.
TLS-сертификат Консоли управления¶
Вариант задаётся в разделе ingress.tls файла installer.yaml; мастер настройки заполняет его сам. Загружать сертификат в кластер вручную не нужно.
Самоподписанный сертификат (по умолчанию)¶
ingress:
host: proapi.example.ru
tls:
mode: self-signed
- Инсталлятор создаёт центр сертификации (CA) сроком на 10 лет и выпускает им сертификат для DNS-имени Консоли управления сроком на 1 год.
- Сертификат CA сохраняется рядом с
installer.yamlв файлinstaller.ca.pem. Файл передаётся на фильтрующие ноды (Подключение фильтрующих нод) и может быть добавлен в доверенные сертификаты браузеров пользователей. - Сертификат выпускается заново тем же CA при обновлении, если до окончания срока осталось меньше 30 дней, а также по команде
./installer tls renew. Перенастраивать ноды не нужно.
Собственный сертификат¶
ingress:
host: proapi.example.ru
tls:
mode: custom
cert: certs/fullchain.pem # сертификат сервера, затем промежуточные
key: certs/privkey.pem # закрытый ключ без пароля
Перед установкой инсталлятор проверяет, что ключ соответствует сертификату, сертификат выдан на DNS-имя Консоли управления, действителен и цепочка полная. Для сертификата внутреннего центра сертификации добавьте в конец файла cert корневой сертификат этого центра.
Замена сертификата после установки или переход с самоподписанного сертификата:
./installer tls set --cert ./fullchain.pem --key ./privkey.pem
Команда выводит данные сертификата и запрашивает подтверждение (yes), применяет сертификат без остановки Консоли управления и сохраняет пути к файлам в installer.yaml. Возврат к самоподписанному сертификату: ./installer tls set --self-signed.
Внимание
Если новый сертификат выпущен другим центром сертификации, сначала добавьте его сертификат в файл доверенных CA на всех фильтрующих нодах и перезапустите агент ноды, затем выполните tls set. Иначе ноды потеряют связь с Консолью управления.
Сертификат Let's Encrypt¶
Сертификат Let's Encrypt получает и продлевает программа certbot на одном из серверов Консоли управления с проверкой через HTTP (HTTP-01).
Требования:
- DNS-имя Консоли управления публичное и указывает на её адрес (сервер, VIP или балансировщик);
- порты TCP 80 и 443 адреса Консоли управления доступны из интернета (Let's Encrypt в сетевом взаимодействии);
- у сервера с certbot есть доступ к
acme-v02.api.letsencrypt.orgпо TCP 443.
Порты 80 и 443 на серверах занимает Консоль управления, поэтому certbot работает на другом порту, а инсталлятор направляет на него проверочные запросы со всех серверов.
-
Добавьте в
installer.yaml:ingress: host: proapi.example.ru acmeChallenge: port: 8888 # порт certbot # host: 10.0.0.11 # необязательно: IP-адрес сервера с certbot, по умолчанию первый сервер из hostsПри установке параметр применяется автоматически. После установки выполните
./installer tls renew. -
На сервере с certbot разместите
installer,installer.yamlиinstaller.kubeconfig, например в/root/proapi, установите certbot (apt install certbotили пакет вашей ОС) и получите сертификат:certbot certonly --standalone --http-01-port 8888 -d proapi.example.ru -m admin@example.ru --agree-tos --deploy-hook '/root/proapi/installer --config /root/proapi/installer.yaml tls set --cert $RENEWED_LINEAGE/fullchain.pem --key $RENEWED_LINEAGE/privkey.pem --yes'ЗАМЕНИТЕ DNS-имя, адрес электронной почты и каталог. Указанная в
--deploy-hookкоманда применяет сертификат после получения и после каждого продления. certbot продлевает сертификат автоматически примерно за 30 дней до окончания 90-дневного срока. Проверка продления:certbot renew --dry-run --run-deploy-hooks. -
Убедитесь, что
./installer statusвыводитTLS: OK; custom.
Фильтрующим нодам файл CA для сертификата Let's Encrypt не нужен. При переходе с самоподписанного сертификата связь нод с Консолью управления не прерывается.
Сертификат Let's Encrypt, полученный другим способом (на другом компьютере, с проверкой через DNS), применяется командой tls set, как собственный сертификат; параметр acmeChallenge в этом случае не нужен.
Без TLS (TLS завершает прокси-сервер)¶
ingress:
host: proapi.example.ru
tls:
mode: none
httpPort: 8080 # необязательно, по умолчанию 80
trustedProxies: # необязательно: адреса прокси-сервера
- 10.244.0.0/16
- Консоль управления принимает только HTTP, порт 443 закрыт. Вариант допустим, только если перед Консолью управления стоит прокси-сервер или балансировщик, который сам завершает TLS.
httpPort– порт Консоли управления, если порт 80 на сервере занят прокси-сервером. Прокси на том же сервере направляет запросы наhttp://127.0.0.1:8080, отдельный прокси – наhttp://<IP-адрес сервера>:8080.trustedProxies– адреса или подсети прокси-серверов, которые передают IP-адрес пользователя в заголовкеX-Real-IP. Для прокси на самих серверах Консоли управления указывается внутренняя сеть кластера10.244.0.0/16.- Фильтрующие ноды подключаются к прокси-серверу по HTTPS или к Консоли управления напрямую по HTTP (параметр
--manager http://…при установке ноды).
Внимание
Не указывайте в trustedProxies балансировщик, работающий в режиме TCP: он передаёт заголовки клиента без изменений, и пользователь сможет подставить произвольный IP-адрес. Для такого балансировщика используйте PROXY protocol.
Смена варианта после установки¶
- Между самоподписанным и собственным сертификатом – командой
tls set. - Между TLS и вариантом без TLS, а также изменение
httpPort,httpsPort,trustedProxiesиproxyProtocol: измените разделingressвinstaller.yamlи выполните обновление с тем же бандлом. Данные Консоли управления сохраняются. Во время перенастройки возможны единичные ошибки запросов; фильтрующие ноды повторяют отправку данных. - Перед переходом на вариант без TLS настройте и запустите прокси-сервер: порт 443 освобождается после обновления. При обратном переходе остановите прокси-сервер после обновления.
- При переходе с варианта без TLS на самоподписанный сертификат после обновления переключите каждую фильтрующую ноду на HTTPS командой
sudo ./installer node upgrade --bundle ./proapi-node-3.0.0.bundle.tar.gz --manager https://proapi.example.ru --manager-ca installer.ca.pem
IP-адреса пользователей за балансировщиком¶
Консоль управления записывает IP-адрес пользователя в историю входов и журнал действий. Если перед Консолью управления стоит балансировщик или прокси-сервер, требуется настройка, иначе записывается его адрес.
-
Балансировщик в режиме TCP заголовков не добавляет. Включите на нём PROXY protocol (версии 1 или 2) для портов 80 и 443 и укажите его адреса в
installer.yaml:ingress: proxyProtocol: - 10.0.0.5 # ЗАМЕНИТЕ: адрес или подсеть балансировщикаPROXY protocol принимается только от указанных адресов. Соединения без заголовка также принимаются, поэтому порядок включения на балансировщике и в Консоли управления не важен.
-
Прокси-сервер, завершающий TLS (вариант без TLS), указывается в
trustedProxiesи передаёт IP-адрес пользователя в заголовкеX-Real-IP.
Изменения применяются обновлением с тем же бандлом.
Подключение фильтрующих нод¶
Фильтрующие ноды устанавливаются после Консоли управления, по инструкции Установка фильтрующей ноды с помощью инсталлятора. Для подключения потребуются:
- токен регистрации, который выдаёт Консоль управления в разделе Ноды (Создание ноды в Консоли управления);
- адрес Консоли управления, например
https://proapi.example.ru; - для самоподписанного сертификата – файл
installer.ca.pemиз каталога установки Консоли управления.
Работа при отказе сервера¶
В профиле ha при отказе одного сервера работа восстанавливается автоматически:
- фильтрующие ноды продолжают проверять и блокировать трафик без перерыва;
- VIP API переходит на работающий сервер за несколько секунд;
- веб-интерфейс снова доступен в течение минуты;
- PostgreSQL переключается на реплику; в это время вход в Консоль управления может быть недоступен до нескольких минут;
- после восстановления сервер автоматически подключается к кластеру, базы данных синхронизируются.
Действия администратора: восстановите сервер и проверьте состояние командой ./installer status.
Профиль ha не защищает от одновременного отказа двух серверов из трёх и не заменяет резервное копирование данных.
Обновление¶
Команда upgrade применяет к установленной Консоли управления версию из бандла и изменения раздела ingress в installer.yaml. Используется бандл того же профиля, что и при установке.
Профиль standalone:
cd ~/proapi
set -a; . ./secrets.env; set +a
set -o pipefail
./installer upgrade --bundle ./proapi-3.0.0-standalone.bundle.tar.gz --verbose 2>&1 | tee upgrade.log
Профиль ha:
cd ~/proapi
set -a; . ./secrets.env; set +a
set -o pipefail
./installer upgrade --bundle ./proapi-3.0.0-ha.bundle.tar.gz --verbose 2>&1 | tee upgrade.log
Переход на новую версию «ПроAPI Защита» выполняется по руководству новой версии, с инсталлятором и бандлом из её дистрибутива.
- Обновляются Консоль управления и операторы баз данных. Кластер и серверы не изменяются.
- Профиль
standaloneилиhaпри обновлении не меняется. - Если предыдущее обновление было прервано, инсталлятор сообщает
NOTE: release ... was left pending-upgrade by an interrupted upgrade, возвращает компонент к предыдущей версии и продолжает обновление. - Изменения в разделе
ingress(вариант TLS,httpPort,httpsPort,trustedProxies,proxyProtocol) применяются при обновлении. - Фильтрующие ноды обновляются отдельно (Обновление фильтрующей ноды).
- Самоподписанный сертификат выпускается заново, если до окончания срока осталось меньше 30 дней. Собственный сертификат применяется из файлов, указанных в
installer.yaml. - Пароли баз данных и ключ подписи не меняются: используются значения, созданные при установке.
Устранение неполадок¶
| Сообщение или признак | Причина | Решение |
|---|---|---|
Host key verification failed | Ключ сервера неизвестен рабочему месту | Подключитесь к серверу вручную (см. Ключи серверов) |
release is locked by an unfinished Helm operation | Предыдущее обновление было прервано | Повторите команду upgrade |
release ... was left pending-install | Установка была прервана | Выполните reset, затем install |
Permission denied (publickey) | SSH-ключ не скопирован на сервер или указан другой файл ключа | Выполните ssh-copy-id, проверьте параметр ssh.key в installer.yaml |
k0s installation/config/data remains; run reset | На сервере остались данные предыдущей установки | Выполните удаление |
storage data remains in /var/lib/wmx/api-firewall/local-path; run reset | В каталоге данных остались файлы предыдущей установки | Выполните удаление. Если ОС переустановлена, а диск подключён от старой установки, очистите каталог local-path или отформатируйте диск |
not enough free space for data | Для данных свободно меньше 20 ГБ | Освободите место или подключите отдельный диск |
have the same hostname | У двух серверов одинаковое имя | Задайте разные имена: hostnamectl set-hostname <имя> |
clocks of nodes ... differ | Время на серверах не синхронизировано | Включите синхронизацию времени (NTP) |
needs root or passwordless sudo | У пользователя нет sudo без пароля | Настройте sudo без пароля |
the server uses cgroup v1, and Kubernetes needs cgroup v2 | ОС использует cgroup v1 | Включите cgroup v2 (см. Настройки операционной системы) |
kernel modules ... are missing from the server's kernel | Сервер загружен с нестандартным ядром | Загрузите стандартное ядро дистрибутива |
loading modules is turned off on this server | В ОС запрещена загрузка модулей ядра | Настройте загрузку модулей при старте сервера (см. Настройки операционной системы) |
the modprobe command is missing | Не установлен пакет kmod | Установите пакет kmod |
WARNING: ... swap is on | Включён swap | Отключите swap (см. Настройки операционной системы). Установка продолжается |
WARNING: ... sets net.ipv4.ip_forward = 0 | В указанном файле выключена пересылка пакетов | Замените 0 на 1 в указанном файле. Установка продолжается |
WARNING: ... container-selinux package is not installed | SELinux работает в режиме Enforcing без политики для контейнеров | Установите пакет container-selinux. Установка продолжается |
pre-flight checks failed, check out k0s sysinfo | Кластер не прошёл собственную проверку сервера | Выполните на сервере sudo k0s sysinfo и обратитесь в техническую поддержку, приложив вывод |
standalone requires one VM; ha requires at least three | Количество серверов не соответствует профилю | Исправьте список hosts или параметр mode |
... is already assigned on this host | Адрес VIP уже используется сервером | Выберите другой свободный адрес |
... keepalived would use the default route interface ... | У серверов несколько сетей, интерфейс VIP не указан | Укажите interface для VIP |
admin.email is required | В installer.yaml не указан email первого администратора | Добавьте admin.email (см. Первый администратор и пароли) или создайте файл заново мастером настройки |
admin.email must be an email address | Email указан с ошибкой, с именем или пробелами | Укажите только адрес, например admin@example.ru |
chart.values files set ... | Файл values.yaml содержит пароли или учётную запись администратора | Удалите перечисленные ключи из файла |
secret api-firewall/api-firewall-manager-secrets has no ... | Секрет с паролями Консоли управления изменён | Восстановите секрет из резервной копии или обратитесь в техническую поддержку |
upgrade would change ... | Установка выполнена предыдущей версией инсталлятора, а при обновлении не подключён файл values.yaml, использованный при установке | Подключите тот же файл в chart.values или обратитесь в техническую поддержку |
ImagePullBackOff в выводе status | На сервере нет образа контейнера | Обратитесь в техническую поддержку, приложив вывод ./installer status |
kubeconfig is unavailable | Команда выполнена до установки, или файл installer.kubeconfig удалён | Запускайте команду из каталога с installer.yaml после установки |
connection refused к порту 6443 | Kubernetes API недоступен с рабочего места | Откройте TCP 6443 на VIP API или задайте ha.apiAddress |
Установка остановилась на local-path Helm | Локальный межсетевой экран блокирует внутренние подсети кластера | Разрешите трафик по таблице Между серверами |
Консоль управления не открывается, status показывает READY | DNS-имя указывает на другой адрес или закрыт порт 443 | Проверьте nslookup <DNS-имя> и доступ по TCP 443 |
| Браузер предупреждает о небезопасном подключении | Используется самоподписанный сертификат или сертификат выдан на другое имя | Добавьте installer.ca.pem в доверенные сертификаты браузера или установите собственный сертификат |
certificate is not valid for ingress.host | Сертификат выдан на другое DNS-имя | Получите сертификат на DNS-имя Консоли управления |
certificate chain is incomplete | В файле нет промежуточных сертификатов | Используйте fullchain.pem; для внутреннего центра сертификации добавьте его корневой сертификат |
certificate and key do not form a pair | Ключ от другого сертификата или зашифрован паролем | Проверьте файлы; снимите пароль: openssl pkey -in key.pem -out privkey.pem |
ingress settings in the config ... differ from the installation; run upgrade | Изменён раздел ingress в installer.yaml | Выполните обновление с тем же бандлом |
TLS: MISSING в выводе status | Сертификат не создан | Выполните ./installer tls renew |
certbot: Timeout during connect или Connection refused | Серверы Let's Encrypt не достают до Консоли управления по TCP 80/443, или порт certbot закрыт между серверами | Проверьте доступы по таблице Let's Encrypt и выполните ./installer tls renew |
ingress.acmeChallenge.host is required | Первый сервер в hosts задан DNS-именем | Укажите ingress.acmeChallenge.host – IP-адрес сервера с certbot |
ingress.trustedProxies: 127.0.0.1 never reaches Traefik | Указан локальный адрес прокси-сервера | Для прокси на серверах Консоли управления укажите 10.244.0.0/16 |
Через балансировщик Консоль управления отвечает 400 Bad Request, а при подключении по HTTPS возникает ошибка TLS (wrong version number) | Балансировщик передаёт PROXY protocol, а параметр ingress.proxyProtocol не задан | Укажите адрес балансировщика в сети серверов (см. IP-адреса пользователей за балансировщиком) и выполните upgrade |
Нода не подключается: x509: certificate signed by unknown authority | Нода не доверяет центру сертификации Консоли управления | На сервере ноды выполните sudo ./installer node upgrade --bundle ./proapi-node-3.0.0.bundle.tar.gz --manager <адрес> --manager-ca installer.ca.pem (см. Устранение неполадок фильтрующей ноды) |
ingress.httpPort and ingress.httpsPort must differ или ... outside the Kubernetes NodePort range | Недопустимые порты Консоли управления | Укажите разные порты вне диапазона 30000–32767, например 8080 и 8443 |
ingress.acmeChallenge needs Manager on port 80 | Сертификат Let's Encrypt с проверкой через HTTP настроен вместе с переносом Консоли управления с порта 80 | Удалите ingress.httpPort или получите сертификат с проверкой через DNS и примените его командой tls set |
Балансировщик отвечает кодом 503 | Балансировщик работает в режиме HTTP | Переключите правила и проверку доступности на TCP |
image verification node … context deadline exceeded | Образы из бандла не импортировались на сервере за час: не хватает ресурсов или места | Проверьте ресурсы сервера по требованиям и свободное место (df -h /var/lib/k0s), выполните удаление и повторите установку. Если ошибка повторяется, обратитесь в техническую поддержку, приложив install.log |
bundle mode/platform differs | Указан бандл другого профиля | Укажите бандл профиля из параметра mode файла installer.yaml: proapi-3.0.0-standalone.bundle.tar.gz для standalone, proapi-3.0.0-ha.bundle.tar.gz для ha |
unsupported bundle format/recipe version | Инсталлятор и бандл из разных дистрибутивов | Используйте инсталлятор и бандл из одного дистрибутива |
target product version differs from bundle | В installer.yaml в разделе chart указан параметр version | Удалите параметр version из раздела chart |
invalid bundle gzip, bundle payload checksum mismatch или другая ошибка чтения бандла | Файл бандла повреждён при скачивании или переносе | Проверьте файлы командой sha256sum -c --ignore-missing SHA256SUMS и скачайте повреждённый файл заново |
this is a filtering node bundle | Указан бандл фильтрующей ноды | Укажите бандл Консоли управления своего профиля |
offline operation requires --bundle | Команда install или upgrade выполнена без параметра --bundle | Добавьте параметр --bundle с бандлом своего профиля |
online operation forbids --bundle | В installer.yaml указано installation: online | Замените значение на installation: offline |
no space left on device при проверке или распаковке бандла | В каталоге /tmp рабочего места не хватает места | Освободите место в /tmp или укажите другой каталог: mkdir -p ~/proapi/tmp && export TMPDIR=~/proapi/tmp, затем повторите команду |
Проверка перехода IP-адреса между серверами (профиль ha)¶
Некоторые сети блокируют IP-адреса, не закреплённые за портом сервера; в такой сети VIP не работает. Проверка (адрес 192.168.0.100, интерфейс eth1):
ip addr add 192.168.0.100/24 dev eth1 # на сервере 1; ЗАМЕНИТЕ адрес и интерфейс
ping -c 3 192.168.0.100 # на сервере 2: ответы должны приходить
ip addr del 192.168.0.100/24 dev eth1 # на сервере 1
Если ответов нет, попросите администратора сети разрешить на портах серверов дополнительные IP-адреса и gratuitous ARP или используйте способ публикации external.
Обращение в техническую поддержку¶
Приложите к обращению файл install.log (или upgrade.log) и вывод команды ./installer status. Учётные данные в эти файлы не записываются.
Удаление¶
Внимание
Удаляются все данные Консоли управления на всех серверах: события, настройки, пользователи. Восстановить их невозможно.
./installer reset
Инсталлятор выведет список серверов и запросит подтверждение: введите RESET. Серверы будут перезагружены.
Если на сервере Консоли управления установлена фильтрующая нода, она удаляется вместе с Консолью управления. Удаление фильтрующей ноды с её собственного сервера описано в разделе Удаление инструкции по установке ноды.
Отдельный диск для данных очищается и остаётся смонтированным; повторно форматировать его не нужно. Файл installer.yaml сохраняется для повторной установки. Пароли Консоли управления удаляются вместе с кластером: при повторной установке создаются новые, в том числе новый одноразовый пароль администратора.
Термины¶
| Термин | Определение |
|---|---|
| Консоль управления | Компонент «ПроAPI Защита» для управления нодами, политиками и мониторинга |
| Фильтрующая нода | Компонент «ПроAPI Защита», который проверяет трафик приложений |
| Рабочее место администратора | Компьютер, с которого запускается инсталлятор |
| Контроллер | Сервер, хранящий состояние кластера; в профиле ha – первые три сервера |
| Kubernetes, k0s | Платформа, которая запускает компоненты Консоли управления и перезапускает их при сбоях |
| VIP | Виртуальный IP-адрес, который переходит на работающий сервер |
| Дистрибутив | Набор файлов «ПроAPI Защита» одной версии: инсталлятор, бандлы и контрольные суммы |
| Бандл | Файл дистрибутива со всеми программами и образами контейнеров для установки Консоли управления или фильтрующей ноды без доступа в интернет |
| PROXY protocol | Способ передачи IP-адреса клиента от балансировщика, работающего в режиме TCP |