Модуль управления сетями кластера (shturval-networking)

О сервисе

Параметр Значение
Название в интерфейсе Модуль управления сетями кластера
Системное название (идентификатор) shturval-networking
Назначение в кластере Сетевое взаимодействие между контейнерами, подами, узлами и сервисами; CNI-плагин для кластера.
Критический Да
Публичный репозиторий Cilium
Зависимости shturval-monitoring-crds
Неймспейс kube-system

Назначение

shturval-networking — модуль управления сетями кластера на базе Cilium CNI. Обеспечивает сетевую функциональность и взаимодействие между компонентами кластера. При совместном использовании с Multus CNI (shturval-metacni) может потребоваться ShturvalServicePatch с cni.exclusive: false.

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

shturval-networking — критический сервис платформы. В платформе «Штурвал» его включение и жизненный цикл в кластере обеспечивает cluster-manager (сервис платформы); объекты ShturvalServiceConfig (SSC) для Cilium создаются и сопровождаются как часть платформенной конфигурации. В поставке модуль опирается на CRD мониторинга: в кластере должен быть учтён компонент shturval-monitoring-crds (см. зависимости в таблице выше).

Рекомендация: не правьте ShturvalServiceConfig вручную для смены параметров Cilium, Hubble и режима cni.exclusive — объект относится к платформенной конфигурации и может быть перезаписан при обновлениях. Изменения вносите через ShturvalServicePatch (SSP), как в примерах ниже на этой странице (Multus, Hubble).

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

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

Совместное использование с Multus CNI

При одновременном использовании Cilium CNI (shturval-networking) и Multus CNI (shturval-metacni) необходимо применить ShturvalServicePatch с cni.exclusive: false:

ShturvalServicePatch
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: shturval-networking-cni
spec:
  shturvalServiceConfigName: shturval-networking
  customvalues:
    cni:
      exclusive: false

После применения ShturvalServicePatch перейдите в Установленные сервисы → shturval-networking → Управлять. На вкладке Примененные ShturvalServicePatch отобразится загруженный патч; когда он будет применён, на вкладке Сервис статус изменится на Patched.

Скриншоты применения патча

Импорт ShturvalServicePatch для настройки Cilium Страница сервиса shturval-networking Примененный ShturvalServicePatch для shturval-networking

Cilium Hubble

Hubble обеспечивает наблюдение за сетевым взаимодействием между компонентами кластера. Для включения примените ShturvalServicePatch (SSP). Параметры настройки отличаются в зависимости от контура.

В открытом контуре образ hubble-relay подставляется по digest из чарта. Включите Hubble, Relay и UI:

apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: shturval-networking-hubble
spec:
  shturvalServiceConfigName: shturval-networking
  customvalues:
    hubble:
      enabled: true
      relay:
        enabled: true
      ui:
        enabled: true

Обратите внимание! SHA-256 образа hubble-relay в открытом контуре и закрытом контуре различаются. Применение в закрытом контуре SSP, в котором Hubble включён только флагами enabled, завершиться ошибкой. В hubble.relay.image укажите тег образа из зеркала поставки и задайте useDigest: false.

Блок ingress публикует Hubble UI.

apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: shturval-networking-hubble
spec:
  shturvalServiceConfigName: shturval-networking
  customvalues:
    hubble:
      enabled: true
      relay:
        enabled: true
        image:
          tag: <ваше значение>
          useDigest: false
      ui:
        enabled: true
        ingress:
          enabled: true
          className: <ваше значение>
          annotations:
            cert-manager.io/cluster-issuer: <ваше значение>
          hosts:
            - <ваше значение>
          tls:
            - secretName: <ваше значение>
              hosts:
                - <ваше значение>
Параметр Описание Тип Пример
hubble.relay.image.tag Тег образа hubble-relay из зеркала поставки string тег из зеркала поставки
hubble.relay.image.useDigest Не использовать digest из чарта: SHA-256 образа в чарте и в зеркале различаются boolean false
hubble.ui.ingress.className Имя Ingress Class для публикации Hubble UI string nginx
hubble.ui.ingress.annotations Аннотации Ingress. Для сертификата укажите ClusterIssuer cert-manager object cert-manager.io/cluster-issuer: <имя ClusterIssuer>
hubble.ui.ingress.hosts DNS-имя Hubble UI array hubble-ui.example.com
hubble.ui.ingress.tls.secretName Имя TLS-секрета string hubble-ui-tls
hubble.ui.ingress.tls.hosts Имена хостов в секции TLS array hubble-ui.example.com

Для временного проброса порта к UI Hubble выполните команду:

kubectl -n kube-system port-forward services/hubble-ui 12000:80

Hubble UI будет доступен по адресу: http://127.0.0.1:12000

Скриншоты настройки Hubble

Импорт ShturvalServicePatch для включения Hubble Hubble в составе shturval-networking Примененный ShturvalServicePatch для shturval-networking

Контроллер Gateway API в Cilium

CRD Gateway API поставляет CRD Gateway API, но не обрабатывает трафик. Для маршрутизации необходим контроллер, связанный с GatewayClass. В платформе «Штурвал» вы можете включить контроллер Gateway API на базе Cilium io.cilium/gateway-controller.

Перед включением контроллера проверьте наличие установленного CRD: кластер → Сервисы и репозитории → Установленные сервисы → найдите CRD модуля Gateway API (shturval-gateway-api-crds) → Управлять. Если сервис отсутствует, установите его через Доступные чарты → чарт shturval-gateway-api-crds → Установить и выберите неймспейс gateway-systems.

Для включения контроллера в кластере примените ShturvalServicePatch:

ShturvalServicePatch
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: shturval-networking-cilium
spec:
  customvalues:
    gatewayAPI:
      enabled: true
  shturvalServiceConfigName: shturval-networking

После применения ShturvalServicePatch перейдите в Установленные сервисы → shturval-networking → Управлять. На вкладке Примененные ShturvalServicePatch отобразится загруженный ShturvalServicePatch. Когда он будет применён, Cilium развернёт контроллер Gateway API и создаст соответствующий GatewayClass с именем cilium.

Для выделения адресов Gateway создайте ресурс с пулом IP-адресов CiliumLoadBalancerIPPool или настройте CIDR или диапазон IP-адресов в ConfigMap kubevip — см. подробнее в разделе Конфигурация доступных IP-адресов.

Пример CiliumLoadBalancerIPPool:

apiVersion: "cilium.io/v2"
kind: CiliumLoadBalancerIPPool
metadata:
  name: pool
spec:
  blocks:
    - cidr: "192.168.0.216/29"

Дополнительно