このドキュメントでは、Border Gateway Protocol(BGP)をサポートするフラットモードのネットワーク モデルを実装する方法について説明します。BGP をサポートするネットワーク モデルを実装すると、異なる L2 ドメインの Pod がBGP によって自動的に相互に通信できるようになります。
フラットモード ネットワーク モデルの詳細については、フラットモードとアイランド モードのネットワーク モデルをご覧ください。
BGP を使用するフラットモード ネットワークを実装する方法
BGP をサポートするフラットモード ネットワーク モデルでクラスタを実装するには、クラスタの cluster.yaml
ファイルに次の変更を行います。
- クラスタ リソースで
spec.clusterNetwork.advancedNetworking
フィールドをtrue
に設定します。 - クラスタ リソースで
spec.clusterNetwork.flatIPv4
フィールドをtrue
に設定します。 spec.clusterNetwork.flatIPv4
がtrue
に設定されている場合、フィールドspec.clusterNetwork.pods.cidrBlocks
は無視されるので省略できます。ただし、yaml ファイルでClusterCIDRConfigs
セクションを定義する必要があります(ノードごと、ノードプールごと、クラスタごと)。詳細については、以下のcluster.yaml
ファイルの例をご覧ください。NetworkGatewayGroup
リソースをcluster.yaml
ファイルに追加し、BGP ピアリングに使用するフローティング IP を付加します。名前がdefault
で、名前空間がクラスタの名前空間であることを確認します。FlatIPMode
リソースとBGPPeer
リソースをcluster.yaml
ファイルに追加します。FlatIPMode
リソースの名前はdefault
にする必要があり、すべてのリソースをクラスタの名前空間に含める必要があります。
プレビューでは、IPv4 BGP ピアとセッションのみがサポートされています。ただし、環境がマルチプロトコル BGP(MP-BGP)をサポートしている場合、IPv4 セッションで IPv4 ルートおよび IPv6 ルートをアドバタイズできます。Anthos clusters on bare metal のバージョン 1.11.0 では、IPv6 BGP ピア構成はサポートされていません。
次の cluster.yaml
ファイルからの抜粋は、BGP をサポートするフラットモード ネットワーキングを実装する方法を示しています。この抜粋に表示される IP アドレスは例にすぎず、お客様所有の IP アドレスに置き換える必要があります。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: bm
namespace: cluster-bm
spec:
...
clusterNetwork:
advancedNetworking: true
flatIPv4: true
... (other cluster config omitted)
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
metadata:
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
....
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: FlatIPMode
metadata:
name: default
namespace: cluster-bm
spec:
enableBGPIPv4: true
enableBGPIPv6: false
peerSelector:
flatip-peer: "true"
....
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer1
namespace: cluster-bm
labels:
flatip-peer: "true"
spec:
localASN: 65001
peerASN: 65000
peerIP: 10.0.1.254
sessions: 2
....
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer2
namespace: cluster-bm
labels:
flatip-peer: "true"
spec:
localASN: 65001
peerASN: 65000
peerIP: 10.0.2.254
sessions: 2
....
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig
metadata:
name: cluster-wide-1
namespace: cluster-bm
spec:
ipv4:
cidr: "192.168.0.0/16"
perNodeMaskSize: 24