4.3. RHOSO에서 BGP 네트워크용 Cryostat 준비
RHOSO(Red Hat OpenStack Services on OpenShift) 서비스는 RHOCP(Red Hat OpenShift Container Platform) 워크로드로 실행됩니다. NMState Operator를 사용하여 작업자 노드를 필수 격리된 네트워크에 연결합니다. MetalLB Operator를 사용하여 격리된 네트워크에 내부 서비스 끝점을 노출합니다. 기본적으로 공용 서비스 끝점은 Cryostat 경로로 노출됩니다.
다음 절차의 예제에서는 IPv4 주소를 사용합니다. IPv4 주소 대신 IPv6 주소를 사용할 수 있습니다. Dual stack IPv4/6을 사용할 수 없습니다. IPv6 주소를 구성하는 방법에 대한 자세한 내용은 Cryostat 네트워킹 가이드의 다음 리소스를 참조하십시오.
4.3.1. Cryostat 노드의 BGP 인터페이스에서 rcp_filter 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Container Platform (RHOCP) 작업자 노드가 수신하는 BGP 알림을 기반으로 트래픽을 전달하려면 RHOSO 서비스를 실행하는 Cryostat 작업자 노드의 BGP 인터페이스에서 역방향 경로 필터를 비활성화해야 합니다.
프로세스
다음과 유사한 콘텐츠를 사용하여
tuned.yaml이라는 매니페스트 파일을 생성합니다.apiVersion: tuned.openshift.io/v1 kind: Tuned metadata: name: default namespace: openshift-cluster-node-tuning-operator spec: profile: - data: | [main] summary=Optimize systems running OpenShift (provider specific parent profile) include=-provider-${f:exec:cat:/var/lib/ocp-tuned/provider},openshift [sysctl] net.ipv4.conf.enp8s0.rp_filter=0 net.ipv4.conf.enp9s0.rp_filter=0 name: openshift recommend: - match: - label: kubernetes.io/hostname value: worker-0 - label: kubernetes.io/hostname value: worker-1 - label: kubernetes.io/hostname value: worker-2 - label: node-role.kubernetes.io/master operand: tunedConfig: reapply_sysctl: false priority: 15 profile: openshift-no-reapply-sysctl status: {}파일을 저장하고
Tuned리소스를 생성합니다.$ oc create -f tuned.yaml
4.3.2. BGP를 위한 격리된 네트워크 인터페이스를 사용하여 Cryostat 준비 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy (nncp) CR(사용자 정의 리소스)을 생성하여 Red Hat OpenShift Container Platform(RHOCP) 클러스터의 각 작업자 노드에서 각 격리된 네트워크의 인터페이스를 구성합니다.
프로세스
-
워크스테이션에
NodeNetworkConfigurationPolicy(nncp) CR 파일을 생성합니다(예:openstack-nncp-bgp.yaml). Cryostat 클러스터에서 작업자 노드의 이름을 검색합니다.
$ oc get nodes -l node-role.kubernetes.io/worker -o jsonpath="{.items[*].metadata.name}"네트워크 구성을 검색합니다.
$ oc get nns/<worker_node> -o yaml | more-
&
lt;worker_node>를 2단계에서 검색된 작업자 노드의 이름으로 바꿉니다(예:worker-1). 각 작업자 노드에 대해 이 단계를 반복합니다.
-
&
nncpCR 파일에서 Cryostat 클러스터의 각 작업자 노드에 있는 각 격리된 네트워크의 인터페이스를 구성합니다. 네트워크 격리로 구성해야 하는 기본 물리적 데이터 센터 네트워크에 대한 자세한 내용은 BGP의 OpenShift 네트워크의 Default Red Hat OpenStack Services를 참조하십시오.다음 예에서
nncpCR은 OpenShift(RHOSO) 네트워크에서 Red Hat OpenStack Services를 매핑하는 데 사용하는 연결되지 않은 여러 브릿지를 구성합니다. BGP 인터페이스를 사용하여 네트워크 패브릭과 피어링하고 연결을 설정합니다. 루프백 인터페이스는 BGP 네트워크 소스 주소인 9 Cryostat.0.x로 구성됩니다. NIC를ctlplane네트워크에 선택적으로 전용으로 지정할 수 있습니다.apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: labels: osp/nncm-config-type: standard name: worker-0 namespace: openstack spec: desiredState: dns-resolver: config: search: [] server: - 192.168.122.1 interfaces: - description: internalapi bridge mtu: 1500 name: internalapi state: up type: linux-bridge - description: storage bridge mtu: 1500 name: storage state: up type: linux-bridge - description: tenant bridge mtu: 1500 name: tenant state: up type: linux-bridge - description: ctlplane bridge mtu: 1500 name: ospbr state: up type: linux-bridge - description: BGP interface 1 ipv4: address: - ip: 100.64.0.14 prefix-length: "30" dhcp: false enabled: true ipv6: enabled: false mtu: 1500 name: enp8s0 state: up type: ethernet - description: BGP interface 2 ipv4: address: - ip: 100.65.0.14 prefix-length: "30" dhcp: false enabled: true ipv6: enabled: false mtu: 1500 name: enp9s0 state: up type: ethernet - description: loopback interface ipv4: address: - ip: 99.99.0.3 prefix-length: "32" dhcp: false enabled: true mtu: 65536 name: lo state: up route-rules: config: [] routes: config: - destination: 99.99.0.0/16 next-hop-address: 100.64.0.13 next-hop-interface: enp8s0 - destination: 99.99.0.0/16 next-hop-address: 100.65.0.13 next-hop-interface: enp9s0 nodeSelector: kubernetes.io/hostname: worker-0 node-role.kubernetes.io/worker: ""클러스터에
nncpCR을 생성합니다.$ oc apply -f openstack-nncp-bgp.yamlnncpCR이 생성되었는지 확인합니다.$ oc get nncp -w NAME STATUS REASON osp-enp6s0-worker-1 Progressing ConfigurationProgressing osp-enp6s0-worker-1 Progressing ConfigurationProgressing osp-enp6s0-worker-1 Available SuccessfullyConfigured
4.3.3. BGP의 격리된 네트워크에 서비스 Pod 연결 링크 복사링크가 클립보드에 복사되었습니다!
서비스 pod를 네트워크에 연결하기 위해 분리된 각 네트워크에 대해 NetworkAttachmentDefinition (net-attach-def) 사용자 정의 리소스(CR)를 생성합니다.
프로세스
-
워크스테이션에
NetworkAttachmentDefinition(net-attach-def) CR 파일을 생성합니다(예:openstack-net-attach-def.yaml). NetworkAttachmentDefinitionCR 파일에서 서비스 배포 Pod를 네트워크에 연결하도록 각 격리된 네트워크에 대한NetworkAttachmentDefinition리소스를 구성합니다. 다음 예제에서는 특정 게이트웨이 구성 및 추가 옵션과 함께 유형 브리지 인터페이스를 사용하는NetworkAttachmentDefinition리소스를 생성합니다.apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: labels: osp/net: internalapi osp/net-attach-def-type: standard name: internalapi namespace: openstack1 spec: config: | { "cniVersion": "0.3.1", "name": "internalapi",2 "type": "bridge", "isDefaultGateway": true, "isGateway": true, "forceAddress": false, "ipMasq": true, "hairpinMode": true, "bridge": "internalapi", "ipam": {3 "type": "whereabouts", "range": "172.17.0.0/24", "range_start": "172.17.0.30",4 "range_end": "172.17.0.70", "gateway": "172.17.0.1" } }클러스터에
NetworkAttachmentDefinitionCR을 생성합니다.$ oc apply -f openstack-net-attach-def.yamlNetworkAttachmentDefinitionCR이 생성되었는지 확인합니다.$ oc get net-attach-def -n openstack
4.3.4. BGP용 RHOSO 네트워크 VIPS 준비 링크 복사링크가 클립보드에 복사되었습니다!
각 노드의 eth2 및 eth3 인터페이스에 연결된 리프 스위치를 정의하려면 BGPPeer CR(사용자 정의 리소스) 쌍을 생성해야 합니다. 예를 들어 worker-0 에는 두 개의 BGPPeer CR이 있으며 하나는 leaf-0 및 leaf-1을 위한 것입니다. BGP 피어에 대한 자세한 내용은 BGP 피어 구성을 참조하십시오.
또한 제공할 네트워크 범위를 정의하기 위해 IPAddressPool CR을 생성해야 하며, BGPPeer CR의 발표 방법을 정의하는 BGPAdvertisement CR을 생성해야 하며 IPAddressPool CR을 알림을 수신하는 BGPPeer CR에 연결합니다.
프로세스
-
워크스테이션에
BGPPeerCR 파일을 생성합니다(예:bgppeers.yaml). 각 노드가 피어링할
BGPPeerCR 쌍을 구성합니다. 다음 예제는worker-0노드에 대해 두 개의BGPPeerCR을 구성합니다. 하나는 leaf-0 및 leaf-1용입니다.apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: name: bgp-peer-node-0-0 namespace: metallb-system spec: myASN: 64999 nodeSelectors: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-0 password: r3dh4t1234 peerASN: 64999 peerAddress: 100.64.0.13 --- apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: name: bgp-peer-node-0-1 namespace: metallb-system spec: myASN: 64999 nodeSelectors: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-0 password: r3dh4t1234 peerASN: 64999 peerAddress: 100.65.0.13BGPPeer CR을 생성합니다.
$ oc create -f bgppeers.yaml-
워크스테이션에
IPAddressPoolCR 파일을 만듭니다(예:ipaddresspools-bgp.yaml). IPAddressPoolCR 파일에서 MetalLB에 권한이 있는 IP 주소 범위를 지정하도록 각 격리된 네트워크에서IPAddressPool리소스를 구성합니다.apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: ctlplane namespace: metallb-system spec: addresses: - 192.168.125.80-192.168.125.901 --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: internalapi namespace: metallb-system spec: addresses: - 172.17.0.80-172.17.0.90- 1
IPAddressPool범위는whereaboutsIPAM 범위 및 NetConfigallocationRange와 겹치지 않아야 합니다.
다른
IPAddressPool리소스 매개변수를 구성하는 방법에 대한 자세한 내용은 Cryostat 네트워킹 가이드의 MetalLB 주소 풀 구성 을 참조하십시오.클러스터에
IPAddressPoolCR을 생성합니다.$ oc apply -f ipaddresspools-bgp.yamlIPAddressPoolCR이 생성되었는지 확인합니다.$ oc describe -n metallb-system IPAddressPool워크스테이션에
BGPAdvertisementCR 파일을 만듭니다(예:bgpadvert.yaml).apiVersion: metallb.io/v1beta1 kind: BGPAdvertisement metadata: name: bgpadvertisement namespace: metallb-system spec: ipAddressPools: - ctlplane - internalapi - storage - tenant peers:1 - bgp-peer-node-0-0 - bgp-peer-node-0-1 - bgp-peer-node-1-0 - bgp-peer-node-1-1 - bgp-peer-node-2-0 - bgp-peer-node-2-1 ...- 1
- 각 Cryostat 노드가 통신해야 하는 피어 IP 주소에 대해 정의한 모든
BGPPeerCR을 나열합니다.
클러스터에
BGPAdvertisementCR을 생성합니다.$ oc apply -f bgpadvert.yaml클러스터에 네트워크 백엔드로 OVNKubernetes가 있는 경우 MetalLB가 보조 네트워크 인터페이스에서 작동할 수 있도록 글로벌 전달을 활성화해야 합니다.
클러스터에서 사용하는 네트워크 백엔드를 확인합니다.
$ oc get network.operator cluster --output=jsonpath='{.spec.defaultNetwork.type}'백엔드가 OVNKubernetes인 경우 다음 명령을 실행하여 글로벌 IP 전달을 활성화합니다.
$ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge