Configuración del BGP de Cilium para nodos híbridos - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Configuración del BGP de Cilium para nodos híbridos

En este tema se describe cómo configurar el protocolo de puerta de enlace fronteriza (BGP) de Cilium para los nodos híbridos de Amazon EKS. La funcionalidad del BGP de Cilium se denomina Cilium BGP Control Plane y se puede utilizar para anunciar las direcciones de los pods y los servicios en la red en las instalaciones. Para ver métodos alternativos para hacer que los CIDR de los pods sean enrutables en la red en las instalaciones, consulte CIDR de pod remoto enrutable.

Configuración del BGP de Cilium

Requisitos previos

Procedimiento

  1. Para usar el BGP con Cilium a fin de anunciar las direcciones de los pods o los servicios en la red en las instalaciones, debe haber instalado Cilium con bgpControlPlane.enabled: true. Si activa BGP para una implementación de Cilium existente, debe reiniciar el operador de Cilium para aplicar la configuración de BGP si BGP no se activó anteriormente. Puede configurar operator.rollOutPods como true en sus valores de Helm para reiniciar el operador de Cilium como parte del proceso de instalación o actualización de 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 que el operador y los agentes de Cilium se hayan reiniciado y estén 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. Cree un archivo llamado cilium-bgp-cluster.yaml con una definición CiliumBGPClusterConfig. Es posible que deba obtener la siguiente información de su administrador de red.

    • Configure localASN con el ASN para los nodos que ejecutan Cilium.

    • Configure peerASN con el ASN de su enrutador en las instalaciones.

    • Configure peerAddress con la IP del enrutador en las instalaciones con la que se emparejará cada nodo que ejecute Cilium.

      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 la configuración de clúster del BGP de Cilium al clúster.

    kubectl apply -f cilium-bgp-cluster.yaml
  5. Cree un archivo denominado cilium-bgp-peer.yaml con el recurso CiliumBGPPeerConfig que define una configuración de emparejamiento del BGP. Varios pares pueden compartir la misma configuración y proporcionar una referencia al recurso CiliumBGPPeerConfig común. Consulte BGP Peer configuration en la documentación de Cilium para obtener una lista completa de las opciones de configuración.

    Los valores de las siguientes configuraciones de emparejamiento de Cilium deben coincidir con los del router en las instalaciones con el que se empareja.

    • Configure holdTimeSeconds para determinar cuánto tiempo espera un emparejamiento del BGP a recibir un mensaje de mantenimiento o actualización antes de declarar la sesión inactiva. El valor predeterminado es de 90 segundos.

    • Configure keepAliveTimeSeconds para determinar si aún se puede acceder a un emparejamiento del BGP y si la sesión del BGP está activa. El valor predeterminado es de 30 segundos.

    • Configure restartTimeSeconds para determinar el momento en que se espera que el plano de control del BGP de Cilium restablezca la sesión del BGP tras un reinicio. El valor predeterminado es de 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 la configuración de emparejamiento del BGP de Cilium al clúster.

    kubectl apply -f cilium-bgp-peer.yaml
  7. Cree un archivo llamado cilium-bgp-advertisement-pods.yaml con un recurso CiliumBGPAdvertisement para anunciar los CIDR de pods en su red en las instalaciones.

    • El recurso CiliumBGPAdvertisement se utiliza para definir varios tipos de anuncios y los atributos asociados a estos. En el siguiente ejemplo, se configura Cilium para que anuncie únicamente los CIDR de pods. Consulte los ejemplos de LoadBalancer del tipo de servicio y Equilibrio de carga en el clúster de Cilium para obtener más información sobre la configuración de Cilium para anunciar las direcciones de los servicios.

    • Cada nodo híbrido que ejecuta el agente de Cilium se empareja con el router ascendente compatible con el BGP. Cada nodo anuncia el rango de CIDR del pod que posee cuando el advertisementType de Cilium está configurado en PodCIDR como en el ejemplo siguiente. Consulte BGP Advertisements configuration en la documentación de Cilium para obtener más información.

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisement-pods labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR"
  8. Aplique la configuración de anuncio de BGP de Cilium al clúster.

    kubectl apply -f cilium-bgp-advertisement-pods.yaml
  9. Puede confirmar que el emparejamiento de BGP funcionó con la CLI de Cilium mediante el comando cilium bgp peers. Debería ver los valores correctos en la salida del entorno y el estado de la sesión como established. Consulte la Guía de solución de problemas y operaciones en la documentación de Cilium para obtener más información sobre la solución de problemas.

    En los ejemplos siguientes, hay cinco nodos híbridos que ejecutan el agente de Cilium y cada nodo anuncia el rango de CIDR de pods que posee.

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