В этом руководстве показано, как зарегистрировать процесс Airlock с одним или несколькими сервисами в кластере, предъявив join-токен.

Предварительные требования

  • Linux-сервер для процесса Airlock (виртуальная машина или контейнер на базе Linux).
  • В этом руководстве регистрируется SSH Service (node); тот же подход применим к Kubernetes Service, Database Service, Proxy Service и другим сервисам.
  • На административной машине установлен airctl с доступом к кластеру.

Join-токен работает и с одним Proxy Service, и с несколькими за LB или DNS с несколькими A-записями. Процесс при подключении устанавливает туннель к каждому Proxy Service. Балансировщик должен использовать round-robin, а не sticky session.

Шаг 1 из 3. Установка Airlock

На Linux-хосте:

curl https://deckhouse.ru/downloads/airlock/install.sh | bash -s

Шаг 2 из 3. Подключение к кластеру

Генерация токена

На локальной машине с airctl:

airctl tokens add --ttl=5m --type=node

Пример вывода:

The invite token: abc123...
This token will expire in 5 minutes.

Run this on the new node to join the cluster:

> airlock start \
   --roles=node \
   --token=abc123... \
   --ca-pin=sha256:... \
   --auth-server=192.0.2.0:3025

Поддерживаемые типы токенов

ТипСервис Airlock
appApplication Service
authAuth Service
botMachine ID
dbDatabase Service
discoveryDiscovery Service
kubeKubernetes Service
nodeSSH Service
proxyProxy Service
windowsdesktopWindows Desktop Service

Список активных токенов:

airctl tokens ls

Предпочитайте короткоживущие токены статическим. Статические токены в конфигурации Auth Service проще украсть или они могут утечь.

Запуск процесса с токеном

На хосте нового агента (замените JOIN_TOKEN и airlock.example.com):

sudo airlock configure \
  --roles=node \
  --token=JOIN_TOKEN \
  --proxy=airlock.example.com:443 \
  -o file

Для SSH Service можно использовать airlock node configure без флага --roles=node:

sudo airlock node configure \
  --output=file:///etc/airlock.yaml \
  --token=JOIN_TOKEN \
  --proxy=airlock.example.com:443

Запустите сервис:

sudo systemctl enable airlock
sudo systemctl start airlock

Проверьте регистрацию узла:

airctl nodes ls

Прямое подключение к Auth Service

Если Proxy Service недоступен с хоста агента, подключайтесь напрямую к Auth Service только при отсутствии других вариантов. Минимизируйте входящий трафик к Auth Service.

Получите CA pin:

airctl status

Настройте агент:

sudo airlock configure \
  --roles=node \
  --token=JOIN_TOKEN \
  --auth-server=airlock.example.com:3025 \
  -o file

Укажите CA pin в /etc/airlock.yaml (поле airlock.ca_pin):

sudo sed -i 's|  ca_pin: ""|  ca_pin: "sha256:..."|' /etc/airlock.yaml
sudo systemctl restart airlock

CA pin становится недействительным после ротации CA (airctl auth rotate).

Шаг 3 из 3. Отзыв токена

Чтобы запретить использование токена:

airctl tokens rm TOKEN_TO_DELETE

Следующие шаги