Документация находится в разработке, может содержать неполную информацию.
Функция доступна только в Enterprise Edition.
Для управления статичными маршрутами и правилами IP-rule на узлах кластера, можно использовать возможности модуля static-routing manager.
Чтобы включить модуль static-routing-manager с настройками по умолчанию, примените следующий ресурс ModuleConfig
:
d8 k apply -f - <<EOF
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: static-routing-manager
spec:
version: 1
enabled: true
EOF
Таблица маршрутизации
Ресурс RoutingTable
описывает желаемую таблицу маршрутизации и содержащиеся в ней маршруты.
Чтобы создать маршрут в основной таблице маршрутизации main, выполните следующее:
-
Примените ресурс
RoutingTable
, согласно которому на узлах, подпадающих под nodeSelector, будет создан маршрут10.0.0.0/8 via 192.168.0.1
:d8 k apply -f - <<EOF apiVersion: network.deckhouse.io/v1alpha1 kind: RoutingTable metadata: name: myrt-main spec: ipRoutingTableID: 254 # ID основной таблицы маршрутизации – 254 routes: - destination: 10.0.0.0/8 gateway: 192.168.0.1 nodeSelector: node-role.deckhouse.io: load-balancer EOF
-
Чтобы проверить созданный маршрут в основной таблице, выполните следующую команду:
ip -4 route ls
В результате будет выведен список маршрутов, включая созданный
10.0.0.0/8 via 192.168.0.1
:... 10.0.0.0/8 via 192.168.0.1 dev eth0 realm 216 ... # Инструкция realm 216 в маршруте используется как маркер для идентификации маршрута под управлением модуля (d8 hex = 216 dec).
Чтобы создать маршрут в дополнительной таблице, выполните следующее:
-
Примените ресурс
RoutingTable
, согласно которому на узлах, подпадающих под nodeSelector, будет создан маршрут0.0.0.0/0 via 192.168.0.1
в таблице 10000:d8 k apply -f - <<EOF apiVersion: network.deckhouse.io/v1alpha1 kind: RoutingTable metadata: name: myrt-extra spec: routes: - destination: 0.0.0.0/0 gateway: 192.168.0.1 nodeSelector: node-role.deckhouse.io: load-balancer status: ipRoutingTableID: 10000 # Если spec.ipRoutingTableID не указан, он будет сгенерирован автоматически и размещён в status ... EOF
-
Чтобы проверить созданный маршрут в дополнительной таблице, выполните следующую команду:
ip -4 route ls table 10000
В результате будет выведен список маршрутов из таблицы 10000, включая созданный
default via 192.168.0.1
:... default via 192.168.0.1 dev eth0 realm 216 ...
Правила маршрутизации
Ресурс IPRuleSet
описывает набор правил (IP-rule), которые будут созданы на узлах с соответствующими метками.
Чтобы применить правило, выполните следующее:
-
Создайте ресурс IPRuleSet, согласно которому на узлах, подпадающих под nodeSelector, будет создан IP-rule:
d8 k apply -f - <<EOF apiVersion: network.deckhouse.io/v1alpha1 kind: IPRuleSet metadata: name: myiprule spec: rules: - selectors: from: - 192.168.111.0/24 - 192.168.222.0/24 to: - 8.8.8.8/32 - 172.16.8.0/21 sportRange: start: 100 end: 200 dportRange: start: 300 end: 400 ipProto: 6 actions: lookup: routingTableName: myrt-extra priority: 50 nodeSelector: node-role.deckhouse.io: load-balancer EOF
-
Чтобы убедиться в том, что правило было применено, выполните следующую команду:
ip rule list
В результате будет выведен список настроенных правил:
... 50: from 192.168.111.0/24 to 172.16.8.0/21 ipproto tcp sport 100-200 dport 300-400 lookup 10000 realms 216 50: from 192.168.222.0/24 to 8.8.8.8 ipproto tcp sport 100-200 dport 300-400 lookup 10000 realms 216 50: from 192.168.222.0/24 to 172.16.8.0/21 ipproto tcp sport 100-200 dport 300-400 lookup 10000 realms 216 50: from 192.168.111.0/24 to 8.8.8.8 ipproto tcp sport 100-200 dport 300-400 lookup 10000 realms 216 ...