

 **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
<a name="hybrid-nodes-cilium-bgp"></a>

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](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane/) 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](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

## Configurar o BGP do Cilium
<a name="hybrid-nodes-cilium-bgp-configure"></a>

### Pré-requisitos
<a name="_prerequisites"></a>
+ Cilium instalado seguindo as instruções em [Configurar a CNI para nós híbridos](hybrid-nodes-cni.md).

### Procedimento
<a name="_procedure"></a>

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
   ```

1. 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
   ```

1. 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"
     ```

1. Aplique a configuração do cluster do BGP do Cilium ao seu cluster.

   ```
   kubectl apply -f cilium-bgp-cluster.yaml
   ```

1. 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](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-v2/#bgp-peer-configuration) 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"
     ```

1. Aplique a configuração de pares do BGP do Cilium ao seu cluster.

   ```
   kubectl apply -f cilium-bgp-peer.yaml
   ```

1. 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](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) e [Balanceamento de carga no cluster do Cilium](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-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](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane-v2/#bgp-advertisements) 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"
     ```

1. Aplique a configuração de anúncios do BGP do Cilium ao seu cluster.

   ```
   kubectl apply -f cilium-bgp-advertisement-pods.yaml
   ```

1. Você pode confirmar que o emparelhamento do BGP funcionou com a [CLI do Cilium](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) 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](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane/#troubleshooting-and-operation-guide) 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}]
   ```