BGP をサポートするフラットモード ネットワーク モデルを実装する

このドキュメントでは、Border Gateway Protocol(BGP)をサポートするフラットモードのネットワーク モデルを実装する方法について説明します。BGP をサポートするネットワーク モデルを実装すると、異なる L2 ドメインの Pod がBGP によって自動的に相互に通信できるようになります。

フラットモード ネットワーク モデルの詳細については、フラットモードとアイランド モードのネットワーク モデルをご覧ください。

BGP を使用するフラットモード ネットワークを実装する方法

BGP をサポートするフラットモード ネットワーク モデルでクラスタを実装するには、クラスタの cluster.yaml ファイルに次の変更を行います。

  • クラスタ リソースで spec.clusterNetwork.advancedNetworking フィールドを true に設定します。
  • クラスタ リソースで spec.clusterNetwork.flatIPv4 フィールドを true に設定します。
  • spec.clusterNetwork.flatIPv4true に設定されている場合、フィールド 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 ルートをアドバタイズできます。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