Configurer Cilium BGP pour les nœuds hybrides - Amazon EKS

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

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

Configurer Cilium BGP

Prérequis

Procédure

  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
  2. 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
  3. 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"
  4. Appliquer la configuration du cluster Cilium BGP à votre cluster.

    kubectl apply -f cilium-bgp-cluster.yaml
  5. 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 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"
  6. Appliquez la configuration de pair Cilium BGP à votre cluster.

    kubectl apply -f cilium-bgp-peer.yaml
  7. 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 et Équilibrage de charge dans le cluster 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 dans la documentation Cilium.

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisement-pods labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR"
  8. Appliquez la configuration Cilium BGP Advertisement à votre cluster.

    kubectl apply -f cilium-bgp-advertisement-pods.yaml
  9. Vous pouvez vérifier que le peering BGP fonctionne avec l’interface CLI Cilium à 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 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}]