Модуль управления VIP-адресами для сервисов (shturval-vip-provider)

О сервисе

Параметр Значение
Название в интерфейсе Модуль управления виртуальными IP-адресами. Компонент конфигурации сервисов
Системное название (идентификатор) shturval-vip-provider
Назначение в кластере Управление виртуальными IP для сервисов (компонент конфигурации сервисов на базе Kube-VIP). Работает в связке с shturval-vip (конфигурация узлов).
Критический Да
Публичный репозиторий Kube-VIP
Зависимости shturval-networking
Неймспейс kube-vip

Назначение

shturval-vip-provider — модуль управления виртуальными IP-адресами (компонент конфигурации сервисов) на базе Kube-VIP. Обеспечивает настройку VIP для сервисов в кластере. Конфигурация узлов для VIP — в сервисе shturval-vip.

При создании Service с типом LoadBalancer компонент выделяет IP-адрес из сконфигурированного CIDR или диапазона IP-адресов. Выделенный IP-адрес указывается в аннотации и параметре loadBalancerIP сервиса.

Развёртывание и управление

shturval-vip-provider — критический сервис платформы для выдачи виртуальных IP сервисам типа LoadBalancer. В платформе «Штурвал» его включение и жизненный цикл в кластере обеспечивает cluster-manager (сервис платформы); объект ShturvalServiceConfig (SSC) для чарта shturval-vip-provider создаётся и сопровождается как часть платформенной конфигурации. Для корректной работы должен быть развёрнут shturval-networking; поднятие назначенных адресов на узлах выполняет shturval-vip (компонент конфигурации узлов).

Рекомендация: не правьте ShturvalServiceConfig вручную для смены параметров релиза — используйте ShturvalServicePatch (SSP). Пулы адресов и правила выдачи IP для LoadBalancer задаются эксплуатационно через ConfigMap kubevip в неймспейсе kube-system (см. раздел ниже) — это настройка уже развёрнутого модуля, а не замена платформенной установки.

Где настраивать

Сервисы и репозиторииУстановленные сервисы → shturval-vip-provider → Управлять.

Конфигурация доступных IP-адресов

Для выделения и назначения IP-адресов сервисам типа LoadBalancer настройте CIDR или диапазон IP-адресов в ConfigMap kubevip в неймспейсе kube-system.

Перейдите в неймспейс kube-systemХранилищеConfigMaps, найдите ConfigMap с именем kubevip (если отсутствует — создайте) и добавьте ключ с нужным параметром:

Параметр Описание Пример
cidr-global Глобальная подсеть для IP-адресов сервисов любого неймспейса 192.168.0.216/29
range-global Глобальный диапазон IP-адресов для сервисов любого неймспейса 192.168.1.220-192.168.1.230
cidr-<namespace> Подсеть для IP-адресов сервисов конкретного неймспейса 192.168.0.216/29
range-<namespace> Диапазон IP-адресов для сервисов конкретного неймспейса 192.168.1.220-192.168.1.230
Пример ConfigMap с глобальным CIDR
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubevip
  namespace: kube-system
data:
  cidr-global: 192.168.0.216/29
Пример ConfigMap с CIDR для отдельных неймспейсов
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubevip
  namespace: kube-system
data:
  cidr-mynamespace: 192.168.0.216/29
  range-mynamespace1: 192.168.1.220-192.168.1.230

Если для неймспейса задан пул адресов, сервисам этого неймспейса будут назначаться только адреса из него — глобальный пул игнорируется.

После создания кластера, где не используется внешний балансировщик для Ingress, IP-адрес системного Ingress Controller записывается в ConfigMap kubevip, например:

Пример ConfigMap для Ingress
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubevip
  namespace: kube-system
data:
  cidr-ingress: 192.168.0.220/32

При необходимости можно вручную задать IP-адрес сервису типа LoadBalancer (даже вне заданного диапазона) одним из способов:

  • добавить аннотацию kube-vip.io/loadbalancerIPs к ресурсу Service;
  • при создании Service в графическом интерфейсе ввести IP-адрес в поле LoadBalancerIP.