에서 Open Virtual Network(OVN) 사용자 정의 네트워크(UDN)를 구성하기 위한 전제 조건 Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud 에서 Localnet 및 레이어 2 기본 네트워크에 대한 일회성 OVN 클러스터 사용자 정의 네트워크(CUDN) 전제 조건을 구성합니다.

이 튜토리얼에서는 Red Hat® OpenShift® 의 CUDN Localnets 및 IBM Cloud 의 Layer 2 Primaries에 대한 필수 구성 요건을 설정하는 방법을 설명합니다. Kubernetes Service 이 튜토리얼에 설명된 모든 작업은 클러스터당 한 번씩 수행됩니다.

Localnet 개요

Red Hat OpenShift Kubernetes Service Localnet 네트워크의 경우, 고객이 ROVS에서 수행하지 않는 추가 설정이 필요합니다. 이 튜토리얼에서는 필요한 단계를 설명합니다.

Red Hat OpenShift on IBM Cloud 클러스터 준비

IBM Cloud 클러스터의 Red Hat OpenShift 를 사용하려면 NMState Operator가 필요합니다. NMState는 브리지 및 물리적 네트워크에 대해 영구적인 네트워크 구성을 제공합니다. 이 단계에서는 연산자를 설치합니다.

다음 사항을 유의하시기 바랍니다:

  • 매니페스트를 적용한 후 설치가 완료되는 데 5~10분이 소요됩니다.
  • 인터페이스당 하나의 브리지만 생성하십시오.
  • eth0 의 브릿지를 임의로 변경하려고 시도하지 마십시오.

다음 코드 블록을 파일에 복사한 후, oc apply -f step0a.yml 명령어를 실행하여 NMState Operator를 설치하십시오.

---
apiVersion: v1
kind: Namespace
metadata:
  name: openshift-nmstate
spec:
  finalizers:
  - kubernetes
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: openshift-nmstate
  namespace: openshift-nmstate
spec:
  targetNamespaces:
  - openshift-nmstate
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: kubernetes-nmstate-operator
  namespace: openshift-nmstate
spec:
  channel: stable
  installPlanApproval: Automatic
  name: kubernetes-nmstate-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace

NMState 사용자 정의 리소스를 생성하기 전에, 운영자가 NMState 사용자 정의 리소스 정의(CRD)를 등록할 때까지 기다리십시오. CRD가 생성되기 전에 NMState 리소스를 적용하면, no matches for kind "NMState" in version "nmstate.io/v1"``와 같은 오류가 표시됩니다.

CRD가 나타날 때까지 다음 명령을 실행하여 주기적으로 확인한 다음, CRD가 ‘ Established ’ 상태가 될 때까지 기다리십시오.

until oc get crd nmstates.nmstate.io >/dev/null 2>&1; do echo "Waiting for NMState CRD..."; sleep 10; done
oc wait --for=condition=established crd/nmstates.nmstate.io --timeout=300s

모든 NMState CRD가 설치되었는지 확인하십시오.

oc get crd | grep nmstate

출력 예:

nmstates.nmstate.io                                               ...
nodenetworkconfigurationenactments.nmstate.io                     ...
nodenetworkconfigurationpolicies.nmstate.io                       ...
nodenetworkstates.nmstate.io                                      ...

CRD가 준비되면 다음 코드 블록을 파일에 복사한 후, oc apply -f step0b.yml 명령어를 사용하여 적용함으로써 NMState 사용자 정의 리소스를 생성합니다.

---
apiVersion: nmstate.io/v1
kind: NMState
metadata:
  name: nmstate
spec:
  probeConfiguration:
    dns:
      host: root-servers.net

브리지 구성 적용하기

두 번째 PCI-VNI(Peripheral Component Interconnect-Virtual Network Interface) 네트워크 인터페이스 카드(NIC)를 사용하려면 기본 브리지 구성을 적용하십시오(eth1).

다음 코드 블록을 파일에 복사한 후 oc apply -f step1.yml`` 명령어를 사용하여 적용하십시오.

---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: "br-eth1"
spec:
  desiredState:
    interfaces:
    - name: "br-eth1"
      description: A dedicated OVS bridge with a NIC as a port
      type: ovs-bridge
      state: up
      bridge:
        allow-extra-patch-ports: true
        options:
          stp: false
        port:
        - name: "eth1"

다음 단계로 넘어가기 전에 이 구성이 모든 노드에 적용될 때까지 기다리십시오.

% oc get NodeNetworkConfigurationPolicy br-eth1
NAME      STATUS      REASON
br-eth1   Available   SuccessfullyConfigured

브리지 매핑 구성 적용

기본 브리지 매핑 구성을 적용합니다.

다음 코드 블록을 파일에 복사한 후 oc apply -f step2.yml`` 명령어를 사용하여 적용하십시오.

---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: "vpc-vlans"
spec:
  desiredState:
    ovn:
      bridge-mappings:
      - localnet: "vpc-vlans" # <- use your desired network name
        bridge: "br-eth1"
        state: present

VPC에 대한 사용자 지정 보조 접두사 및 서브넷 생성

Localnets는 각 네트워크에 대해 보조 VPC 서브넷을 사용할 수 있습니다. 이 예제에서는 새로운 VPC 접두사에서 생성된 세 개의 새 서브넷을 사용합니다. 원하는 접두사나 네트워크를 대체하거나 VPC 기본값을 사용할 수 있습니다.

새 VPC 접두사 생성

각 영역마다 새로운 접두사를 생성하십시오. 이 예제에서는 슈퍼넷 198.18.0.0/16 을 사용하여, 각 영역마다 하나씩 총 세 개의 /18 접두사(서브넷)를 생성합니다.

ic is vpc-addrc my-vpc-zone-1-vms my-vpc us-south-1 198.18.0.0/18 --default true
ic is vpc-addrc my-vpc-zone-2-vms my-vpc us-south-2 198.18.64.0/18
ic is vpc-addrc my-vpc-zone-3-vms my-vpc us-south-3 198.18.128.0/18

새로운 VPC 서브넷 생성

존 1에 세 개의 VPC 서브넷(prod, db, app)을 생성합니다.

ic is subnetc zone1-vm-prod my-vpc us-south-1 --ipv4-cidr-block 198.18.0.0/24
ic is subnetc zone1-vm-db my-vpc us-south-1 --ipv4-cidr-block 198.18.1.0/24
ic is subnetc zone1-vm-app my-vpc us-south-1 --ipv4-cidr-block 198.18.2.0/24

필요에 따라 공용 게이트웨이 연결하기

각 영역에 공용 게이트웨이가 연결되어 있는지 확인하십시오. 그렇지 않으면 서브넷은 비공개 상태로 유지됩니다.

각 서브넷의 ID를 가져옵니다. 이 예시에서는 ‘ zone1-vm-prod ’ 서브넷이 선택되어 있습니다.

ic is subnets | awk ' $8 ~ /yourVPC-NAME_GOES-HERE/'

출력 예:

0716-16da748a-5159-480c-b809-5f9e4750028b   zone1-vm-app    available   198.18.2.0/24   249/256   stone-likeness-bagging-headcount   pgw-0ec02020-2f74-11f1-b0c5-bfe21078e55b   potato-farm   us-south-1   Default
0716-74a2d06b-de5c-40c2-8311-38dbff74ce62   zone1-vm-db     available   198.18.1.0/24   249/256   stone-likeness-bagging-headcount   -                                          potato-farm   us-south-1   Default
0716-efd14367-eed3-429d-b390-ea17f0e8cfb1   zone1-vm-prod   available   198.18.0.0/24   249/256   stone-likeness-bagging-headcount   pgw-0ec02020-2f74-11f1-b0c5-bfe21078e55b   potato-farm   us-south-1   Default

서브넷에 공용 게이트웨이 연결하기

서브넷 ID 0716-efd14367-eed3-429d-b390-ea17f0e8cfb1 을 사용하여 zone1-vm-prod 서브넷에 공용 게이트웨이를 연결합니다.

ic is subnet-public-gateway-attach zone1-vm-prod --pgw r134-053cb8b1-d966-4b02-9f20-5fcbeda76048

새로운 서브넷과 각 영역마다 이 단계를 반복해야 합니다. 공용 게이트웨이는 VPC 및 존별로 설정됩니다.

2층 주요 배관

레이어 2 기본 네트워크는 최종 사용자가 이를 이용할 수 있게 되기 전에 몇 가지 초기 설정이 필요합니다.

레이어 2 기본 네트워크를 사용하기 전에 몇 가지 초기 설정을 완료해야 합니다.

FRR OVN 라우터 포드 설치

IBM Cloud 클러스터의 Red Hat OpenShift 에 패치를 적용하여 Open Virtual Networking(OVN) 포드에서 Free Range Routing(FRR) 옵션을 사용할 수 있도록 합니다. OVN- Kubernetes 구성에서 FRR을 추가 라우팅 공급자로 활성화하고 라우팅 광고를 전송하려면 다음 패치를 적용하십시오.

oc patch Network.operator.openshift.io cluster --type=merge -p='{"spec":{"additionalRoutingCapabilities":{"providers":["FRR"]},"defaultNetwork":{"ovnKubernetesConfig":{"routeAdvertisements":"Enabled"}}}}'

네임스페이스 간 네트워킹 활성화

BGP(Border Gateway Protocol)를 통해 알림이 전송되는 클러스터 사용자 정의 네트워크(CUDN)에 대해 네임스페이스 간 네트워킹을 허용하는 기본 네트워크 구성을 적용합니다. 이 구성은 기본 사용자 정의 네트워크(UDN) 격리 동작을 완화합니다. 다음 매니페스트를 파일로 저장한 후, oc apply -f step0.yml`` 명령어를 사용하여 적용하십시오.

# Permit intra-CUDN-namespace traffic
---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: openshift-network-operator
  name: ovn-kubernetes-config-overrides
data:
  advertised-udn-isolation-mode: "loose"

경로 광고 선택기 활성화

OVN FRR 포드를 통해 BGP로 포드 네트워크를 알리도록 OVN을 구성하려면 경로 광고를 추가하십시오. 다음 매니페스트를 파일로 저장한 후, oc apply -f step1.yml`` 명령어를 사용하여 적용하십시오.

네트워크에는 반드시 ‘ advertise: true ’ 레이블이 지정되어 있어야 합니다.

# Add the RouteAdvertisements
---
kind: RouteAdvertisements
apiVersion: k8s.ovn.org/v1
metadata:
  name: default
spec:
  nodeSelector: {}
  frrConfigurationSelector: {}
  networkSelectors:
    - networkSelectionType: ClusterUserDefinedNetworks
      clusterUserDefinedNetworkSelector:
        networkSelector:
          matchLabels:
            advertise: "true"
  advertisements:
    - "PodNetwork"
---