Стадия жизненного цикла модуля: Общедоступная версия
У модуля есть требования для установки
В примерах кластер 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: 1hspec.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 projectpeersSTATE равен Paired, когда пара работает, и PeerUnreachable, когда другой кластер недоступен.
Отзыв пиринга
Чтобы отозвать пиринг, удалите ClusterPeer в своём кластере:
d8 k delete clusterpeer cluster-bПосле удаления другой кластер теряет доступ к вашему кластеру. Другой кластер об отзыве не узнаёт: удалите ClusterPeer на нём отдельно. Временная недоступность другого кластера пиринг не отзывает.
Выключение модуля
При выключении модуля все пиринги кластера перестают работать, а другие кластеры об этом не узнают. После повторного включения установите каждый пиринг заново на обоих кластерах. Выключение модуля user-authn выключает и модуль peering.
Чтобы выключить модуль, добавьте в его ModuleConfig аннотацию modules.deckhouse.io/allow-disabling=true и задайте enabled: false.