4.8. MetalLB와 FRR-K8s 통합 구성
FRRouting(FRR)은 Linux 및 UNIX 플랫폼을 위한 무료 오픈 소스 인터넷 라우팅 프로토콜 모음입니다. FRR-K8s
는 Kubernetes 호환 방식으로 FRR
API의 하위 집합을 공개하는 Kubernetes 기반 DaemonSet입니다. 클러스터 관리자는 FRRConfiguration
사용자 정의 리소스(CR)를 사용하여 MetalLB에서 제공하지 않는 일부 FRR 서비스(예: 수신 경로)에 액세스할 수 있습니다. MetalLB는
적용된 MetalLB 구성에 해당하는 FRR-K8s
구성을 생성합니다.
VRF(가상 경로 전달)를 구성할 때 사용자는 VRF를 1000보다 작은 테이블 ID로 변경해야 합니다. 1000보다 큰 값은 OpenShift Container Platform에 예약되어 있기 때문입니다.
4.8.1. FRR 구성 링크 복사링크가 클립보드에 복사되었습니다!
MetalLB
에서 FRR
서비스를 사용하려면 여러 개의 FRRConfiguration
CR을 생성할 수 있습니다. MetalLB는
FRRConfiguration
객체를 생성하고, FRR-K8s는
이를 모든 사용자가 생성한 다른 모든 구성과 병합합니다.
예를 들어, FRR-K8을
구성하여 주어진 이웃이 광고한 모든 접두사를 수신할 수 있습니다. 다음 예제에서는 호스트가 172.18.0.5
인 BGPPeer
에서 광고된 모든 접두사를 수신하도록 FRR-K8s를
구성합니다.
예제 FRRConfiguration CR
적용된 구성에 관계 없이 항상 특정 접두사 집합을 차단하도록 FRR-K8을 구성할 수도 있습니다. 이는 클러스터 오작동을 일으킬 수 있는 Pod 또는 ClusterIP
CIDR에 대한 경로를 피하는 데 유용할 수 있습니다. 다음 예제에서는 192.168.1.0/24
접두사 세트를 차단합니다.
MetalLB CR 예시
FRR-K8을
설정하여 클러스터 네트워크
CIDR 및 서비스 네트워크
CIDR을 차단할 수 있습니다. 다음 명령을 실행하면 이러한 CIDR 주소 사양에 대한 값을 볼 수 있습니다.
oc describe network.config/cluster
$ oc describe network.config/cluster
4.8.2. FRRConfiguration CRD 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에서는 FRRConfiguration
사용자 정의 리소스(CR)를 사용하는 참조 예를 제공합니다.
4.8.2.1. 라우터 필드 링크 복사링크가 클립보드에 복사되었습니다!
라우터
필드를 사용하여 각 VRF(가상 라우팅 및 포워딩) 리소스에 대해 하나씩 여러 라우터를 구성할 수 있습니다. 각 라우터에 대해 ASN(자율 시스템 번호)을 정의해야 합니다.
다음 예와 같이 연결할 BGP(Border Gateway Protocol) 이웃 목록을 정의할 수도 있습니다.
예제 FRRConfiguration CR
4.8.2.2. toAdvertise 필드 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 FRR-K8s는
라우터 구성의 일부로 구성된 접두사를 광고하지 않습니다. 이를 광고하려면 toAdvertise
필드를 사용합니다.
다음 예와 같이 접두사의 하위 집합을 광고할 수 있습니다.
예제 FRRConfiguration CR
- 1
- 접두사의 하위 집합을 광고합니다.
다음 예에서는 모든 접두사를 광고하는 방법을 보여줍니다.
예제 FRRConfiguration CR
- 1
- 모든 접두사를 광고합니다.
4.8.2.3. toReceive 필드 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 FRR-K8s는
이웃이 광고한 접두사를 처리하지 않습니다. toReceive
필드를 사용하여 이러한 주소를 처리할 수 있습니다.
이 예와 같이 접두사의 하위 집합을 구성할 수 있습니다.
예제 FRRConfiguration CR
다음 예에서는 FRR이 발표된 모든 접두사를 처리하도록 구성합니다.
예제 FRRConfiguration CR
4.8.2.4. bgp 필드 링크 복사링크가 클립보드에 복사되었습니다!
bgp
필드를 사용하여 다양한 BFD
프로필을 정의하고 이를 이웃과 연결할 수 있습니다. 다음 예에서 BFD는
BGP
세션을 백업하고 FRR은
링크 오류를 감지할 수 있습니다.
예제 FRRConfiguration CR
4.8.2.5. nodeSelector 필드 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 FRR-K8s는
데몬이 실행 중인 모든 노드에 구성을 적용합니다. nodeSelector
필드를 사용하여 구성을 적용할 노드를 지정할 수 있습니다. 예를 들면 다음과 같습니다.
예제 FRRConfiguration CR
4.8.2.6. 인터페이스 필드 링크 복사링크가 클립보드에 복사되었습니다!
spec.bgp.routers.neighbors.interface
필드는 기술 미리보기 기능에만 해당됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
다음 예제 구성을 사용하여 인터페이스
필드를 사용하여 번호가 지정되지 않은 BGP 피어링을 구성할 수 있습니다.
예제 FRRConfiguration
CR
- 1
- 번호가 지정되지 않은 BGP 피어링을 활성화합니다.
인터페이스
필드를 사용하려면 두 BGP 피어 간에 지점 간, 계층 2 연결을 설정해야 합니다. IPv4, IPv6 또는 듀얼 스택에서 번호가 지정되지 않은 BGP 피어링을 사용할 수 있지만 IPv6 RA(라우터 광고)를 활성화해야 합니다. 각 인터페이스는 하나의 BGP 연결로 제한됩니다.
이 필드를 사용하면 spec.bgp.routers.neighbors.address
필드에 값을 지정할 수 없습니다.
다음 표에서는 FRRConfiguration
사용자 정의 리소스에 대한 필드에 대해 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
|
| FRR이 구성할 라우터를 지정합니다(VRF당 하나). |
|
| 세션의 로컬 종료에 사용할 자율 시스템 번호(ASN)입니다. |
|
|
|
|
| 이 라우터에서 세션을 설정하는 데 사용되는 호스트 vrf를 지정합니다. |
|
| BGP 세션을 설정할 이웃을 지정합니다. |
|
|
세션의 원격 끝에 사용할 ASN을 지정합니다. 이 필드를 사용하면 |
|
|
명시적으로 설정하지 않고 세션의 원격 끝에 사용할 ASN을 감지합니다. 동일한 ASN을 가진 이웃에 대해서는 |
|
|
세션을 설정할 IP 주소를 지정합니다. 이 필드를 사용하면 |
|
|
세션을 설정할 때 사용할 인터페이스 이름을 지정합니다. 이 필드를 사용하여 번호가 지정되지 않은 BGP 피어링을 구성합니다. 두 BGP 피어 사이에는 지점 간, 계층 2 연결이 있어야 합니다. IPv4, IPv6 또는 듀얼 스택에서 번호가 지정되지 않은 BGP 피어링을 사용할 수 있지만 IPv6 RA(라우터 광고)를 활성화해야 합니다. 각 인터페이스는 하나의 BGP 연결로 제한됩니다. |
|
| 세션을 설정할 때 다이얼할 포트를 지정합니다. 기본값은 179입니다. |
|
|
BGP 세션을 설정하는 데 사용할 비밀번호를 지정합니다. |
|
|
이웃에 대한 인증 비밀번호의 이름을 지정합니다. 비밀번호는 "kubernetes.io/basic-auth" 유형이어야 하며 FRR-K8s 데몬과 동일한 네임스페이스에 있어야 합니다. "password" 키는 비밀번호를 비밀에 저장합니다. |
|
| RFC4271에 따라 요청된 BGP 보류 시간을 지정합니다. 기본값은 180입니다. |
|
|
RFC4271에 따라 요청된 BGP keepalive 시간을 지정합니다. 기본값은 |
|
| BGP가 이웃과의 연결을 시도하는 사이에 기다리는 시간을 지정합니다. |
|
| BGPPeer가 멀티홉 떨어져 있는지 여부를 나타냅니다. |
|
| BGP 세션과 연관된 BFD 세션에 사용할 BFD 프로필의 이름을 지정합니다. 설정하지 않으면 BFD 세션이 설정되지 않습니다. |
|
| 이웃에게 광고할 접두사 목록과 연관된 속성을 나타냅니다. |
|
| 이웃에게 광고할 접두사 목록을 지정합니다. 이 목록은 라우터에서 정의한 접두사와 일치해야 합니다. |
|
|
접두사를 처리할 때 사용할 모드를 지정합니다. 접두사 목록에 있는 접두사만 허용하도록 |
|
| 광고된 로컬 환경 설정과 관련된 접두사를 지정합니다. 광고가 허용되는 접두사에서 로컬 기본 설정과 연관된 접두사를 지정해야 합니다. |
|
| 로컬 기본 설정과 관련된 접두사를 지정합니다. |
|
| 접두사와 관련된 로컬 기본 설정을 지정합니다. |
|
| 광고된 BGP 커뮤니티와 연관된 접두사를 지정합니다. 광고하려는 접두사 목록에 로컬 기본 설정과 연관된 접두사를 포함해야 합니다. |
|
| 커뮤니티와 관련된 접두사를 지정합니다. |
|
| 접두사와 연관된 커뮤니티를 지정합니다. |
|
| 이웃으로부터 수신할 접두사를 지정합니다. |
|
| 이웃에게서 받고 싶은 정보를 지정합니다. |
|
| 이웃에서 허용되는 접두사를 지정합니다. |
|
|
접두사를 처리할 때 사용할 모드를 지정합니다. |
|
| MP BGP를 비활성화하여 IPv4 및 IPv6 경로 교환을 별도의 BGP 세션으로 분리하지 못하도록 합니다. |
|
| 이 라우터 인스턴스에서 광고할 모든 접두사를 지정합니다. |
|
| 이웃을 구성할 때 사용할 BFD 프로필 목록을 지정합니다. |
|
| 구성의 다른 부분에서 참조할 BFD 프로필의 이름입니다. |
|
|
이 시스템이 제어 패킷을 수신할 수 있는 최소 간격을 밀리초 단위로 지정합니다. 기본값은 |
|
|
지터를 제외한, 이 시스템이 BFD 제어 패킷을 보내는 데 사용하려는 최소 전송 간격을 밀리초 단위로 지정합니다. 기본값은 |
|
| 패킷 손실을 판별하기 위해 감지 배수를 구성합니다. 연결 손실 감지 타이머를 결정하려면 원격 전송 간격에 이 값을 곱합니다. |
|
|
이 시스템이 처리할 수 있는 최소 에코 수신 전송 간격을 밀리초 단위로 구성합니다. 기본값은 |
|
| 에코 전송 모드를 활성화하거나 비활성화합니다. 이 모드는 기본적으로 비활성화되어 있으며 멀티홉 설정에서는 지원되지 않습니다. |
|
| 세션을 수동적으로 표시하세요. 수동 세션은 연결을 시작하려고 시도하지 않고 피어로부터 제어 패킷을 기다린 후 응답을 시작합니다. |
|
| 멀티홉 세션에만 해당됩니다. 수신 BFD 제어 패킷에 대한 최소 예상 TTL을 구성합니다. |
|
| 이 구성을 적용하려는 노드를 제한합니다. 지정된 경우, 지정된 선택기와 일치하는 레이블을 가진 노드만 구성을 적용하려고 시도합니다. 지정하지 않으면 모든 노드가 이 구성을 적용하려고 시도합니다. |
|
| FRRConfiguration의 관찰된 상태를 정의합니다. |
4.8.3. FRR-K8s가 여러 구성을 병합하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
여러 사용자가 동일한 노드를 선택하는 구성을 추가하는 경우 FRR-K8s는
구성을 병합합니다. 각 구성은 다른 구성을 확장할 수만 있습니다. 즉, 라우터에 새로운 이웃을 추가하거나 이웃에게 추가 접두사를 광고하는 것은 가능하지만, 다른 구성에 의해 추가된 구성 요소를 제거하는 것은 불가능합니다.
4.8.3.1. 구성 충돌 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같은 특정 구성으로 인해 충돌이 발생하여 오류가 발생할 수 있습니다.
- 동일한 라우터(동일한 VRF 내)에 대해 다른 ASN
- 동일한 이웃(동일한 IP/포트)에 대해 다른 ASN
- 이름은 같지만 값이 다른 여러 BFD 프로필
데몬이 노드에 대해 유효하지 않은 구성을 찾으면 해당 구성을 유효하지 않은 것으로 보고하고 이전의 유효한 FRR
구성으로 되돌립니다.
4.8.3.2. 병합 링크 복사링크가 클립보드에 복사되었습니다!
병합할 때 다음 작업을 수행할 수 있습니다.
- 이웃에게 광고하려는 IP 세트를 확장합니다.
- IP 집합을 사용하여 추가 이웃을 추가합니다.
- 커뮤니티를 연결할 IP 세트를 확장합니다.
- 이웃에 대한 수신 경로를 허용합니다.
각 구성은 자체적으로 포함되어야 합니다. 예를 들어, 이는 다른 구성에서 온 접두사를 활용하여 라우터 섹션에 정의되지 않은 접두사를 허용하는 것이 불가능하다는 것을 의미합니다.
적용할 구성이 호환되는 경우 병합은 다음과 같이 작동합니다.
-
FRR-K8s는
모든 라우터를 결합했습니다. -
FRR-K8s는
각 라우터의 모든 접두사와 이웃을 병합합니다. -
FRR-K8s는
각 이웃에 대한 모든 필터를 병합합니다.
제한이 덜한 필터는 엄격한 필터보다 우선합니다. 예를 들어, 일부 접두사를 허용하는 필터는 아무것도 허용하지 않는 필터보다 우선하고, 모든 접두사를 허용하는 필터는 일부만 허용하는 필터보다 우선합니다.