ハイブリッドノード向けに Cilium BGP を設定する - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

ハイブリッドノード向けに Cilium BGP を設定する

このトピックでは、Amazon EKS Hybrid Nodes の Cilium ボーダーゲートウェイプロトコル (BGP) を設定する方法について説明します。Cilium の BGP は Cilium BGP コントロールプレーンと呼ばれる機能で、この機能を使用すると、ポッドアドレスとサービスアドレスをオンプレミスネットワークにアドバタイズできます。これ以外にオンプレミスネットワークでポッド CIDR をルーティング可能にする方法については、「ルーティング可能なリモートポッド CIDR」を参照してください。

Cilium BGP を設定する

前提条件

手順

  1. Cilium で BGP を使用してオンプレミスネットワークでポッドアドレスまたはサービスアドレスをアドバタイズするには、bgpControlPlane.enabled: true を使用して Cilium をインストールしている必要があります。既存の Cilium のデプロイで BGP を有効にする場合は、Cilium 演算子を再起動して BGP 設定を適用する必要があります (BGP が以前に有効になっていない場合)。Helm のインストール/アップグレードプロセスの一環として Cilium 演算子を再起動するには、Helm 値の operator.rollOutPodstrue に設定します。

    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. CiliumBGPPeerConfig リソースを使用して BGP ピア設定を定義するファイルを cilium-bgp-peer.yaml という名前で作成します。複数のピアが同じ設定を共有し、共通の CiliumBGPPeerConfig リソースを参照することができます。設定オプションの完全なリストについては、Cilium のドキュメントの「BGP Peer configuration」を参照してください。

    次の Cilium ピア設定の値は、ピアリング先のオンプレミスルーターの値と一致する必要があります。

    • holdTimeSeconds では、BGP ピアがキープアライブメッセージまたは更新メッセージを待機する時間を設定します。この時間を過ぎると、セッションのダウンが宣言されます。デフォルト値は 90 秒です。

    • keepAliveTimeSeconds では、BGP ピアが引き続き到達可能で、BGP セッションがアクティブかどうかを設定します。デフォルト値は 30 秒です。

    • restartTimeSeconds では、Cilium の BGP コントロールプレーンが再起動後に BGP セッションを再確立するまでにかかると見込まれる時間を設定します。デフォルト値は 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 リソースを使用してポッド CIDR をオンプレミスネットワークにアドバタイズするファイルを cilium-bgp-advertisement-pods.yaml という名前で作成します。

    • CiliumBGPAdvertisement リソースは、関連付けられるアドバタイズタイプと属性を定義するために使用されます。以下の例では、ポッド CIDR のみをアドバタイズするように Cilium を設定しています。サービスアドレスをアドバタイズするように Cilium を設定する方法の詳細については、「サービスタイプ LoadBalancer」と「Cilium クラスター内ロードバランシング」の例を参照してください。

    • 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 コマンドを使用して、BGP ピアリングが Cilium CLI で機能していることを確認できます。出力には環境に応じた正しい値が表示され、セッションの状態が established と表示されているはずです。トラブルシューティングの詳細については「Cilium 資料」の「トラブルシューティングおよび操作ガイド」を参照してください。

    以下の例では、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}]