Configurar o BGP do Cilium para nós híbridos - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Configurar o BGP do Cilium para nós híbridos

Este tópico descreve como configurar o Protocolo de Gateway da Borda (BGP) do Cilium para o Amazon EKS Hybrid Nodes. A funcionalidade BGP do Cilium é chamada de Ambiente de gerenciamento BGP do Cilium e pode ser usada para anunciar endereços de pod e serviços em sua rede on-premises. Para obter métodos alternativos de tornar os CIDRs de pods roteáveis na rede on-premises, consulte CIDRs de pods remotos roteáveis.

Configurar o BGP do Cilium

Pré-requisitos

Procedimento

  1. Para usar o BGP com o Cilium para anunciar endereços de pods ou serviços na sua rede on-premises, você deve ter o Cilium instalado com bgpControlPlane.enabled: true. Caso esteja habilitando o BGP para uma implantação existente do Cilium, você deverá reiniciar o operador do Cilium para aplicar a configuração do BGP caso ele não tenha sido habilitado anteriormente. Você pode definir operator.rollOutPods como true nos seus valores do Helm para reiniciar o operador do Cilium como parte do processo de instalação e atualização do Helm.

    helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \ --namespace kube-system \ --reuse-values \ --set operator.rollOutPods=true \ --set bgpControlPlane.enabled=true
  2. Confirme se o operador e os atendentes do Cilium foram reiniciados e estão funcionando.

    kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
    NAME READY STATUS RESTARTS AGE cilium-grwlc 1/1 Running 0 4m12s cilium-operator-68f7766967-5nnbl 1/1 Running 0 4m20s cilium-operator-68f7766967-7spfz 1/1 Running 0 4m20s cilium-pnxcv 1/1 Running 0 6m29s cilium-r7qkj 1/1 Running 0 4m12s cilium-wxhfn 1/1 Running 0 4m1s cilium-z7hlb 1/1 Running 0 6m30s
  3. Crie um arquivo chamado cilium-bgp-cluster.yaml com uma definição CiliumBGPClusterConfig. Talvez seja necessário obter as informações a seguir do seu administrador de rede.

    • Configure o localASN com o ASN dos nós que executam o Cilium.

    • Configure o peerASN com o ASN do roteador on-premises.

    • Configure o peerAddress com o IP do roteador on-premises com o qual cada nó que executa o Cilium fará emparelhamento.

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPClusterConfig metadata: name: cilium-bgp spec: nodeSelector: matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid bgpInstances: - name: "rack0" localASN: NODES_ASN peers: - name: "onprem-router" peerASN: ONPREM_ROUTER_ASN peerAddress: ONPREM_ROUTER_IP peerConfigRef: name: "cilium-peer"
  4. Aplique a configuração do cluster do BGP do Cilium ao seu cluster.

    kubectl apply -f cilium-bgp-cluster.yaml
  5. Crie um arquivo cilium-bgp-peer.yaml com o nome do recurso CiliumBGPPeerConfig que define a configuração de pares do BGP. Vários pares podem compartilhar a mesma configuração e fornecer referência ao recurso comum de CiliumBGPPeerConfig. Consulte a configuração de pares do BGP na documentação do Cilium para obter uma lista completa das opções de configuração.

    Os valores das seguintes configurações de pares do Cilium devem corresponder aos do roteador on-premises com o qual você está fazendo o emparelhamento.

    • Configure holdTimeSeconds, que determina quanto tempo um par do BGP espera por uma mensagem de manutenção ou atualização antes de declarar a sessão inativa. O padrão é de 90 segundos.

    • Configure keepAliveTimeSeconds, que determina se um par do BGP ainda está acessível e se a sessão do BGP está ativa. O padrão é 30 segundos.

    • Configure restartTimeSeconds, que determina o tempo em que se espera que o ambiente de gerenciamento do BGP do Cilium restabeleça a sessão do BGP após uma reinicialização. O padrão é 120 segundos.

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPPeerConfig metadata: name: cilium-peer spec: timers: holdTimeSeconds: 90 keepAliveTimeSeconds: 30 gracefulRestart: enabled: true restartTimeSeconds: 120 families: - afi: ipv4 safi: unicast advertisements: matchLabels: advertise: "bgp"
  6. Aplique a configuração de pares do BGP do Cilium ao seu cluster.

    kubectl apply -f cilium-bgp-peer.yaml
  7. Crie um arquivo cilium-bgp-advertisement-pods.yaml com o nome de um recurso CiliumBGPAdvertisement para anunciar os CIDRs do pod em sua rede on-premises.

    • O recurso CiliumBGPAdvertisement é usado para definir tipos e atributos de anúncios associados a eles. O exemplo abaixo configura o Cilium para anunciar somente CIDRs de pod. Veja os exemplos em Tipo de serviço LoadBalancer e Balanceamento de carga no cluster do Cilium para obter mais informações sobre como configurar o Cilium para anunciar endereços de serviços.

    • Cada nó híbrido que executa o atendente do Cilium emparelha com o roteador upstream habilitado para BGP. Cada nó anuncia a faixa de pod CIDR que possui quando advertisementType do Cilium está configurada como PodCIDR no exemplo abaixo. Consulte a configuração de anúncios do BGP na documentação do Cilium para obter mais informações.

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisement-pods labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR"
  8. Aplique a configuração de anúncios do BGP do Cilium ao seu cluster.

    kubectl apply -f cilium-bgp-advertisement-pods.yaml
  9. Você pode confirmar que o emparelhamento do BGP funcionou com a CLI do Cilium usando o comando cilium bgp peers. Você deve ver os valores corretos na saída do ambiente e no estado da sessão como established. Consulte o Guia de solução de problemas e operações na documentação do Cilium para obter mais informações sobre a solução de problemas.

    Nos exemplos abaixo, há cinco nós híbridos executando o atendente do Cilium e cada nó está anunciando o intervalo de CIDR do Pod que possui.

    cilium bgp peers
    Node Local AS Peer AS Peer Address Session State Uptime Family Received Advertised mi-026d6a261e355fba7 NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h18m58s ipv4/unicast 1 2 mi-082f73826a163626e NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h19m12s ipv4/unicast 1 2 mi-09183e8a3d755abf6 NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h18m47s ipv4/unicast 1 2 mi-0d78d815980ed202d NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h19m12s ipv4/unicast 1 2 mi-0daa253999fe92daa NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h18m58s ipv4/unicast 1 2
    cilium bgp routes
    Node VRouter Prefix NextHop Age Attrs mi-026d6a261e355fba7 NODES_ASN 10.86.2.0/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-082f73826a163626e NODES_ASN 10.86.2.192/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-09183e8a3d755abf6 NODES_ASN 10.86.2.64/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0d78d815980ed202d NODES_ASN 10.86.2.128/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0daa253999fe92daa NODES_ASN 10.86.3.0/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}]