Implementar um modelo de rede no modo plano com suporte do BGP

Neste documento, descrevemos como implementar um modelo de rede no modo plano com suporte do Border Gateway Protocol (BGP). Quando você implementa um modelo de rede com o suporte do BGP, o BGP garante dinamicamente que os pods em diferentes domínios L2 possam se comunicar uns com os outros.

Para mais informações sobre modelos de rede no modo plano, consulte Modelos de rede no modo plano x ilha.

Como implementar uma rede de modo plano que usa o BGP

Para implementar um cluster em um modelo de rede no modo plano com suporte do BGP, faça as seguintes alterações no arquivo cluster.yaml do cluster:

  • Defina o campo spec.clusterNetwork.advancedNetworking como true no recurso de cluster.
  • Defina o campo spec.clusterNetwork.flatIPv4 como true no recurso do cluster.
  • Quando spec.clusterNetwork.flatIPv4 for definido como true, o campo spec.clusterNetwork.pods.cidrBlocks será ignorado e poderá ser omitido. No entanto, você precisará definir uma seção ClusterCIDRConfigs no arquivo yaml (per-node, per-nodepool e/ou per-cluster). Veja o arquivo cluster.yaml de exemplo abaixo para mais detalhes.
  • Anexe um recurso NetworkGatewayGroup ao arquivo cluster.yaml e especifique os IPs flutuantes a serem usados para o peering do BGP. Verifique se o nome é default e se o namespace é o namespace do cluster.
  • Anexe os recursos FlatIPMode e BGPPeer ao arquivo cluster.yaml. O nome do recurso FlatIPMode precisa ser default, e todos os recursos precisam estar no namespace do cluster.

Para a visualização, somente os pares e as sessões do BGP IPv4 são suportados. No entanto, se o ambiente suportar o BGP multiprotocolo(MP-BGP), as rotas IPv4 e IPv6 poderão ser anunciadas nessas sessões. A configuração do BGP IPv6 de peering não é suportada na versão 1.11.0 de clusters do Anthos em Bare Metal.

O trecho a seguir de um arquivo cluster.yaml mostra como implementar uma rede de modo plano com o suporte do BGP. Os endereços IP que aparecem neste trecho são apenas exemplos, e você precisará substituí-los pelos seus próprios endereços 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