• Русский
  • Настройка Egress Gateway

    Описание Egress Gateway

    Egress Gateway используется для контроля доступа Pods к внешней сети с помощью группы статических адресов и обладает следующими особенностями:

    • Обеспечивает высокую доступность Active-Active через ECMP, позволяя горизонтально масштабировать пропускную способность
    • Реализует быстрое переключение при сбое (<1 с) с помощью BFD
    • Поддерживает IPv6 и dual-stack
    • Позволяет тонко управлять маршрутизацией через NamespaceSelector и PodSelector
    • Обеспечивает гибкое планирование Egress Gateway с помощью NodeSelector

    В то же время Egress Gateway имеет следующие ограничения:

    • Использует macvlan для базового сетевого подключения, требуя поддержки Underlay со стороны физической сети
    • В режиме многократных экземпляров Gateway требуется несколько Egress IP
    • В настоящее время поддерживается только SNAT; EIP и DNAT не поддерживаются
    • В настоящее время не поддерживается запись отношений трансляции исходных адресов

    Детали реализации

    Каждый Egress Gateway состоит из нескольких Pods с несколькими сетевыми интерфейсами. Каждый Pod имеет два сетевых интерфейса: один подключается к виртуальной сети для связи внутри VPC, а другой соединяется с физической сетью через Macvlan для внешней сетевой коммуникации. Трафик виртуальной сети в конечном итоге выходит во внешнюю сеть через NAT внутри экземпляров Egress Gateway.

    Каждый экземпляр Egress Gateway регистрирует свой адрес в таблице маршрутизации OVN. Когда Pod внутри VPC должен получить доступ к внешней сети, OVN использует хеширование исходного адреса для передачи трафика на несколько адресов экземпляров Egress Gateway, обеспечивая балансировку нагрузки. С увеличением количества экземпляров Egress Gateway пропускная способность также масштабируется горизонтально.

    OVN использует протокол BFD для опроса нескольких экземпляров Egress Gateway. При сбое экземпляра Egress Gateway OVN помечает соответствующий маршрут как недоступный, обеспечивая быстрое обнаружение и восстановление после отказа.

    Примечания

    • Поддержка Egress Gateway есть только в Kube-OVN CNI.
    • Для работы Egress Gateway требуется Multus-CNI.

    Использование

    Создание Network Attachment Definition

    Egress Gateway использует несколько сетевых интерфейсов для доступа как к внутренней, так и к внешней сети, поэтому необходимо создать Network Attachment Definition для подключения к внешней сети. Пример использования плагина macvlan с IPAM от Kube-OVN приведён ниже:

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: eth1
      namespace: default
    spec:
      config: '{
          "cniVersion": "0.3.0",
          "type": "macvlan",
          "master": "eth1",
          "mode": "bridge",
          "ipam": {
            "type": "kube-ovn",
            "server_socket": "/run/openvswitch/kube-ovn-daemon.sock",
            "provider": "eth1.default"
          }
        }'
    ---
    apiVersion: kubeovn.io/v1
    kind: Subnet
    metadata:
      name: macvlan1
    spec:
      protocol: IPv4
      provider: eth1.default
      cidrBlock: 172.17.0.0/16
      gateway: 172.17.0.1
      excludeIps:
        - 172.17.0.2..172.17.0.10
    1. Интерфейс хоста, который подключается к внешней сети.
    2. Имя провайдера в формате <network attachment definition name>.<namespace>.
    3. Имя провайдера, используемое для идентификации внешней сети и ДОЛЖНО совпадать с указанным в NetworkAttachmentDefinition.
    TIP

    Вы можете создать Network Attachment Definition с любым CNI плагином для доступа к соответствующей сети.

    Создание VPC Egress Gateway

    Создайте ресурс VPC Egress Gateway, как показано в примере ниже:

    apiVersion: kubeovn.io/v1
    kind: VpcEgressGateway
    metadata:
      name: gateway1
      namespace: default
    spec:
      replicas: 1
      externalSubnet: macvlan1
      nodeSelector:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - kube-ovn-worker
                - kube-ovn-worker2
      selectors:
        - namespaceSelector:
            matchLabels:
              kubernetes.io/metadata.name: default
      policies:
        - snat: true
          subnets:
            - subnet1
        - snat: false
          ipBlocks:
            - 10.18.0.0/16
    1. Namespace, в котором создаются экземпляры VPC Egress Gateway.
    2. Количество реплик экземпляров VPC Egress Gateway.
    3. Внешний подсеть, подключаемая к внешней сети.
    4. Node selectors, к которым применяется VPC Egress Gateway.
    5. Namespace и Pod селекторы, к которым применяется VPC Egress Gateway.
    6. Политики для VPC Egress Gateway, включая SNAT и применяемые подсети/ipBlocks.
    7. Включение SNAT для политики.
    8. Подсети, к которым применяется политика.
    9. IP-блоки, к которым применяется политика.

    Данный ресурс создаёт VPC Egress Gateway с именем gateway1 в namespace default, и следующие Pods будут выходить во внешнюю сеть через подсеть macvlan1:

    • Pods в namespace default.
    • Pods в подсети subnet1.
    • Pods с IP в CIDR 10.18.0.0/16.
    NOTICE

    Pods, соответствующие .spec.selectors, всегда будут выходить во внешнюю сеть с включённым SNAT.

    После создания проверьте ресурс VPC Egress Gateway:

    $ kubectl get veg gateway1
    NAME       VPC           REPLICAS   BFD ENABLED   EXTERNAL SUBNET   PHASE       READY   AGE
    gateway1   ovn-cluster   1          false         macvlan1          Completed   true    13s

    Для просмотра дополнительной информации:

    kubectl get veg gateway1 -o wide
    NAME       VPC           REPLICAS   BFD ENABLED   EXTERNAL SUBNET   PHASE       READY   INTERNAL IPS     EXTERNAL IPS      WORKING NODES         AGE
    gateway1   ovn-cluster   1          false         macvlan1          Completed   true    ["10.16.0.12"]   ["172.17.0.11"]   ["kube-ovn-worker"]   82s

    Для просмотра workload:

    $ kubectl get deployment -l ovn.kubernetes.io/vpc-egress-gateway=gateway1
    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    gateway1   1/1     1            1           4m40s
    
    $ kubectl get pod -l ovn.kubernetes.io/vpc-egress-gateway=gateway1 -o wide
    NAME                       READY   STATUS    RESTARTS   AGE     IP           NODE              NOMINATED NODE   READINESS GATES
    gateway1-b9f8b4448-76lhm   1/1     Running   0          4m48s   10.16.0.12   kube-ovn-worker   <none>           <none>

    Для просмотра IP-адресов, маршрутов и правил iptables в Pod:

    $ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip address show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: net1@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 62:d8:71:90:7b:86 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 172.17.0.11/16 brd 172.17.255.255 scope global net1
           valid_lft forever preferred_lft forever
        inet6 fe80::60d8:71ff:fe90:7b86/64 scope link
           valid_lft forever preferred_lft forever
    17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UP group default
        link/ether 36:7c:6b:c7:82:6b brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 10.16.0.12/16 brd 10.16.255.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::347c:6bff:fec7:826b/64 scope link
           valid_lft forever preferred_lft forever
    
    $ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip rule show
    0:      from all lookup local
    1001:   from all iif eth0 lookup default
    1002:   from all iif net1 lookup 1000
    1003:   from 10.16.0.12 iif lo lookup 1000
    1004:   from 172.17.0.11 iif lo lookup default
    32766:  from all lookup main
    32767:  from all lookup default
    
    $ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip route show
    default via 172.17.0.1 dev net1
    10.16.0.0/16 dev eth0 proto kernel scope link src 10.16.0.12
    10.17.0.0/16 via 10.16.0.1 dev eth0
    10.18.0.0/16 via 10.16.0.1 dev eth0
    172.17.0.0/16 dev net1 proto kernel scope link src 172.17.0.11
    
    $ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- ip route show table 1000
    default via 10.16.0.1 dev eth0
    
    $ kubectl exec gateway1-b9f8b4448-76lhm -c gateway -- iptables -t nat -S
    -P PREROUTING ACCEPT
    -P INPUT ACCEPT
    -P OUTPUT ACCEPT
    -P POSTROUTING ACCEPT
    -N VEG-MASQUERADE
    -A PREROUTING -i eth0 -j MARK --set-xmark 0x4000/0x4000
    -A POSTROUTING -d 10.18.0.0/16 -j RETURN
    -A POSTROUTING -s 10.18.0.0/16 -j RETURN
    -A POSTROUTING -j VEG-MASQUERADE
    -A VEG-MASQUERADE -j MARK --set-xmark 0x0/0xffffffff
    -A VEG-MASQUERADE -j MASQUERADE --random-fully

    Захват пакетов в Pod Gateway для проверки сетевого трафика:

    $ kubectl exec -ti gateway1-b9f8b4448-76lhm -c gateway -- bash
    nobody@gateway1-b9f8b4448-76lhm:/kube-ovn$ tcpdump -i any -nnve icmp and host 172.17.0.1
    tcpdump: data link type LINUX_SLL2
    tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
    06:50:58.936528 eth0  In  ifindex 17 92:26:b8:9e:f2:1c ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 63, id 30481, offset 0, flags [DF], proto ICMP (1), length 84)
        10.17.0.9 > 172.17.0.1: ICMP echo request, id 37989, seq 0, length 64
    06:50:58.936574 net1  Out ifindex 2 62:d8:71:90:7b:86 ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 62, id 30481, offset 0, flags [DF], proto ICMP (1), length 84)
        172.17.0.11 > 172.17.0.1: ICMP echo request, id 39449, seq 0, length 64
    06:50:58.936613 net1  In  ifindex 2 02:42:39:79:7f:08 ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 64, id 26701, offset 0, flags [none], proto ICMP (1), length 84)
        172.17.0.1 > 172.17.0.11: ICMP echo reply, id 39449, seq 0, length 64
    06:50:58.936621 eth0  Out ifindex 17 36:7c:6b:c7:82:6b ethertype IPv4 (0x0800), length 104: (tos 0x0, ttl 63, id 26701, offset 0, flags [none], proto ICMP (1), length 84)
        172.17.0.1 > 10.17.0.9: ICMP echo reply, id 37989, seq 0, length 64

    Политики маршрутизации автоматически создаются на OVN Logical Router:

    $ kubectl ko nbctl lr-policy-list ovn-cluster
    Routing Policies
         31000                            ip4.dst == 10.16.0.0/16   allow
         31000                            ip4.dst == 10.17.0.0/16   allow
         31000                           ip4.dst == 100.64.0.0/16   allow
         30000                              ip4.dst == 172.18.0.2  reroute  100.64.0.4
         30000                              ip4.dst == 172.18.0.3  reroute  100.64.0.3
         30000                              ip4.dst == 172.18.0.4  reroute  100.64.0.2
         29100                  ip4.src == $VEG.8ca38ae7da18.ipv4  reroute  10.16.0.12
         29100                   ip4.src == $VEG.8ca38ae7da18_ip4  reroute  10.16.0.12
         29000 ip4.src == $ovn.default.kube.ovn.control.plane_ip4  reroute  100.64.0.3
         29000       ip4.src == $ovn.default.kube.ovn.worker2_ip4  reroute  100.64.0.2
         29000        ip4.src == $ovn.default.kube.ovn.worker_ip4  reroute  100.64.0.4
         29000     ip4.src == $subnet1.kube.ovn.control.plane_ip4  reroute  100.64.0.3
         29000           ip4.src == $subnet1.kube.ovn.worker2_ip4  reroute  100.64.0.2
         29000            ip4.src == $subnet1.kube.ovn.worker_ip4  reroute  100.64.0.4
    1. Политика Logical Router, используемая VPC Egress Gateway для перенаправления трафика от Pods, указанных в .spec.policies.
    2. Политика Logical Router, используемая VPC Egress Gateway для перенаправления трафика от Pods, указанных в .spec.selectors.

    Если необходимо включить балансировку нагрузки, измените .spec.replicas, как показано в примере:

    $ kubectl scale veg gateway1 --replicas=2
    vpcegressgateway.kubeovn.io/gateway1 scaled
    
    $ kubectl get veg gateway1
    NAME       VPC           REPLICAS   BFD ENABLED   EXTERNAL SUBNET   PHASE       READY   AGE
    gateway1   ovn-cluster   2          false         macvlan           Completed   true    39m
    
    $ kubectl get pod -l ovn.kubernetes.io/vpc-egress-gateway=gateway1 -o wide
    NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE               NOMINATED NODE   READINESS GATES
    gateway1-b9f8b4448-76lhm   1/1     Running   0          40m   10.16.0.12   kube-ovn-worker    <none>           <none>
    gateway1-b9f8b4448-zd4dl   1/1     Running   0          64s   10.16.0.13   kube-ovn-worker2   <none>           <none>
    
    $ kubectl ko nbctl lr-policy-list ovn-cluster
    Routing Policies
         31000                            ip4.dst == 10.16.0.0/16    allow
         31000                            ip4.dst == 10.17.0.0/16    allow
         31000                           ip4.dst == 100.64.0.0/16    allow
         30000                              ip4.dst == 172.18.0.2  reroute  100.64.0.4
         30000                              ip4.dst == 172.18.0.3  reroute  100.64.0.3
         30000                              ip4.dst == 172.18.0.4  reroute  100.64.0.2
         29100                  ip4.src == $VEG.8ca38ae7da18.ipv4  reroute  10.16.0.12, 10.16.0.13
         29100                   ip4.src == $VEG.8ca38ae7da18_ip4  reroute  10.16.0.12, 10.16.0.13
         29000 ip4.src == $ovn.default.kube.ovn.control.plane_ip4  reroute  100.64.0.3
         29000       ip4.src == $ovn.default.kube.ovn.worker2_ip4  reroute  100.64.0.2
         29000        ip4.src == $ovn.default.kube.ovn.worker_ip4  reroute  100.64.0.4
         29000     ip4.src == $subnet1.kube.ovn.control.plane_ip4  reroute  100.64.0.3
         29000           ip4.src == $subnet1.kube.ovn.worker2_ip4  reroute  100.64.0.2
         29000            ip4.src == $subnet1.kube.ovn.worker_ip4  reroute  100.64.0.4

    Включение высокой доступности на основе BFD

    Высокая доступность на основе BFD опирается на функцию VPC BFD LRP, поэтому необходимо изменить ресурс VPC для включения BFD Port. Пример включения BFD Port для default VPC:

    apiVersion: kubeovn.io/v1
    kind: Vpc
    metadata:
      name: ovn-cluster
    spec:
      bfdPort:
        enabled: true
        ip: 10.255.255.255
        nodeSelector:
          matchLabels:
            kubernetes.io/os: linux
    1. Включение BFD Port.
    2. IP-адрес BFD Port, который ДОЛЖЕН быть валидным и не конфликтовать с другими IP/подсетями.
    3. Node selector для выбора узлов, на которых BFD Port работает в режиме Active-Backup.

    После включения BFD Port на соответствующем OVN Logical Router автоматически создаётся LRP, выделенный для BFD:

    $ kubectl ko nbctl show ovn-cluster
    router 0c1d1e8f-4c86-4d96-88b2-c4171c7ff824 (ovn-cluster)
        port bfd@ovn-cluster
            mac: "8e:51:4b:16:3c:90"
            networks: ["10.255.255.255"]
        port ovn-cluster-join
            mac: "d2:21:17:71:77:70"
            networks: ["100.64.0.1/16"]
        port ovn-cluster-ovn-default
            mac: "d6:a3:f5:31:cd:89"
            networks: ["10.16.0.1/16"]
        port ovn-cluster-subnet1
            mac: "4a:09:aa:96:bb:f5"
            networks: ["10.17.0.1/16"]
    1. BFD Port, созданный на OVN Logical Router.

    Далее установите .spec.bfd.enabled в true в VPC Egress Gateway. Пример:

    apiVersion: kubeovn.io/v1
    kind: VpcEgressGateway
    metadata:
      name: gateway2
      namespace: default
    spec:
      vpc: ovn-cluster
      replicas: 2
      internalSubnet: ovn-default
      externalSubnet: macvlan1
      bfd:
        enabled: true
        minRX: 100
        minTX: 100
        multiplier: 5
      policies:
        - snat: true
          ipBlocks:
            - 10.18.0.0/16
    1. VPC, к которому принадлежит Egress Gateway.
    2. Внутренняя подсеть, к которой подключены экземпляры Egress Gateway.
    3. Внешняя подсеть, к которой подключены экземпляры Egress Gateway.
    4. Включение BFD для Egress Gateway.
    5. Минимальный интервал приёма BFD в миллисекундах.
    6. Минимальный интервал передачи BFD в миллисекундах.
    7. Множитель BFD, определяющий количество пропущенных пакетов до фиксации сбоя.

    Для просмотра информации о VPC Egress Gateway:

    $ kubectl get veg gateway2 -o wide
    NAME       VPC    REPLICAS   BFD ENABLED   EXTERNAL SUBNET   PHASE       READY   INTERNAL IPS                    EXTERNAL IPS                    WORKING NODES                            AGE
    gateway2   vpc1   2          true          macvlan           Completed   true    ["10.16.0.102","10.16.0.103"]   ["172.17.0.13","172.17.0.14"]   ["kube-ovn-worker","kube-ovn-worker2"]   58s
    
    $ kubectl get pod -l ovn.kubernetes.io/vpc-egress-gateway=gateway2 -o wide
    NAME                       READY   STATUS    RESTARTS   AGE     IP            NODE               NOMINATED NODE   READINESS GATES
    gateway2-fcc6b8b87-8lgvx   1/1     Running   0          2m18s   10.16.0.103   kube-ovn-worker2   <none>           <none>
    gateway2-fcc6b8b87-wmww6   1/1     Running   0          2m18s   10.16.0.102   kube-ovn-worker    <none>           <none>
    
    $ kubectl ko nbctl lr-policy-list ovn-cluster
    Routing Policies
         31000                            ip4.dst == 10.16.0.0/16    allow
         31000                            ip4.dst == 10.17.0.0/16    allow
         31000                           ip4.dst == 100.64.0.0/16    allow
         30000                              ip4.dst == 172.18.0.2  reroute  100.64.0.4
         30000                              ip4.dst == 172.18.0.3  reroute  100.64.0.3
         30000                              ip4.dst == 172.18.0.4  reroute  100.64.0.2
         29100                  ip4.src == $VEG.8ca38ae7da18.ipv4  reroute  10.16.0.102, 10.16.0.103  bfd
         29100                   ip4.src == $VEG.8ca38ae7da18_ip4  reroute  10.16.0.102, 10.16.0.103  bfd
         29090                  ip4.src == $VEG.8ca38ae7da18.ipv4     drop
         29090                   ip4.src == $VEG.8ca38ae7da18_ip4     drop
         29000 ip4.src == $ovn.default.kube.ovn.control.plane_ip4  reroute  100.64.0.3
         29000       ip4.src == $ovn.default.kube.ovn.worker2_ip4  reroute  100.64.0.2
         29000        ip4.src == $ovn.default.kube.ovn.worker_ip4  reroute  100.64.0.4
         29000     ip4.src == $subnet1.kube.ovn.control.plane_ip4  reroute  100.64.0.3
         29000           ip4.src == $subnet1.kube.ovn.worker2_ip4  reroute  100.64.0.2
         29000            ip4.src == $subnet1.kube.ovn.worker_ip4  reroute  100.64.0.4
    
    $ kubectl ko nbctl list bfd
    _uuid               : 223ede10-9169-4c7d-9524-a546e24bfab5
    detect_mult         : 5
    dst_ip              : "10.16.0.102"
    external_ids        : {af="4", vendor=kube-ovn, vpc-egress-gateway="default/gateway2"}
    logical_port        : "bfd@ovn-cluster"
    min_rx              : 100
    min_tx              : 100
    options             : {}
    status              : up
    
    _uuid               : b050c75e-2462-470b-b89c-7bd38889b758
    detect_mult         : 5
    dst_ip              : "10.16.0.103"
    external_ids        : {af="4", vendor=kube-ovn, vpc-egress-gateway="default/gateway2"}
    logical_port        : "bfd@ovn-cluster"
    min_rx              : 100
    min_tx              : 100
    options             : {}
    status              : up

    Для просмотра BFD-сессий:

    $ kubectl exec gateway2-fcc6b8b87-8lgvx -c bfdd -- bfdd-control status
    There are 1 sessions:
    Session 1
     id=1 local=10.16.0.103 (p) remote=10.255.255.255 state=Up
    
    $ kubectl exec gateway2-fcc6b8b87-wmww6 -c bfdd -- bfdd-control status
    There are 1 sessions:
    Session 1
     id=1 local=10.16.0.102 (p) remote=10.255.255.255 state=Up
    NOTICE

    Если все экземпляры шлюза недоступны, исходящий трафик, к которому применяется VPC Egress Gateway, будет отброшен.

    Параметры конфигурации

    VPC BFD Port

    ПоляТипНеобязательноЗначение по умолчаниюОписаниеПримеры
    enabledbooleanДаfalseВключение BFD Port.true
    ipstringНет-IP-адрес, используемый BFD Port.
    Не должен конфликтовать с другими адресами. Поддерживаются IPv4, IPv6 и dual-stack.
    169.255.255.255
    fdff::1
    169.255.255.255,fdff::1
    nodeSelectormatchLabelsobjectДа-Селекторы меток для выбора узлов, на которых работает BFD Port.
    BFD Port привязывается к OVN HA Chassis Group выбранных узлов и работает в режиме Active/Backup.
    Если поле не указано, Kube-OVN автоматически выбирает до трёх узлов.
    Все ресурсы OVN HA Chassis Group можно просмотреть командой kubectl ko nbctl list ha_chassis_group.
    Карта пар {ключ,значение}.-
    matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-

    VPC Egress Gateway

    ПоляТипНеобязательноЗначение по умолчаниюОписаниеПримеры
    vpcstringДаИмя default VPC (ovn-cluster)Имя VPC.vpc1
    replicasinteger/int32Да1Количество реплик.2
    prefixstringДа-Неизменяемый префикс имени развертывания workload.veg-
    imagestringДа-Образ, используемый для развертывания workload.docker.io/kubeovn/kube-ovn:v1 .14.0-debug
    internalSubnetstringДаИмя default подсети внутри VPC.Имя подсети для доступа к внутренней/внешней сети.subnet1
    externalSubnetНет-ext1
    internalIPsstring arrayДа-

    IP-адреса для доступа к внутренней/внешней сети. Поддерживаются IPv4, IPv6 и dual-stack.
    Количество указанных IP не должно быть меньше replicas.
    Рекомендуется указать <replicas> + 1 для предотвращения крайних случаев с некорректным созданием Pod.

    10.16.0.101

    fdff::1

    169.255.255.255,fdff::1
    externalIPs
    bfdenabledbooleanДаfalseКонфигурация BFD.Включение BFD для Egress Gateway.-
    minRXinteger/int32Да1000Минимальные интервалы приёма/передачи BFD в миллисекундах.500
    minTX
    multiplierinteger/int32Да3Множитель BFD.1
    policiessnatbooleanДаfalseПолитики исходящего трафика.Включение SNAT/MASQUERADE.true
    ipBlocksstring arrayДа-

    IP-диапазоны, к которым применяется шлюз.
    Поддерживаются как IPv4, так и IPv6.

    192.168.0.1
    192.168.0.0/24
    fd00::1
    fd00::/120
    subnetsstring arrayДа-

    Имя подсети VPC, к которой применяется шлюз.
    Поддерживаются IPv4, IPv6 и dual-stack подсети.

    subnet1
    selectorsnamespaceSelectormatchLabelsobjectДа-

    Настройка политик исходящего трафика по селекторам namespace и Pod.
    SNAT/MASQUERADE применяется к совпадающим Pods.

    Селектор namespace. Пустой селектор меток соответствует всем namespace.

    Карта пар {ключ,значение}.-
    matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-
    podSelectormatchLabelsobjectДа-

    Селектор Pod. Пустой селектор меток соответствует всем Pods.

    Карта пар {ключ,значение}.-
    matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-
    nodeSelectormatchLabelsobjectДа-

    Node selector для выбора узлов, на которых развертывается workload.
    Workload (Deployment/Pod) будет запускаться на выбранных узлах.

    Карта пар {ключ,значение}.-
    matchExpressionsobject arrayДа-Список требований селектора меток. Требования объединяются логическим И.-
    matchFieldsobject arrayДа-Список требований селектора полей. Требования объединяются логическим И.-
    trafficPolicystringДаCluster

    Эффективно только при включённом BFD.
    Доступные значения: Cluster/Local.
    При установке в Local исходящий трафик будет перенаправляться на экземпляр VPC Egress Gateway, работающий на том же узле, если он доступен.
    Если экземпляр недоступен, трафик будет перенаправлен на другие экземпляры.

    Local

    Дополнительные ресурсы