하이브리드 노드에 대한 Cilium BGP 구성 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

하이브리드 노드에 대한 Cilium BGP 구성

이 주제에서는 Amazon EKS Hybrid Nodes에 대한 Cilium Border Gateway Protocol(BGP)을 구성하는 방법을 설명합니다. Cilium의 BGP 기능은 Cilium BGP Control Plane이라고 하며 포드 및 서비스 주소를 온프레미스 네트워크에 알리는 데 사용할 수 있습니다. 온프레미스 네트워크에서 포드 CIDR을 라우팅 가능하도록 하는 다른 방법은 라우팅 가능한 원격 포드 CIDR 섹션을 참조하세요.

Cilium BGP 구성

사전 조건

절차

  1. BGP를 Cilium과 함께 사용하여 온프레미스 네트워크에 포드 또는 서비스 주소를 알리려면 bgpControlPlane.enabled: true로 Cilium을 설치해야 합니다. 기존 Cilium 배포에 대해 BGP를 활성화하는 경우 BGP가 이전에 활성화되지 않은 경우 BGP 구성을 적용하려면 Cilium 연산자를 다시 시작해야 합니다. Helm 값에서 operator.rollOutPodstrue로 설정하여 Helm 설치/업그레이드 프로세스의 일부로 Cilium 연산자를 다시 시작할 수 있습니다.

    helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \ --namespace kube-system \ --reuse-values \ --set operator.rollOutPods=true \ --set bgpControlPlane.enabled=true
  2. Cilium 운영자와 에이전트가 다시 시작되어 실행 중인지 확인합니다.

    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. CiliumBGPClusterConfig 정의를 포함하여 cilium-bgp-cluster.yaml 파일을 생성합니다. 네트워크 관리자로부터 다음 정보를 얻어야 할 수 있습니다.

    • Cilium을 실행하는 노드의 ASN으로 localASN을 구성합니다.

    • 온프레미스 라우터의 ASN으로 peerASN을 구성합니다.

    • Cilium을 실행하는 각 노드가 피어링할 온프레미스 라우터 IP로 peerAddress을 구성합니다.

      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. 클러스터에 Cilium BGP 클러스터 구성을 적용합니다.

    kubectl apply -f cilium-bgp-cluster.yaml
  5. BGP 피어 구성을 정의하는 CiliumBGPPeerConfig 리소스를 포함하여 cilium-bgp-peer.yaml 파일을 생성합니다. 여러 피어가 동일한 구성을 공유하고 공통 CiliumBGPPeerConfig 리소스에 대한 참조를 제공할 수 있습니다. 구성 옵션의 전체 목록은 Cilium 문서의 BGP Peer configuration 페이지를 참조하세요.

    다음 Cilium 피어 설정의 값은 피어링하려는 온프레미스 라우터의 값과 일치해야 합니다.

    • 세션의 중단 상태를 선언하기 전에 BGP 피어가 킵얼라이브 또는 업데이트 메시지를 기다리는 시간을 결정하는 holdTimeSeconds를 구성합니다. 기본값은 90초입니다.

    • BGP 피어가 계속 연결할 수 있고 BGP 세션이 활성 상태인지 여부를 결정하는 keepAliveTimeSeconds를 구성합니다. 기본값은 30초입니다.

    • 재시작 후 Cilium의 BGP Control Plane에서 BGP 세션을 다시 설정할 것으로 예상되는 시간을 결정하는 restartTimeSeconds를 구성합니다. 기본값은 120초입니다.

      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. 클러스터에 Cilium BGP 피어 구성을 적용합니다.

    kubectl apply -f cilium-bgp-peer.yaml
  7. CiliumBGPAdvertisement 리소스를 포함하는 cilium-bgp-advertisement-pods.yaml 파일을 생성하여 포드 CIDR을 온프레미스 네트워크에 알립니다.

    • CiliumBGPAdvertisement 리소스는 광고 유형 및 이와 관련된 속성을 정의하는 데 사용됩니다. 아래 예시에서는 포드 CIDR만 알리도록 Cilium을 구성합니다. 서비스 주소를 알리도록 Cilium을 구성하는 방법에 대한 자세한 내용은 Service 유형 LoadBalancerCilium 클러스터 내 로드 밸런싱의 예시를 참조하세요.

    • Cilium 에이전트를 실행하는 각 하이브리드 노드는 업스트림 BGP 지원 라우터와 피어링됩니다. 각 노드는 아래 예시와 같이 Cilium의 advertisementTypePodCIDR로 설정된 경우 소유한 포드 CIDR 범위를 알립니다. 자세한 내용은 Cilium 문서의 BGP Advertisements configuration을 참조하세요.

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisement-pods labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR"
  8. 클러스터에 Cilium BGP 광고 구성을 적용합니다.

    kubectl apply -f cilium-bgp-advertisement-pods.yaml
  9. cilium bgp peers 명령을 사용하여 Cilium CLI에서 작동하는 BGP 피어링을 확인할 수 있습니다. 환경에 대한 출력에 올바른 값이 표시되고 세션 상태가 established로 설정되어야 합니다. 문제 해결에 대한 자세한 내용은 Cilium 설명서의 Troubleshooting and Operations Guide를 참조하세요.

    아래 예시에서는 Cilium 에이전트를 실행하는 하이브리드 노드가 5개 있으며 각 노드는 소유한 포드 CIDR 범위를 알리고 있습니다.

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