에서 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"
---