Стадия жизненного цикла модуля: Общедоступная версия

У модуля есть требования для установки

В примерах кластер A приглашает кластер B к пирингу.

Подготовка

Перед установкой пиринга проверьте на обоих кластерах:

  • параметр global.modules.https.mode равен CertManager или CustomCertificate;
  • домены peering и peering-gateway доступны из другого кластера: при шаблоне публичных доменов %s.example.com это peering.example.com и peering-gateway.example.com;
  • балансировщики и прокси между кластерами передают соединения с этими доменами без расшифровки TLS.

Включение модуля

Включите модуль на обоих кластерах. Модуль user-authn должен быть включён.

Создайте ModuleConfig:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: peering
spec:
  enabled: true

Модуль готов к работе, когда PHASE в выводе команды равен Ready:

d8 k get module peering

Создание приглашения

На кластере A создайте ClusterPeer типа Invite. Имя объекта становится именем пиринга в этом кластере:

apiVersion: peering.deckhouse.io/v1alpha1
kind: ClusterPeer
metadata:
  name: cluster-b
spec:
  type: Invite
  invite:
    tokenTTL: 1h

spec.invite.tokenTTL — срок действия строки подключения: от 10m до 24h, по умолчанию 24h.

Получите строку подключения:

d8 k get clusterpeer cluster-b -o jsonpath='{.status.invite.connectionString}'

Передайте строку администратору кластера B по защищённому каналу: любой, у кого она есть, может подключиться к вашему кластеру. Строка действует для одного подключения. Если её срок истёк до подключения, получите строку заново: модуль выпускает новую.

Подключение к приглашающему кластеру

На кластере B создайте ClusterPeer типа Join со строкой подключения:

apiVersion: peering.deckhouse.io/v1alpha1
kind: ClusterPeer
metadata:
  name: cluster-a
spec:
  type: Join
  join:
    connectionString: <строка подключения кластера A>

Проверьте состояние пиринга на обоих кластерах:

d8 k get clusterpeers

Пиринг установлен, когда PHASE равен Active, а READY — True. Иначе причина указана в status.conditions объекта ClusterPeer.

Открытие возможностей

Возможности, которые объявили модули кластера, выводит команда:

d8 k get peeringcapabilities

Открыть можно возможность, у которой ACCEPTED равен True. Перечислите её в spec.capabilities объекта ClusterPeer на обоих кластерах:

spec:
  capabilities:
  - <имя возможности>

Возможность работает, когда её открыли оба кластера. Открытые в пиринге возможности показывает колонка EFFECTIVE в выводе d8 k get clusterpeers.

Сопряжённые проекты

Одноимённые проекты связанных кластеров сопрягаются автоматически. Пары проекта выводит команда:

d8 k -n <проект> get projectpeers

STATE равен Paired, когда пара работает, и PeerUnreachable, когда другой кластер недоступен.

Отзыв пиринга

Чтобы отозвать пиринг, удалите ClusterPeer в своём кластере:

d8 k delete clusterpeer cluster-b

После удаления другой кластер теряет доступ к вашему кластеру. Другой кластер об отзыве не узнаёт: удалите ClusterPeer на нём отдельно. Временная недоступность другого кластера пиринг не отзывает.

Выключение модуля

При выключении модуля все пиринги кластера перестают работать, а другие кластеры об этом не узнают. После повторного включения установите каждый пиринг заново на обоих кластерах. Выключение модуля user-authn выключает и модуль peering.

Чтобы выключить модуль, добавьте в его ModuleConfig аннотацию modules.deckhouse.io/allow-disabling=true и задайте enabled: false.