BGP를 지원하는 플랫 모드 네트워크 모델 구현

이 문서에서는 경계 게이트웨이 프로토콜(BGP)을 지원하여 플랫 모드 네트워크 모델을 구현하는 방법을 설명합니다. BGP를 지원하는 네트워크 모델을 구현하면 BGP는 서로 다른 L2 도메인의 포드가 서로 통신할 수 있도록 동적으로 보장합니다.

플랫 모드 네트워크 모델에 대한 자세한 내용은 플랫 모드 및 아일랜드 모드 네트워크 모델 비교를 참조하세요.

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이고 네임스페이스가 클러스터 네임스페이스인지 확인합니다.
  • FlatIPModeBGPPeer 리소스를 cluster.yaml 파일에 추가합니다. FlatIPMode 리소스 이름은 default이어야 하며 모든 리소스는 클러스터 네임스페이스에 있어야 합니다.

미리보기의 경우 IPv4 BGP 피어와 세션만 지원됩니다. 하지만 환경에서 멀티프로토콜 BGP(MP-BGP)를 지원하면 IPv4 및 IPv6 경로를 통해 이러한 IPv4 세션을 공지할 수 있습니다. 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