このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
ハイブリッドノード向けに Cilium BGP を設定する
このトピックでは、Amazon EKS Hybrid Nodes の Cilium ボーダーゲートウェイプロトコル (BGP) を設定する方法について説明します。Cilium の BGP は Cilium BGP コントロールプレーン
Cilium BGP を設定する
前提条件
-
「ハイブリッドノードの CNI を設定する」の手順に従って Cilium がインストールされていること。
手順
-
Cilium で BGP を使用してオンプレミスネットワークでポッドアドレスまたはサービスアドレスをアドバタイズするには、
bgpControlPlane.enabled: true
を使用して Cilium をインストールしている必要があります。既存の Cilium のデプロイで BGP を有効にする場合は、Cilium 演算子を再起動して BGP 設定を適用する必要があります (BGP が以前に有効になっていない場合)。Helm のインストール/アップグレードプロセスの一環として Cilium 演算子を再起動するには、Helm 値のoperator.rollOutPods
をtrue
に設定します。helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \ --namespace kube-system \ --reuse-values \ --set operator.rollOutPods=true \ --set bgpControlPlane.enabled=true
-
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
-
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"
-
-
Cilium BGP クラスター設定をクラスターに適用します。
kubectl apply -f cilium-bgp-cluster.yaml
-
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"
-
-
Cilium BGP ピア設定をクラスターに適用します。
kubectl apply -f cilium-bgp-peer.yaml
-
CiliumBGPAdvertisement
リソースを使用してポッド CIDR をオンプレミスネットワークにアドバタイズするファイルをcilium-bgp-advertisement-pods.yaml
という名前で作成します。-
CiliumBGPAdvertisement
リソースは、関連付けられるアドバタイズタイプと属性を定義するために使用されます。以下の例では、ポッド CIDR のみをアドバタイズするように Cilium を設定しています。サービスアドレスをアドバタイズするように Cilium を設定する方法の詳細については、「サービスタイプ LoadBalancer」と「Cilium クラスター内ロードバランシング」の例を参照してください。 -
Cilium エージェントを実行している各ハイブリッドノードは、アップストリーム BGP 対応ルーターとピアリングします。以下の例のように、Cilium の
advertisementType
がPodCIDR
に設定されていると、各ノードは所有するポッド CIDR 範囲をアドバタイズします。詳細については、Cilium のドキュメントの「BGP Advertisements configuration」を参照してください。 apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisement-pods labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR"
-
-
Cilium BGP アドバタイズ設定をクラスターに適用します。
kubectl apply -f cilium-bgp-advertisement-pods.yaml
-
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-082f73826a163626eNODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h19m12s ipv4/unicast 1 2 mi-09183e8a3d755abf6NODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h18m47s ipv4/unicast 1 2 mi-0d78d815980ed202dNODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h19m12s ipv4/unicast 1 2 mi-0daa253999fe92daaNODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h18m58s ipv4/unicast 1 2cilium 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-082f73826a163626eNODES_ASN
10.86.2.192/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-09183e8a3d755abf6NODES_ASN
10.86.2.64/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0d78d815980ed202dNODES_ASN
10.86.2.128/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0daa253999fe92daaNODES_ASN
10.86.3.0/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}]