

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configurer Cilium BGP pour les nœuds hybrides
<a name="hybrid-nodes-cilium-bgp"></a>

Cette rubrique décrit comment configurer le protocole de passerelle frontière (BGP) de Cilium pour les nœuds hybrides Amazon EKS. La fonctionnalité BGP de Cilium s’appelle le [plan de contrôle Cilium BGP](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane/) et peut être utilisée pour diffuser les adresses des pods et des services vers votre réseau sur site. Pour connaître les autres méthodes permettant de rendre les CIDR pod routables sur votre réseau local, consultez [CIDR de pods distants routables](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

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

### Prérequis
<a name="_prerequisites"></a>
+ Cilium installé en suivant les instructions dans [Configurer CNI pour les nœuds hybrides](hybrid-nodes-cni.md).

### Procédure
<a name="_procedure"></a>

1. Pour utiliser BGP avec Cilium afin de publier les adresses des pods ou des services sur votre réseau local, Cilium doit être installé avec `bgpControlPlane.enabled: true`. Si vous activez BGP pour un déploiement Cilium existant, vous devez redémarrer l’opérateur Cilium pour appliquer la configuration BGP si BGP n’était pas activé auparavant. Vous pouvez définir `operator.rollOutPods` sur `true` dans vos valeurs Helm pour redémarrer l’opérateur Cilium dans le cadre du processus d’installation/mise à niveau 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. Vérifiez que l’opérateur Cilium et les agents ont été redémarrés et fonctionnent correctement.

   ```
   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. Créez un fichier nommé `cilium-bgp-cluster.yaml` avec une définition `CiliumBGPClusterConfig`. Vous devrez peut-être obtenir les informations suivantes auprès de votre administrateur réseau.
   + Configurez `localASN` avec l’ASN pour les nœuds exécutant Cilium.
   + Configurez `peerASN` avec l’ASN pour votre routeur local.
   + Configurez le `peerAddress` du routeur local avec lequel chaque nœud exécutant Cilium sera appairé.

     ```
     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. Appliquer la configuration du cluster Cilium BGP à votre cluster.

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

1. Créez un fichier nommé `cilium-bgp-peer.yaml` d’après la ressource `CiliumBGPPeerConfig` qui définit une configuration de pair BGP. Plusieurs pairs peuvent partager la même configuration et fournir une référence à la ressource `CiliumBGPPeerConfig` commune. Consultez la [configuration BGP Peer](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-v2/#bgp-peer-configuration) dans la documentation Cilium pour obtenir la liste complète des options de configuration.

   Les valeurs des paramètres Cilium peer suivants doivent correspondre à celles du routeur local avec lequel vous établissez une connexion peer-to-peer.
   + Configurez `holdTimeSeconds`, qui détermine la durée pendant laquelle un pair BGP attend un message de maintien ou de mise à jour avant de déclarer la session comme interrompue. La durée par défaut est de 90 secondes.
   + Configurez `keepAliveTimeSeconds`, ce qui détermine si un pair BGP est toujours accessible et si la session BGP est active. Le durée par défaut est 30 secondes.
   + Configurez `restartTimeSeconds`, le délai pendant lequel le plan de contrôle BGP de Cilium doit rétablir la session BGP après un redémarrage. La durée par défaut est de 120 secondes.

     ```
     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. Appliquez la configuration de pair Cilium BGP à votre cluster.

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

1. Créez un fichier nommé `cilium-bgp-advertisement-pods.yaml` avec une ressource `CiliumBGPAdvertisement` pour annoncer les CIDR du pod à votre réseau sur site.
   + Cette ressource `CiliumBGPAdvertisement` sert à définir les types de publicités et les attributs qui leur sont associés. L’exemple ci-dessous configure Cilium pour qu’il n’annonce que les CIDR des pods. Consultez les exemples dans [Type de service LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) et [Équilibrage de charge dans le cluster Cilium](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-cilium) pour plus d’informations sur la configuration de Cilium afin d’annoncer les adresses de service.
   + Chaque nœud hybride exécutant l’agent Cilium est apparié avec le routeur en amont compatible BGP. Chaque nœud annonce la plage CIDR du pod dont il est propriétaire lorsque le `advertisementType` de Cilium est configuré sur `PodCIDR` comme dans l’exemple ci-dessous. Pour plus d’informations, consultez la [configuration des annonces BGP](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane-v2/#bgp-advertisements) dans la documentation Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-pods
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "PodCIDR"
     ```

1. Appliquez la configuration Cilium BGP Advertisement à votre cluster.

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

1. Vous pouvez vérifier que le peering BGP fonctionne avec l’interface [CLI Cilium](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) à l’aide de la commande `cilium bgp peers`. Vous devriez voir les valeurs correctes dans la sortie pour votre environnement et l’état de session cen tant que `established`. Pour plus d’informations sur le dépannage, consultez le [guide de dépannage et d’utilisation](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane/#troubleshooting-and-operation-guide) dans la documentation Cilium.

   Dans les exemples ci-dessous, cinq nœuds hybrides exécutent l’agent Cilium et chaque nœud annonce la plage CIDR Pod qu’il possède.

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