Implementa un modelo de red de modo plano con compatibilidad con BGP

En este documento, se describe cómo implementar un modelo de red de modo plano compatible con el Protocolo de puerta de enlace fronteriza (BGP). Cuando implementas un modelo de red compatible con BGP, BGP garantiza de forma dinámica que los Pods en diferentes dominios L2 se pueden comunicar entre sí.

Para obtener más información sobre los modelos de red de modo plano, consulta modelos de red de modo plano frente a modo isla.

Cómo implementar una red de modo plano que usa BGP

Para implementar un clúster en un modelo de red de modo plano compatible con BGP, realiza los siguientes cambios en el archivo cluster.yaml del clúster:

  • Configura el campo spec.clusterNetwork.advancedNetworking como true en el recurso del clúster.
  • Configura el campo spec.clusterNetwork.flatIPv4 como true en el recurso del clúster.
  • Cuando spec.clusterNetwork.flatIPv4 se configura como true, el campo spec.clusterNetwork.pods.cidrBlocks se ignora y se puede omitir. Sin embargo, deberás definir una sección ClusterCIDRConfigs en el archivo yaml (por nodo, por grupo de nodos o por clúster). Consulta el archivo cluster.yaml de ejemplo a continuación para obtener más información.
  • Agrega un recurso NetworkGatewayGroup al archivo cluster.yaml y especifica las IP flotantes que se usarán para el intercambio de tráfico de BGP. Asegúrate de que el nombre sea default y que el espacio de nombres sea el del clúster.
  • Agrega los recursos FlatIPMode y BGPPeer al archivo cluster.yaml. El nombre del recurso FlatIPMode debe ser default, y todos los recursos deben estar en el espacio de nombres del clúster.

Para la vista previa, solo se admiten pares y sesiones de BGP IPv4. Sin embargo, si tu entorno admite BGP multiprotocolo (MP-BGP), se pueden anunciar rutas IPv4 e IPv6 a través de estas sesiones de IPv4. No se admite la configuración de par de BGP de IPv6.

En el siguiente extracto de un archivo cluster.yaml, se muestra cómo implementar herramientas de redes de modo plano con compatibilidad con BGP. Ten en cuenta que las direcciones IP que aparecen en este extracto son solo ejemplos, y deberás reemplazarlas por tus propias direcciones IP:


apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: bm
  namespace: cluster-bm
spec:

...

  clusterNetwork:
    advancedNetworking: true
    flatIPv4: true

  ... (other cluster config omitted)

apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
metadata:
  name: default
  namespace: cluster-bm
spec:
  floatingIPs:
  - 10.0.1.100
  - 10.0.2.100

....

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: FlatIPMode
metadata:
  name: default
  namespace: cluster-bm
spec:
  enableBGPIPv4: true
  enableBGPIPv6: false
  peerSelector:
    flatip-peer: "true"

....

apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer1
  namespace: cluster-bm
  labels:
    flatip-peer: "true"
spec:
  localASN: 65001
  peerASN: 65000
  peerIP: 10.0.1.254
  sessions: 2

....

apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer2
  namespace: cluster-bm
  labels:
    flatip-peer: "true"
spec:
  localASN: 65001
  peerASN: 65000
  peerIP: 10.0.2.254
  sessions: 2

....

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig
metadata:
  name: cluster-wide-1
  namespace: cluster-bm
spec:
  ipv4:
    cidr: "192.168.0.0/16"
    perNodeMaskSize: 24