BGPAdvertisement¶
BGPAdvertisementは、AddressPoolが保持するアドレス範囲をBGPで外部へ経路広報するためのリソースです。 ピアリング先との接続情報はBGPPeerで別途定義し、BGPAdvertisementは「どのAddressPoolを広報するか」のみを宣言します。
spec.addressPoolsはBGPで広報するAddressPoolの名前の集合です。 重複は許されず、少なくとも1つの要素が必要です。 作成後も自由に要素を追加・削除できます。
spec.addressPoolsに含まれる各AddressPoolは、spec.advertiseMode=bgpである必要があります。 spec.advertiseMode=arpのAddressPoolは参照できません。
広報範囲の絞り込み¶
spec.nodeNameは省略可能で、指定した場合はそのNode上のbgp-speakerだけがこのBGPAdvertisementを広報します。 未指定の場合は、すべてのNodeのbgp-speakerが広報します。 特定のNodeをingress入口にしたい場合に利用します。
spec.prefixは省略可能で、指定した場合はそのCIDR1件のみを広報します。 指定するCIDRは、spec.addressPoolsで参照しているAddressPoolが保持するCIDRのいずれかに含まれている必要があります。 AddressPoolが持つCIDR全体ではなく、そのうちの一部だけを広報したい場合に利用します。
広報状況の確認¶
BGPAdvertisementを作成すると、各Node上のbgp-speakerが参照先AddressPoolのCIDRをピアに広報します。bgp-speakerが広報しようとしているCIDR集合は、BGPNodeStateのstatus.advertisements[].prefixesで確認できます。これはbgp-speakerの意図値(intent)で、reconcile成功時にAddressPool定義から計算されたものです。
意図と実送信は必ずしも一致しません。BGPNodeStateからは「Juneauが広報しようとしているCIDR」までしか判定できないため、実際にピアが受信しているかを確認したい場合は上流ルータ側で受信ルートを確認してください。
BGPNodeState.status.conditions.Ready=Trueかつstatus.advertisementsに期待CIDRが乗っていれば、通常は広報も成功しています。乗っていない場合はstatus.errors[]にspec不整合(参照先AddressPool欠落、advertiseMode不一致など)が記録されていないかも併せて確認してください。