Доступно с ограничениями в редакцияхCE, BE, SE

Доступно без ограничений в редакциях:  SE+, EE, CSE Lite (1.67), CSE Pro (1.67)

В модуле реализовано 8 алертов.

Модуль не включен по умолчанию в каком-либо наборе модулей.

Как явно включить или отключить модуль…

Чтобы явно включить или выключить модуль cni-cilium, установите spec.enabled в true или false в ModuleConfig/cni-cilium (создайте, при необходимости), или воспользуйтесь командой deckhouse-controller module в поде d8-system/deckhouse.

Пример включения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cni-cilium
    spec:
      enabled: true
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module enable cni-cilium
    

Пример выключения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cni-cilium
    spec:
      enabled: false
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module disable cni-cilium
    

Настройки

Чтобы настроить модуль, используйте ресурс ModuleConfig с именем cni-cilium (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/cni-cilium для настройки модуля:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cni-cilium
spec:
  version: 1
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

Версия схемы: 1

  • settings
    объект
    • settings.activeL2NeighborDiscoveryEnabled
      булевый

      Включает механизм L2 neighbor discovery, который помогает гарантировать актуальность записей в таблице ARP на всех узлах кластера.

      По умолчанию: true

    • settings.bpfLBMode
      строка

      Режим работы балансировщика eBPF:

      • SNAT — трафик от клиента до пода (и обратно) проходит через NAT, соответственно теряется адрес отправителя.
      • DSR — трафик от клиента до пода проходит с сохранением адреса отправителя, а обратно - согласно правилам роутинга (минуя балансировщик). Этот режим экономит сетевой трафик, уменьшает задержки, но работает только для TCP трафика.
      • Hybrid — TCP трафик обрабатывается в режиме DSR, а UDP - в режиме SNAT.

      По умолчанию: "Hybrid"

      Допустимые значения: SNAT, Hybrid, DSR

    • settings.createNodeRoutes
      булевый

      Включает создание маршрутов к подам на других узлах.

      Все узлы должны находиться в одной сети L2.

    • settings.debugLogging
      булевый

      Включает отладочный уровень логирования для компонентов Cilium.

      По умолчанию: false

    • settings.encryption
      объект

      Настройки шифрования CNI Cilium.

      • settings.encryption.mode
        строка

        Режим шифрования трафика:

        • Disabled — шифрование трафика отключено.
        • WireGuard — включено шифрование трафика между подами с использованием WireGuard.

        Внимание! Перед использованием шифрования с помощью WireGuard, пожалуйста убедитесь, что ядро Linux, используемое на узлах кластера, поддерживает WireGuard (указан параметр конфигурации ядра CONFIG_WIREGUARD=m для Linux 5.6 и старше, или установлен внешний модуль WireGuard для более ранних версий ядра).

        Внимание! Использование шифрования с помощью WireGuard может повлечь значительное потребление CPU подами агента Cilium.

        По умолчанию: "Disabled"

        Допустимые значения: Disabled, WireGuard

      • settings.encryption.nodeToNodeModeEnabled
        булевый

        Включение шифрования трафика между нодами и подами работающими в HostNetwork.

        Внимание! Межузловой трафик к узлам control-plane или от них остается незашифрованным, для предотвращения возможных проблем сетевого взаимодействия в процессе обмена ключами шифрования WireGuard. При этом, сетевой трафик между системными компонентами платформы остаётся зашифрованным на прикладном уровне.

        Внимание! Когда этот режим активен, из PodNetwork не доступны NodePort and HostPort.

        По умолчанию: false

    • settings.exclusiveCNIPlugin
      булевый

      Предотвращает включение дополнительных CNI-плагинов на узлах кластера. Если настройка модуля Istio dataPlane.trafficRedirectionSetupMode установлена в значение CNIPlugin, то данная опция автоматически будет установлена в значение false.

      Явно отключать эту опцию рекомендуется только при использовании дополнительного CNI или специфичного CNI-плагина в кластере. Примером такого использования может быть CNI-плагин Linkerd.

      По умолчанию: true

    • settings.labelsRegex
      массив строк

      Cilium создает идентификаторы безопасности основываясь на лейблах сущностей k8s, чем больше лейблов участвует в этом процессе - тем более детализированно можно настроить доступы. Но в кластерах больших объёмов излишняя детализация может создать большую нагрузку, и при помощи опции labelsRegex можно более явно указать - какие лейблы будут использоваться для политик безопасности, а какими следует пренебречь. Подробнее об уменьшении количества создаваемых identity можно прочитать в документации

      Каждый лейбл должен задаваться RegExp-выражением в формате YAML quoted string с экранированием спецсимволов.

      Пример:

      labelsRegex:
      - k8s:!app\.kubernetes\.io
      - k8s:io\.cilium\.k8s\.policy
      
    • settings.loadBalancerSourceRangeAllTypes
      булевый

      Включает проверку source IP для всех типов сервисов, а не только для LoadBalancer. К соответствующему NodePort или ClusterIP также будет применен фильтр CIDR. Для получения более подробной информации, пожалуйста, перейдите по ссылке.

      По умолчанию: true

    • settings.masqueradeMode
      строка

      Режим работы SNAT для трафика подов, исходящего из кластера.

      • BPF — использовать BPF. Базовый режим работы.

        В данном режиме сетевые запросы из подов не будут подвержены процедуре Source NAT, если IP-адрес назначения принадлежит podSubnetCIDR или InternalIP/ExternalIP любого из узлов кластера.

      • Netfilter — использовать Netfilter(iptables/nf_tables).

        В данном режиме сетевые запросы из подов не будут подвержены процедуре Source NAT, если IP-адрес назначения принадлежит podSubnetCIDR или InternalIP любого из узлов кластера.

      В режиме BPF, если на узле кластера указан ExternalIP, отличный от InternalIP, но этот IP-адрес не назначен на ни на один интерфейс, то он будет не доступен с соседних узлов из сети подов. Режим Netfilter позволяет обойти это ограничение. Однако при этом некоторые другие функции перестают работать, в частности EgressGateway.

      По умолчанию: "BPF"

      Допустимые значения: Netfilter, BPF

    • settings.policyAuditMode
      булевый

      Отключает влияние сетевых политик на трафик. Сетевые запросы, попавшие под запрет политик, просто логируются.

      По умолчанию: false

    • settings.resourcesManagement

      Настройки запросов (requests) и ограничений (limits) использования CPU и памяти подами агента cilium.

      Примеры:

      resourcesManagement:
        mode: VPA
        vpa:
          mode: Auto
          cpu:
            min: 50m
            max: 2
            limitRatio: 1.5
          memory:
            min: 256Mi
            max: 2Gi
            limitRatio: 1.5
      
      resourcesManagement:
        mode: Static
        static:
          requests:
            cpu: 55m
            memory: 256Mi
          limits:
            cpu: 2
            memory: 2Gi
      
      • settings.resourcesManagement.mode
        строка

        Режим управления ресурсами:

        • Static — классический, с помощью указания запросов/ограничений (requests/limits). Настраивается в секции параметров static;
        • VPA — с помощью VPA. Настраивается в секции параметров vpa.

        По умолчанию: "VPA"

        Допустимые значения: VPA, Static

      • settings.resourcesManagement.static
        объект

        Настройка управления ресурсами в режиме Static.

        • settings.resourcesManagement.static.limits
          объект

          Настройка ограничений (limits) использования CPU и памяти.

          • settings.resourcesManagement.static.limits.cpu

            Настройка ограничений использования CPU (CPU limits).

          • settings.resourcesManagement.static.limits.memory

            Настройка ограничений использования памяти (memory limits).

        • settings.resourcesManagement.static.requests
          объект

          Настройки запросов ресурсов (requests) подов.

          • settings.resourcesManagement.static.requests.cpu

            Настройка запроса CPU (CPU requests).

          • settings.resourcesManagement.static.requests.memory

            Настройка запроса памяти (memory requests).

      • settings.resourcesManagement.vpa
        объект

        Настройка управления ресурсами в режиме VPA.

        • settings.resourcesManagement.vpa.cpu
          объект

          Настройки VPA при работе с CPU.

          • settings.resourcesManagement.vpa.cpu.limitRatio
            число

            Коэффициент расчета ограничений использования CPU относительно запросов (limits/requests).

            Применяется для расчета начальных ограничений использования CPU для пода (CPU limits).

            Если параметр указан, то VPA, при пересчете запросов CPU (CPU requests) будет пересчитывать ограничения использования CPU (CPU limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).

          • settings.resourcesManagement.vpa.cpu.max

            Максимальное значение, которое может выставить VPA для запроса CPU (CPU requests).

            По умолчанию: 4

          • settings.resourcesManagement.vpa.cpu.min

            Минимальное значение, которое может выставить VPA для запроса CPU (CPU requests).

            По умолчанию: 100m

        • settings.resourcesManagement.vpa.memory
          объект

          Настройка ограничений (limits) использования CPU и памяти.

          • settings.resourcesManagement.vpa.memory.limitRatio
            число

            Коэффициент расчета ограничений использования памяти относительно запросов (limits/requests).

            Применяется для расчета начальных ограничений использования памяти для пода (memory limits).

            Если параметр указан, то VPA, при пересчете запросов памяти (memory requests) будет пересчитывать ограничения использования памяти (memory limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).

          • settings.resourcesManagement.vpa.memory.max

            Максимальное значение, которое может выставить VPA для запроса к памяти (memory requests).

            По умолчанию: 4Gi

          • settings.resourcesManagement.vpa.memory.min

            Минимальное значение, которое может выставить VPA для запроса к памяти (memory requests).

            По умолчанию: 128Mi

        • settings.resourcesManagement.vpa.mode
          строка

          Режим работы VPA.

          По умолчанию: "Initial"

          Допустимые значения: Initial, Auto

    • settings.svcSourceRangeCheck
      булевый

      Для сервисов с типом loadBalancer включает проверку source IP на его соответствие loadBalancer.sourceRanges. Проверка не производится, если доступ производится изнутри кластера или параметр sourceRanges пуст/не указан. Некоторые облачные провайдеры в своих реализациях loadBalancer поддерживают фильтрацию входящего трафика на основе параметра sourceRanges, в таком случае документация по cilium рекомендует отключать проверку svcSourceRangeCheck.

      Не включайте, если перед сервисами есть другой балансировщик или какие-либо виды SNAT.

      По умолчанию: false

    • settings.tunnelMode
      строка

      Режим работы туннеля.

      Внимание! После изменения параметра необходимо перезагрузить все узлы, иначе могут быть проблемы с доступностью подов.

      Внимание! Режим VXLAN не совместим со следующими режимами bpfLBMode: Hybrid, DSR. Если tunnelMode настроен на VXLAN, то bpfLBMode будет переопределён на SNAT автоматически.

      По умолчанию: "Disabled"

      Допустимые значения: Disabled, VXLAN