IPRuleSet

Scope: Cluster
Version: v1alpha1

Данный ресурс описывает набор правил (ip rule), которые будут созданы на узлах с соответствующими лейблами.

  • spec
    объект

    Обязательный параметр

    • spec.nodeSelector
      объект

      Обязательный параметр

      Набор лейблов, определяющих узлы, на которых необходимо применить данные правила.

    • spec.rules
      массив объектов

      Обязательный параметр

      Желаемый набор правил (ip rule).

      • spec.rules.actions
        объект

        Обязательный параметр

        Набор действий, которые необходимо совершить с пакетом, имеющим признаки описанные в секции selectors.

        • spec.rules.actions.lookup
          объект

          Обязательный параметр

          Определить таблицу маршрутизации, в какой необходимо искать адрес шлюза.

          • spec.rules.actions.lookup.ipRoutingTableID
            целочисленный

            ID таблицы маршрутизации на узле.

            Допустимые значения: 1 <= X <= 4294967295

          • spec.rules.actions.lookup.routingTableName
            строка

            Имя Kubernetes-ресурса RoutingTable, в котором необходимо искать ID таблицы маршрутизации.

      • spec.rules.priority
        целочисленный

        Обязательный параметр

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

        При выборе приоритета стоит учитывать несколько нюансов:

        • Все правила перебираются сетевой подсистемой linux узла в порядке приоритета (от меньшего к большему) пока не будет найдено совпадение.
        • В случае если пакет подпал под какое-то правило и соответствующее действие было успешно выполнено, то перебор правил прекращается.
        • Правило для поиска в таблице маршрутизации main по-умолчанию имеет значение 32766. При указании большего значения — правило никогда не будет обработано.

        Допустимые значения: 0 <= X <= 4294967295

      • spec.rules.selectors
        объект

        Обязательный параметр

        Набор признаков пакета.

        Если пакет имеет признаки описанные в секции selectors, то к нему будут применены действия из секции actions.

        • spec.rules.selectors.dportRange
          объект

          Диапазон портов назначения.

          Если порт только один, то можно заполнить либо только поле start, либо в полях start и end указать одно и то же значение.

          • spec.rules.selectors.dportRange.end
            целочисленный

            Конец диапазона.

            Допустимые значения: 0 <= X <= 65535

          • spec.rules.selectors.dportRange.start
            целочисленный

            Обязательный параметр

            Начало диапазона.

            Допустимые значения: 0 <= X <= 65535

        • spec.rules.selectors.from
          массив строк

          Массив подсетей источника.

          • Элемент массива
            строка

            Подсеть источника.

        • spec.rules.selectors.fwMark
          строка

          Метка трафика существующая только внутри сетевой подсистемы linux на узле.

          Шаблон: ^0[xX][0-9a-fA-F]{1,8}(/0[xX][0-9a-fA-F]{1,8})?$

        • spec.rules.selectors.iif
          строка

          Имя интерфейса, через который пакет “вошел” на узел.

        • spec.rules.selectors.ipProto
          целочисленный

          Номер L4 протокола, который инкапсулирован в IP в данном пакете.

          Номера наиболее популярных протоколов:

          • ICMP — 1
          • TCP — 6
          • UDP — 17 Все доступные значения можно найти по ссылке, или в файле /etc/protocols на узле.
        • spec.rules.selectors.not
          булевый

          Если указан данный флаг, то правило будет инвертировано, то есть под него будут попадать все пакеты не имеющие указанных признаков.

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

        • spec.rules.selectors.oif
          строка

          Имя интерфейса, через который пакет должен был бы “выйти” с узла.

        • spec.rules.selectors.sportRange
          объект

          Диапазон портов источника.

          Если порт только один, то можно заполнить либо только поле start, либо в полях start и end указать одно и то же значение.

          • spec.rules.selectors.sportRange.end
            целочисленный

            Конец диапазона.

            Допустимые значения: 0 <= X <= 65535

          • spec.rules.selectors.sportRange.start
            целочисленный

            Обязательный параметр

            Начало диапазона.

            Допустимые значения: 0 <= X <= 65535

        • spec.rules.selectors.to
          массив строк

          Массив подсетей назначения.

          • Элемент массива
            строка

            Подсеть назначения.

        • spec.rules.selectors.tos
          строка

          QOS метка трафика (TOS/diffserv/dscp) передаваемая по сети в IP-заголовках пакета.

          Шаблон: ^0[xX][0-9a-fA-F]{1,2}$

        • spec.rules.selectors.uidRange
          объект

          Диапазон UID (UserID) пользователей, под которыми запускались приложения передающие трафик.

          Если UID только один, то можно заполнить либо только поле start, либо в полях start и end указать одно и то же значение.

          • spec.rules.selectors.uidRange.end
            целочисленный

            Конец диапазона.

            Допустимые значения: 0 <= X <= 4294967295

          • spec.rules.selectors.uidRange.start
            целочисленный

            Обязательный параметр

            Начало диапазона.

            Допустимые значения: 0 <= X <= 4294967295

RoutingTable

Scope: Cluster
Version: v1alpha1

Ресурс, описывающий желаемую таблицу маршрутизации и содержащиеся в ней маршруты.

  • spec
    объект

    Обязательный параметр

    • spec.ipRoutingTableID
      целочисленный

      ID желаемой таблицы маршрутизации.

      Если значение не указано явно, то оно сгенерируется автоматически и будет добавлено в поле status.

      После создания ресурса изменить ID таблицы маршрутизации можно только пересоздав ресурс.

      Допустимые значения: 1 <= X <= 4294967295

    • spec.nodeSelector
      объект

      Обязательный параметр

      Набор лейблов, определяющих узлы, на которых необходимо создать желаемые маршруты.

    • spec.routes
      массив объектов

      Обязательный параметр

      • spec.routes.destination
        строка

        Обязательный параметр

        Целевая подсеть.

      • spec.routes.gateway
        строка

        Обязательный параметр

        Шлюз, через которую достижима подсеть.