단일 Cryostat 클러스터에 여러 RHOSO 환경 배포
단일 Red Hat OpenShift Container Platform 클러스터의 OpenShift 환경에 여러 Red Hat OpenStack Services 배포
초록
Red Hat 문서에 관한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 더 나은지 알려주십시오.
Create Issue 양식을 사용하여 OpenShift (RHOSO) 또는 이전 Red Hat OpenStack Platform (RHOSP)의 Red Hat OpenStack Services 문서에 대한 피드백을 제공합니다. RHOSO 또는 RHOSP 문서에 대한 문제를 생성할 때 RHOSO Jira 프로젝트에 문제가 기록되어 피드백의 진행 상황을 추적할 수 있습니다.
문제 생성 양식을 완료하려면 Jira에 로그인해야 합니다. Red Hat Jira 계정이 없는 경우 https://issues.redhat.com 에서 계정을 생성할 수 있습니다.
- 다음 링크를 클릭하여 문제 생성 페이지를 엽니다. https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12336920&summary=Documentation%20feedback:%20%3CAdd%20summary%20here%3E&issuetype=1&description=<Include+the+documentation+URL,+the%20chapter+or+section+number,+and+a+detailed+description+of+the+issue.>&components=12391143&priority=10300
- 요약 및 설명 필드를 작성합니다. 설명 필드에 문서 URL, 장 또는 섹션 번호, 문제에 대한 자세한 설명을 포함합니다. 양식의 다른 필드를 수정하지 마십시오.
- 생성을 클릭합니다.
1장. 네임스페이스 분리를 사용하여 여러 RHOSO 환경 생성 링크 복사링크가 클립보드에 복사되었습니다!
namspace 분리를 사용하여 단일 Red Hat OpenShift Container Platform(RHOCP) 클러스터에서 OpenShift(RHOSO) 환경에 여러 개의 독립 Red Hat OpenStack Services를 배포할 수 있습니다. 각 RHOSO 환경을 배포하려면 각 네임스페이스에 대해 여러 개의 격리된 네임스페이스와 격리된 네트워크를 생성한 다음 OpenShift에 Red Hat OpenStack Services 배포 절차를 사용하여 각 네임스페이스에 컨트롤 플레인과 데이터 플레인을 생성합니다.
Red Hat은 네임스페이스 분리가 있는 단일 클러스터에서 최대 5개의 RHOSO 환경을 지원합니다(예: 개발, 테스트, 스테이징, 프로덕션 환경).
네임스페이스 분리를 사용하여 여러 개의 독립 RHOSO 환경을 생성하려면 다음 작업을 완료해야 합니다.
- 분리된 각 RHOSO 환경에 대한 네트워킹을 계획합니다.
- 각 RHOSO 환경에 대한 네임스페이스를 생성합니다.
-
각 네임스페이스에 대한
SecretCR(사용자 정의 리소스)을 생성하여 해당 네임스페이스의 RHOSO 서비스 Pod에 대한 보안 액세스 권한을 제공합니다. -
각 네임스페이스에 대해
NodeNetworkConfigurationPolicyCR을 구성합니다. -
각 네임스페이스에 대해
NetworkAttachmentDefinition(net-attach-def) CR을 생성합니다. -
각 네임스페이스에 대해
IPAddressPool및L2AdvertisementCR을 만듭니다. -
각 네임스페이스에 대해
NetConfigCR을 생성합니다. -
각 네임스페이스에 대해
OpenStackControlPlaneCR을 생성합니다. -
각 네임스페이스에 대해
OpenStackDataPlaneNodeSet및OpenStackDataPlaneDeploymentCR을 생성합니다. 자세한 내용은 Creating the data plane in Deploying Red Hat OpenStack Services on OpenShift 를 참조하십시오.
1.1. 제한 링크 복사링크가 클립보드에 복사되었습니다!
- Telemetry 시각화는 둘 이상의 네임스페이스에서 사용할 수 없습니다.
- 여러 영역이 지원되지 않으므로 DCN(Distributed Compute nodes) 및 분산 영역과 같은 확인된 아키텍처는 지원되지 않습니다.
1.2. Operator 및 OpenStack 버전 링크 복사링크가 클립보드에 복사되었습니다!
Openstack Operator CRD(사용자 정의 리소스 정의)는 글로벌로 활성화되기 때문에 네임스페이스 분리를 사용하여 동일한 RHOSO 클러스터에서 호스팅되는 모든 RHOSO 배포는 동일한 RHOSO 버전에서 실행됩니다. 그러나 각 RHOSO 배포는 각 네임스페이스의 OpenStackVersion CR(사용자 정의 리소스)에서 서비스 컨테이너가 관리되므로 RHOSO에서 배포하는 다양한 버전의 서비스를 실행할 수 있습니다.
1.3. 단일 클러스터에서 여러 배포 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift(RHOSO)의 새 버전의 Red Hat OpenStack Services가 릴리스되면 모든 네임스페이스에서 마이너 업데이트 절차를 수행하여 RHOCP(Red Hat OpenShift Container Platform) 클러스터에서 호스팅되는 모든 컨트롤 플레인을 새 버전으로 업데이트해야 합니다.
마이너 업데이트를 수행하기 전에 배포된 모든 환경이 동일한 버전에 있는지 확인해야 합니다. 모든 환경에 문제가 발생하지 않도록 모든 환경에서 동시에 마이너 업데이트를 수행하지 마십시오. 프로덕션 환경에 롤아웃하기 전에 다음과 같이 환경에서 마이너 업데이트를 수행하고 테스트해야 합니다.
- 개발 환경
- 스테이징 환경
- 환경 테스트
1.4. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 추가 호스팅 컨트롤 플레인 및 추가 리소스 소비를 수용하기에 충분한 리소스가 있는 운영 Cryostat 클러스터, 버전 4.18. 시스템 요구 사항은 배포 계획 의 Red Hat OpenShift Container Platform 클러스터 요구 사항을 참조하십시오.
-
oc명령줄 툴이 워크스테이션에 설치되어 있습니다. -
cluster-admin권한이 있는 사용자로 Cryostat 클러스터에 로그인되어 있습니다. -
OpenStack Operator(
openstack-operator)는 Cryostat 클러스터에 설치됩니다. 자세한 내용은 Operator 설치 및 준비를 참조하십시오. Cryostat 클러스터는 여러 RHOSO 환경에 맞게 준비되었습니다.
선택 사항: 각 RHOSO 클라우드 네임스페이스의 특정 컨트롤 플레인 및 데이터 플레인 Pod에 노드를 전용하도록 노드에 노드 선택기와 라벨을 구성했습니다. 자세한 내용은 Red Hat OpenStack Platform 배포를 위한 Red Hat OpenShift Container Platform 노드 구성을 참조하십시오.
참고노드 선택기 및 라벨을 사용하여 각 네임스페이스에 대해 Pod를 분리하지 않은 경우 각 네임스페이스의 컨트롤 플레인 및 데이터 플레인 Pod가 동일한 Cryostat 작업자 노드에 예약될 수 있습니다.
- Cryostat 클러스터의 스토리지 클래스를 생성했습니다. 모든 네임스페이스는 기본적으로 이 스토리지 클래스와 기본 PV(영구 볼륨)를 사용합니다. 필요한 경우 각 네임스페이스에 대해 별도의 스토리지 클래스와 PV를 생성할 수 있습니다. 자세한 내용은 스토리지 클래스 생성을 참조하십시오.
- 각 RHOSO 환경에 전용 베어 메탈 리소스를 사용하고 있습니다.
1.5. 각 네임스페이스에 대한 격리된 네트워크 계획 링크 복사링크가 클립보드에 복사되었습니다!
각 네임스페이스에 대해 분리된 RHOSO 네트워크를 계획하려면 다음 작업을 완료해야 합니다.
- RHOSO 환경의 최소 네트워크 요구 사항을 검토합니다. RHOSO 네트워크 요구 사항에 대한 자세한 내용은 Cryo stat 네트워크 요구 사항 및 배포 계획에서 네트워크 계획을 참조하십시오.
- 동일한 Cryostat 클러스터에서 여러 RHOSO 환경을 지원하도록 네트워크 토폴로지를 계획하고 각 네임스페이스에 대해 RHOSO 네트워크를 계획합니다.
- RHOSO-dedicated NIC가 각 네임스페이스에 하나씩 있는 모든 Cryostat 작업자 노드에 있는지 확인하여 RHOSO 환경 간의 분리를 강화합니다. 이러한 인터페이스는 VLAN을 사용하여 추가 네트워크 격리를 수행합니다.
- 네임스페이스 인터페이스와 해당 네임스페이스의 컴퓨팅 노드 간 연결이 있는지 확인합니다.
- 각 네임스페이스의 VLAN ID와 서브넷이 겹치지 않는지 확인합니다.
- 각 네임스페이스에 대한 각 RHOSO 환경에 대한 네트워크를 계획합니다. 각 네임스페이스에는 모든 네트워크에 대한 고유한 네트워크 IP 주소가 있어야 합니다. 네임스페이스 간 IP 주소와 범위를 겹치지 마십시오. 필요한 네트워크 값에 대한 자세한 내용은 OpenShift에 Red Hat OpenStack Services 배포 의 기본 Red Hat OpenStack Services의 "기본 RHOSO 네트워크 " 표를 참조하십시오.
2장. 각 네임스페이스에 대한 네임스페이스 및 Secret CR 생성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Container Platform (RHOCP) 클러스터에 배포하려는 각 RHOSO(Red Hat OpenStack Services) 환경에 대해 다음 절차를 반복합니다.
2.1. openstack 네임스페이스 생성 링크 복사링크가 클립보드에 복사되었습니다!
RHSM(Red Hat OpenStack Services on OpenShift) 배포의 서비스 Pod를 위한 RHOCP(Red Hat OpenShift Container Platform) 환경에 네임스페이스를 생성해야 합니다. 각 RHOSO 배포의 서비스 Pod는 Cryostat 환경 내의 자체 네임스페이스에 있습니다.
사전 요구 사항
-
cluster-admin권한이 있는 사용자로 Cryostat 클러스터에 액세스할 수 있는 워크스테이션에 로그인되어 있습니다.
프로세스
배포된 RHOSO 환경에 대한
openstack프로젝트를 생성합니다.$ oc new-project openstackOpenStack Operator가 권한 있는 Pod 생성을 활성화하도록
openstack네임스페이스에 레이블이 지정되어 있는지 확인합니다.$ oc get namespace openstack -ojsonpath='{.metadata.labels}' | jq { "kubernetes.io/metadata.name": "openstack", "pod-security.kubernetes.io/enforce": "privileged", "security.openshift.io/scc.podSecurityLabelSync": "false" }SCC(보안 컨텍스트 제약 조건)가 "권한"이 아닌 경우 다음 명령을 사용하여 변경합니다.
$ oc label ns openstack security.openshift.io/scc.podSecurityLabelSync=false --overwrite $ oc label ns openstack pod-security.kubernetes.io/enforce=privileged --overwrite선택 사항:
openstack네임스페이스에서 명령을 실행할 때 네임스페이스를 지정할 필요가 없도록 하려면 default네임스페이스를openstack으로 설정합니다.$ oc project openstack
2.2. OpenShift 서비스에서 Red Hat OpenStack Services에 대한 안전한 액세스 제공 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift(RHOSO) 서비스 Pod의 Red Hat OpenStack Services에 대한 보안 액세스를 제공하려면 Secret CR(사용자 정의 리소스)을 생성해야 합니다. 다음 절차에서는 각 서비스에 필요한 암호 형식을 사용하여 Secret CR을 생성합니다.
필요한 암호 및 유추 키를 생성하는 Secret CR의 예는 RHOSO 서비스 Pod에 대한 보안 액세스를 위해 예제 Secret CR을 참조하십시오.
컨트롤 플레인이 배포된 후에는 서비스 암호를 변경할 수 없습니다. 컨트롤 플레인을 배포한 후 osp-secret 에서 서비스 암호가 변경되면 새 암호를 사용하도록 서비스가 재구성되지만 ID 서비스(keystone)에서 암호가 업데이트되지 않습니다. 이로 인해 서비스가 중단됩니다.
사전 요구 사항
- python3-cryptography를 설치했습니다.
프로세스
-
워크스테이션에
SecretCR을 생성합니다(예:openstack_service_secret.yaml). openstack_service_secret.yaml에 다음 초기 구성을 추가합니다.apiVersion: v1 data: AdminPassword: <base64_password> AodhPassword: <base64_password> BarbicanPassword: <base64_password> BarbicanSimpleCryptoKEK: <base64_fernet_key> CeilometerPassword: <base64_password> CinderPassword: <base64_password> DbRootPassword: <base64_password> DesignatePassword: <base64_password> GlancePassword: <base64_password> HeatAuthEncryptionKey: <base64_password> HeatPassword: <base64_password> IronicInspectorPassword: <base64_password> IronicPassword: <base64_password> ManilaPassword: <base64_password> MetadataSecret: <base64_password> NeutronPassword: <base64_password> NovaPassword: <base64_password> OctaviaPassword: <base64_password> PlacementPassword: <base64_password> SwiftPassword: <base64_password> kind: Secret metadata: name: osp-secret namespace: openstack type: Opaque&
lt;base64_password>를 base64로 인코딩된 32자 키로 바꿉니다.참고HeatAuthEncryptionKey암호는 오케스트레이션 서비스(heat) 암호화의 32자 키여야 합니다. 다른 모든 서비스의 암호 길이를 늘리면HeatAuthEncryptionKey암호가 32인지 확인하십시오.다음 명령을 사용하여 base64로 인코딩된 암호를 수동으로 생성할 수 있습니다.
$ echo -n <password> | base64또는 Linux 워크스테이션을 사용하고
cat과 같은 Bash 명령을 사용하여SecretCR을 생성하는 경우 <base64_password>를 다음 명령으로 교체하여 각 서비스에 대해 임의의 암호를 자동으로 생성할 수 있습니다.$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)<
;base64_fernet_key>를 base64로 인코딩된 fernet 키로 바꿉니다. 다음 명령을 사용하여 수동으로 생성할 수 있습니다.$(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode('UTF-8'))" | base64)
클러스터에
SecretCR을 생성합니다.$ oc create -f openstack_service_secret.yaml -n openstackSecretCR이 생성되었는지 확인합니다.$ oc describe secret osp-secret -n openstack
2.2.1. RHOSO 서비스 Pod에 대한 보안 액세스를 위한 Secret CR의 예 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift(RHOSO) 서비스 Pod의 Red Hat OpenStack Services에 대한 보안 액세스를 제공하려면 Secret CR(사용자 정의 리소스) 파일을 생성해야 합니다.
Linux 워크스테이션을 사용하는 경우 필요한 암호 및 fernet 키를 생성하는 다음 Bash cat 명령을 사용하여 openstack_service_secret.yaml 이라는 Secret CR 파일을 생성할 수 있습니다.
$ cat <<EOF > openstack_service_secret.yaml
apiVersion: v1
data:
AdminPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
AodhPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
BarbicanPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
BarbicanSimpleCryptoKEK: $(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode('UTF-8'))" | base64)
CeilometerPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
CinderPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
DbRootPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
DesignatePassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
GlancePassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
HeatAuthEncryptionKey: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
HeatPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
IronicInspectorPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
IronicPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
ManilaPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
MetadataSecret: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
NeutronPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
NovaPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
OctaviaHeartbeatKey $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
OctaviaPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
PlacementPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
SwiftPassword: $(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
kind: Secret
metadata:
name: osp-secret
namespace: openstack
type: Opaque
EOF
3장. 여러 RHOSO 환경을 위한 Cryostat 네트워크 준비 링크 복사링크가 클립보드에 복사되었습니다!
여러 RHOSO 환경에 맞게 RHOCP(Red Hat OpenShift Container Platform) 클러스터를 준비하려면 Cryostat 클러스터에서 Cryostat 네트워크를 구성해야 합니다.
3.1. OpenShift 네트워크의 기본 Red Hat OpenStack Services 링크 복사링크가 클립보드에 복사되었습니다!
다음 물리적 데이터 센터 네트워크는 일반적으로 OpenShift(RHOSO)의 Red Hat OpenStack Services에 대해 구현됩니다.
- Control Plane network: OpenStack Operator에서 Ansible SSH 액세스에 사용하여 Red Hat OpenShift Container Platform(RHOCP) 환경에서 데이터 플레인 노드를 배포하고 연결합니다. 이 네트워크는 인스턴스의 실시간 마이그레이션에 데이터 플레인 노드에서도 사용됩니다.
외부 네트워크:(선택 사항) 사용자 환경에 필요한 경우 사용됩니다. 예를 들어 다음 목적을 위해 외부 네트워크를 생성할 수 있습니다.
- 가상 머신 인스턴스에 인터넷 액세스를 제공합니다.
- 컨트롤 플레인과 분리된 플랫 공급자 네트워크를 생성하려면 다음을 수행합니다.
- 컨트롤 플레인과 별도의 브릿지에 VLAN 공급자 네트워크를 구성하려면 다음을 수행합니다.
- 컨트롤 플레인 네트워크 이외의 네트워크의 유동 IP를 사용하여 가상 머신 인스턴스에 대한 액세스를 제공합니다.
- 내부 API 네트워크: RHOSO 구성 요소 간의 내부 통신에 사용됩니다.
- 스토리지 네트워크: 블록 스토리지, RBD, NFS, FC 및 iSCSI에 사용됩니다.
- 테넌트(프로젝트) 네트워크: 클라우드 배포 내의 가상 머신 인스턴스 간 데이터 통신에 사용됩니다.
- Octavia 컨트롤러 네트워크: (선택 사항) 컨트롤 플레인에서 실행되는 로드 밸런싱 서비스(octavia) 컨트롤러를 연결하는 데 사용됩니다.
스토리지 관리 네트워크: 스토리지 구성 요소에서 사용하는 (선택 사항)입니다. 예를 들어 Red Hat Ceph Storage는 HCI(하이퍼 컨버지드 인프라) 환경에서 스토리지 관리 네트워크를
cluster_network로 사용하여 데이터를 복제합니다.참고Red Hat Ceph Storage 네트워크 구성에 대한 자세한 내용은 Red Hat Ceph Storage 구성 가이드의 Ceph 네트워크 구성을 참조하십시오.
다음 표에서는 RHOSO 배포에서 사용되는 기본 네트워크를 자세히 설명합니다. 필요한 경우 환경에 대한 네트워크를 업데이트할 수 있습니다.
기본적으로 컨트롤 플레인 및 외부 네트워크는 VLAN을 사용하지 않습니다. VLAN을 사용하지 않는 네트워크는 별도의 NIC에 배치해야 합니다. 새 RHOSO 배포에서 컨트롤 플레인 네트워크에 VLAN을 사용할 수 있습니다. 트렁크된 인터페이스에서 Native VLAN을 VLAN이 아닌 네트워크로 사용할 수도 있습니다. 예를 들어 하나의 NIC에 컨트롤 플레인과 내부 API를 사용할 수 있으며 별도의 NIC에 VLAN이 없는 외부 네트워크를 사용할 수 있습니다.
| 네트워크 이름 | CIDR | NetConfig allocationRange | MetalLB IPAddressPool 범위 | net-attach-def ipam range | OCP 작업자 nncp 범위 |
|---|---|---|---|---|---|
|
| 192.168.122.0/24 | 192.168.122.100 - 192.168.122.250 | 192.168.122.80 - 192.168.122.90 | 192.168.122.30 - 192.168.122.70 | 192.168.122.10 - 192.168.122.20 |
|
| 10.0.0.0/24 | 10.0.0.100 - 10.0.0.250 | 해당 없음 | 해당 없음 | 해당 없음 |
|
| 172.17.0.0/24 | 172.17.0.100 - 172.17.0.250 | 172.17.0.80 - 172.17.0.90 | 172.17.0.30 - 172.17.0.70 | 172.17.0.10 - 172.17.0.20 |
|
| 172.18.0.0/24 | 172.18.0.100 - 172.18.0.250 | 해당 없음 | 172.18.0.30 - 172.18.0.70 | 172.18.0.10 - 172.18.0.20 |
|
| 172.19.0.0/24 | 172.19.0.100 - 172.19.0.250 | 해당 없음 | 172.19.0.30 - 172.19.0.70 | 172.19.0.10 - 172.19.0.20 |
|
| 172.23.0.0/24 | 해당 없음 | 해당 없음 | 172.23.0.30 - 172.23.0.70 | 해당 없음 |
|
| 172.20.0.0/24 | 172.20.0.100 - 172.20.0.250 | 해당 없음 | 172.20.0.30 - 172.20.0.70 | 172.20.0.10 - 172.20.0.20 |
다음 표는 영역 및 랙마다 다른 IP 주소와 트래픽 소스로 사용되는 글로벌 bgpmainnet 을 사용하여 eth2 및 eth3 을 사용하여 패브릭에 대한 연결을 설정하는 네트워크를 지정합니다.
| 네트워크 이름 | 영역 0 | 영역 1 | 영역 2 |
|---|---|---|---|
|
BGP Net1 ( | 100.64.0.0/24 | 100.64.1.0 | 100.64.2.0 |
|
BGP Net2 ( | 100.65.0.0/24 | 100.65.1.0/24 | 100.65.2.0 |
| bgpmainnet (loopback) | 99.99.0.0/24 | 99.99.1.0/24 | 99.99.2.0/24 |
3.2. 각 네임스페이스에 대한 RHOSO 네트워크 준비 링크 복사링크가 클립보드에 복사되었습니다!
RHOSO(Red Hat OpenStack Services on OpenShift) 서비스는 RHOCP(Red Hat OpenShift Container Platform) 워크로드로 실행됩니다. NMState Operator를 사용하여 작업자 노드를 필수 격리된 네트워크에 연결합니다. MetalLB Operator를 사용하여 격리된 네트워크에 내부 서비스 끝점을 노출합니다. 기본적으로 공용 서비스 끝점은 Cryostat 경로로 노출됩니다.
네트워크 매니페스트는 컨트롤 플레인 인터페이스 이름을 직접 참조하므로 컨트롤 플레인 인터페이스 이름은 모든 노드에서 일관되어야 합니다. 컨트롤 플레인 인터페이스 이름이 일치하지 않으면 RHOSO 환경이 배포되지 않습니다. 물리적 인터페이스 이름이 노드에서 일관성이 없는 경우 다른 네트워크 매니페스트에서 참조할 수 있는 물리적 인터페이스에 대해 일관된 대체 이름을 구성하는 Linux 본딩을 생성해야 합니다.
다음 절차의 예제에서는 IPv4 주소를 사용합니다. IPv4 주소 대신 IPv6 주소를 사용할 수 있습니다. 듀얼 스택(IPv4 및 IPv6)은 프로젝트(테넌트) 네트워크에서만 사용할 수 있습니다. IPv6 주소를 구성하는 방법에 대한 자세한 내용은 Cryostat 네트워킹 가이드의 다음 리소스를 참조하십시오.
3.2.1. 각 네임스페이스에 대해 격리된 네트워크 인터페이스를 사용하여 Cryostat 준비 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy CR(사용자 정의 리소스)은 클러스터 범위의 네트워크 구성 리소스이므로 생성할 때 네임스페이스에 할당되지 않습니다. 각 네임스페이스에 대해 NodeNetworkConfigurationPolicy (nncp) CR을 생성하여 Cryostat 클러스터에서 네임스페이스의 격리된 네트워크에 대한 인터페이스를 구성합니다. 다음 절차에서는 단일 네임스페이스에 대한 nncp CR 파일을 생성합니다. 해당 네임스페이스에 계획한 nncp 범위를 사용하여 생성한 각 네임스페이스에 대해 절차를 반복합니다.
NodeNetworkConfigurationPolicy CR은 클러스터 범위의 리소스이므로 이름이 서로 충돌하지 않도록 해야 합니다.
프로세스
-
워크스테이션에
NodeNetworkConfigurationPolicy(nncp) CR 파일을 생성합니다(예:openstack-nncp.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 클러스터의 각 작업자 노드의 각 네임스페이스에 대해 격리된 각 네트워크의 인터페이스를 구성합니다.다음 예에서
nncpCR은 네트워크 격리를 위해 IPv4 주소와 함께 VLAN 인터페이스를 사용하도록 작업자 노드 1에서인터페이스를 구성합니다.osp_ns_1의enp6s0apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: osp-enp6s0-worker-1 spec: desiredState: interfaces: - description: internalapi vlan interface osp_ns_1 ipv4: address: - ip: 172.17.0.10 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false name: internalapi_1 state: up type: vlan vlan: base-iface: enp6s0 id: 20 reorder-headers: true - description: storage vlan interface osp_ns_1 ipv4: address: - ip: 172.18.0.10 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false name: storage_1 state: up type: vlan vlan: base-iface: enp6s0 id: 21 reorder-headers: true - description: tenant vlan interface osp_ns_1 ipv4: address: - ip: 172.19.0.10 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false name: tenant_1 state: up type: vlan vlan: base-iface: enp6s0 id: 22 reorder-headers: true - description: ctlplane interface osp_ns_1 mtu: 1500 name: enp6s0 state: up type: ethernet - bridge: options: stp: enabled: false port: - name: enp6s0 vlan: {} description: linux-bridge over ctlplane interface osp_ns_1 ipv4: address: - ip: 192.168.122.11 prefix-length: "24" dhcp: false enabled: true ipv6: enabled: false mtu: 1500 name: ospbr_1 state: up type: linux-bridge - description: octavia vlan interface osp_ns_1 name: enp6s0.24 state: up type: vlan vlan: base-iface: enp6s0 id: 24 - bridge: options: stp: enabled: false port: - name: enp6s0.24 description: Configuring bridge octbr osp_ns_1 mtu: 1500 name: octbr_1 state: up type: linux-bridge nodeSelector: kubernetes.io/hostname: worker-1 node-role.kubernetes.io/worker: ""클러스터에
nncpCR을 생성합니다.$ oc apply -f openstack-nncp.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
3.2.2. 각 네임스페이스의 격리된 네트워크에 서비스 Pod 연결 링크 복사링크가 클립보드에 복사되었습니다!
NetworkAttachmentDefinition CR(사용자 정의 리소스)은 네임스페이스 범위 리소스입니다. 서비스 pod를 네트워크에 연결할 각 격리된 네트워크마다 NetworkAttachmentDefinition (net-attach-def) CR을 생성합니다. 다음 절차에서는 단일 네임스페이스에 대한 net-attach-def CR 파일을 생성합니다. 해당 네임스페이스에 계획한 ipam 범위를 사용하여 생성한 각 네임스페이스에 대해 절차를 반복합니다.
프로세스
-
워크스테이션에
NetworkAttachmentDefinition(net-attach-def) CR 파일을 생성합니다(예:openstack-net-attach-def.yaml). NetworkAttachmentDefinitionCR 파일에서 서비스 배포 Pod를 네트워크에 연결하도록 각 격리된 네트워크에 대한NetworkAttachmentDefinition리소스를 구성합니다. 다음 예제에서는 bridge 유형의internalapi,스토리지,ctlplane및테넌트네트워크에 대한NetworkAttachmentDefinition리소스를 생성하고, 유형bridge의 로드 밸런싱 관리 네트워크인octavia용NetworkAttachmentDefinition리소스를 생성합니다.apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: internalapi namespace: osp_ns_1 spec: config: | { "cniVersion": "0.3.1", "name": "internalapi", "type": "macvlan", "master": "internalapi_1", "ipam": { "type": "whereabouts", "range": "172.17.0.0/24", "range_start": "172.17.0.30", "range_end": "172.17.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: ctlplane namespace: osp_ns_1 spec: config: | { "cniVersion": "0.3.1", "name": "ctlplane", "type": "macvlan", "master": "ospbr_1", "ipam": { "type": "whereabouts", "range": "192.168.122.0/24", "range_start": "192.168.122.30", "range_end": "192.168.122.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: storage namespace: osp_ns_1 spec: config: | { "cniVersion": "0.3.1", "name": "storage", "type": "macvlan", "master": "storage_1", "ipam": { "type": "whereabouts", "range": "172.18.0.0/24", "range_start": "172.18.0.30", "range_end": "172.18.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: tenant namespace: osp_ns_1 spec: config: | { "cniVersion": "0.3.1", "name": "tenant", "type": "macvlan", "master": "tenant_1", "ipam": { "type": "whereabouts", "range": "172.19.0.0/24", "range_start": "172.19.0.30", "range_end": "172.19.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: labels: osp/net: octavia name: octavia namespace: osp_ns_1 spec: config: | { "cniVersion": "0.3.1", "name": "octavia", "type": "bridge", "bridge": "octbr_1", "ipam": { "type": "whereabouts", "range": "172.23.0.0/24", "range_start": "172.23.0.30", "range_end": "172.23.0.70", "routes": [ { "dst": "172.24.0.0/16", "gw" : "172.23.0.150" } ] } }-
metadata.namespace: 서비스가 배포되는 네임스페이스입니다. -
"master":nncpCR에 정의된 대로 네트워크와 연결된 노드 인터페이스 이름입니다. -
"IPAM": CNIIPAM플러그인에서.30 - .70범위의 생성된 Pod에 IP를 할당합니다. -
"range_start" - "range_end": IP 주소 풀 범위는 MetalLBIPAddressPool범위 및NetConfig allocationRange와 겹치지 않아야 합니다. - octavia 네트워크 연결은 로드 밸런서 가상 머신(amphorae) 및 OVN Operator가 관리하는 Open vSwitch Pod를 관리하는 pod를 연결하는 데 필요합니다.
-
클러스터에
NetworkAttachmentDefinitionCR을 생성합니다.$ oc apply -f openstack-net-attach-def.yamlNetworkAttachmentDefinitionCR이 생성되었는지 확인합니다.$ oc get net-attach-def -n openstack
3.2.3. 각 네임스페이스에 대해 RHOSO 네트워크 VIPS용 Cryostat 준비 링크 복사링크가 클립보드에 복사되었습니다!
IPAddressPool 및 L2Advertisement CR(사용자 정의 리소스)은 각 RHOSO 환경에 대해 metallb-system 네임 스페이스 내에서 생성해야 하는 네임스페이스 범위 리소스입니다. 가상 IP(VIP)가 발표되는 방법을 정의하는 L2Advertisement CR과 VIP로 사용할 수 있는 IP를 구성하려면 IPAddressPool CR을 생성해야 합니다. 계층 2 모드에서 한 노드는 로컬 네트워크에 서비스를 알리는 책임이 있다고 가정합니다. 다음 절차에서는 단일 네임스페이스에 대한 L2Advertisement CR 파일과 IPAddressPool CR 파일을 생성합니다. 해당 네임스페이스에 대해 계획한 MetalLB IPAddressPool 범위를 사용하여 생성한 각 네임스페이스에 대해 절차를 반복합니다.
IPAddressPool 및 L2Advertisement CR은 metallb-system 네임스페이스에 있어야 하는 MetalLB 리소스입니다. 각 네임스페이스의 리소스는 동일한 metallb-system 네임스페이스를 사용해야 하므로 이름이 서로 충돌하지 않도록 해야 합니다.
프로세스
-
워크스테이션에
IPAddressPoolCR 파일을 만듭니다(예:ipaddresspools_osp_ns_1.yaml). IPAddressPoolCR 파일에서 MetalLB에 권한이 있는 IP 주소 범위를 지정하도록 격리된 네트워크에서IPAddressPool리소스를 구성합니다.apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: internalapi_1 namespace: metallb-system spec: addresses: - 172.17.0.80-172.17.0.90 autoAssign: true avoidBuggyIPs: false --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: ctlplane_1 spec: addresses: - 192.168.122.80-192.168.122.90 autoAssign: true avoidBuggyIPs: false --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: storage_1 spec: addresses: - 172.18.0.80-172.18.0.90 autoAssign: true avoidBuggyIPs: false --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: tenant_1 spec: addresses: - 172.19.0.80-172.19.0.90 autoAssign: true avoidBuggyIPs: false-
spec.addresses:IPAddressPool범위는whereaboutsIPAM 범위 및 NetConfigallocationRange와 겹치지 않아야 합니다.
다른
IPAddressPool리소스 매개변수를 구성하는 방법에 대한 자세한 내용은 Cryostat 네트워킹 가이드의 MetalLB 주소 풀 구성 을 참조하십시오.-
클러스터에
IPAddressPoolCR을 생성합니다.$ oc apply -f ipaddresspools_osp_ns_1.yamlIPAddressPoolCR이 생성되었는지 확인합니다.$ oc describe -n metallb-system IPAddressPool-
워크스테이션에
L2AdvertisementCR 파일을 생성합니다(예:l2advertisement_osp_ns_1.yaml). L2AdvertisementCR 파일에서L2AdvertisementCR을 구성하여 서비스를 로컬 네트워크에 알리는 노드를 정의합니다. 각 네트워크에 대해 하나의L2Advertisement리소스를 만듭니다.다음 예에서 각
L2AdvertisementCR은 네트워크 주소 풀에서 요청된 VIP가 VLAN에 연결된 인터페이스에서 발표되도록 지정합니다.apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: internalapi_1 namespace: metallb-system spec: ipAddressPools: - internalapi_1 interfaces: - internalapi_1 nodeSelectors: - matchLabels: node-role.kubernetes.io/worker: "" --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: ctlplane_1 namespace: metallb-system spec: ipAddressPools: - ctlplane_1 interfaces: - ospbr_1 nodeSelectors: - matchLabels: node-role.kubernetes.io/worker: "" --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: storage_1 namespace: metallb-system spec: ipAddressPools: - storage_1 interfaces: - storage_1 nodeSelectors: - matchLabels: node-role.kubernetes.io/worker: "" --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: tenant_1 namespace: metallb-system spec: ipAddressPools: - tenant_1 interfaces: - tenant_1 nodeSelectors: - matchLabels: node-role.kubernetes.io/worker: ""-
spec.interfaces: VLAN 주소 풀에서 요청된 VIP가 발표되는 인터페이스입니다.
다른
L2Advertisement리소스 매개변수를 구성하는 방법에 대한 자세한 내용은 Cryostat 네트워킹 가이드의 L2 광고 및 라벨을 사용하여 MetalLB 구성 을 참조하십시오.-
클러스터에
L2AdvertisementCR을 생성합니다.$ oc apply -f l2advertisement_osp_ns_1.yamlL2AdvertisementCR이 생성되었는지 확인합니다.$ oc get -n metallb-system L2Advertisement NAME IPADDRESSPOOLS IPADDRESSPOOL SELECTORS INTERFACES ctlplane_1 ["ctlplane_1"] ["ospbr_1"] internalapi_1 ["internalapi_1"] ["internalapi_1"] storage_1 ["storage_1"] ["storage_1"] tenant_1 ["tenant_1"] ["tenant_1"]클러스터에 네트워크 백엔드로 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
3.3. 각 네임스페이스에 대한 데이터 플레인 네트워크 생성 링크 복사링크가 클립보드에 복사되었습니다!
데이터 플레인 네트워크를 생성하려면 NetConfig CR(사용자 정의 리소스)을 정의하고 데이터 플레인 네트워크의 모든 서브넷을 지정합니다. 데이터 플레인에 대해 하나 이상의 컨트롤 플레인 네트워크를 정의해야 합니다. VLAN 네트워크를 정의하여 구성 가능 네트워크(예: InternalAPI,Storage, External )에 대한 네트워크 격리를 생성할 수도 있습니다. 각 네트워크 정의에는 IP 주소 할당이 포함되어야 합니다. 다음 절차에서는 osp_ns_1 네임스페이스에 대한 NetConfig CR 파일을 생성합니다. 해당 네임스페이스에 계획한 allocationRange 범위를 사용하여 생성한 각 네임스페이스에 대해 절차를 반복합니다.
프로세스
-
워크스테이션에
netconfig_osp_ns_1.yaml이라는 파일을 만듭니다. netconfig_osp_ns_1.yaml에 다음 구성을 추가하여NetConfigCR을 생성합니다.apiVersion: network.openstack.org/v1beta1 kind: NetConfig metadata: name: openstacknetconfig namespace: osp_ns_1netconfig_osp_ns_1.yaml파일에서 각 데이터 플레인 네트워크의 토폴로지를 정의합니다. 다음 예제에서는 데이터 플레인에 대한 격리된 네트워크를 생성합니다.spec: networks: - name: CtlPlane dnsDomain: ctlplane_1.example.com subnets: - name: subnet1 allocationRanges: - end: 192.168.122.120 start: 192.168.122.100 - end: 192.168.122.200 start: 192.168.122.150 cidr: 192.168.122.0/24 gateway: 192.168.122.1 - name: InternalApi dnsDomain: internalapi_1.example.com subnets: - name: subnet1 allocationRanges: - end: 172.17.0.250 start: 172.17.0.100 excludeAddresses: - 172.17.0.10 - 172.17.0.12 cidr: 172.17.0.0/24 vlan: 20 - name: External dnsDomain: external_1.example.com subnets: - name: subnet1 allocationRanges: - end: 10.0.0.250 start: 10.0.0.100 cidr: 10.0.0.0/24 gateway: 10.0.0.1 - name: Storage dnsDomain: storage_1.example.com subnets: - name: subnet1 allocationRanges: - end: 172.18.0.250 start: 172.18.0.100 cidr: 172.18.0.0/24 vlan: 21 - name: Tenant dnsDomain: tenant_1.example.com subnets: - name: subnet1 allocationRanges: - end: 172.19.0.250 start: 172.19.0.100 cidr: 172.19.0.0/24 vlan: 22-
spec.networks.name: 네트워크의 이름입니다(예:CtlPlane). -
spec.networks.subnets: IPv4 서브넷 사양입니다. -
spec.networks.subnets.name: 서브넷의 이름입니다(예:subnet1). -
spec.networks.subnets.allocationRanges:NetConfigallocationRange.allocationRange는 MetalLBIPAddressPool범위 및 IP 주소 풀 범위와 겹치지 않아야 합니다. -
spec.networks.subnets.excludeAddresses: 데이터 플레인 노드에서 사용해서는 안 되는 할당 범위의 IP 주소 선택적 목록입니다. -
spec.networks.subnets.vlan: 네트워크 VLAN입니다. 기본 RHOSO 네트워크에 대한 자세한 내용은 OpenShift 네트워크의 기본 Red Hat OpenStack Services 를 참조하십시오.
-
-
netconfig_osp_ns_1.yaml정의 파일을 저장합니다. 데이터 플레인 네트워크를 생성합니다.
$ oc create -f netconfig_osp_ns_1.yaml -n openstack데이터 플레인 네트워크가 생성되었는지 확인하려면
openstacknetconfig리소스를 확인합니다.$ oc get netconfig/openstacknetconfig -n openstack오류가 표시되면 기본
network-attach-definition및 노드 네트워크 구성 정책을 확인합니다.$ oc get network-attachment-definitions -n openstack $ oc get nncp
4장. 네임스페이스에 대한 RHOSO 환경 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에 Red Hat OpenStack Services 배포 지침에 따라 각 네임스페이스에 대한 컨트롤 플레인 및 데이터 플레인을 생성하고 각 네임스페이스의 네트워크 구성을 업데이트합니다.
4.1. 네임스페이스의 컨트롤 플레인 생성 링크 복사링크가 클립보드에 복사되었습니다!
각 네임스페이스에 대해 OpenStackControlPlane CR(사용자 정의 리소스)을 생성하고 해당 네임스페이스의 네트워크를 사용하여 로드 밸런서를 구성합니다. 다음 절차에서는 osp_ns_1 네임스페이스에 대한 OpenStackControlPlane CR을 생성합니다.
프로세스
-
OpenShift에 Red Hat OpenStack Services 배포의 컨트롤 플레인 생성 절차에 따라
osp_ns_1네임스페이스에 대한OpenStackControlPlaneCR을 생성합니다. 각 서비스의 로드 밸런서 구성을 찾아 해당 네임스페이스의 네트워크로 업데이트합니다.
<service>: ... override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi_1 metallb.universe.tf/allow-shared-ip: internalapi_1 metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer-
MetalLB.universe.tf/address-pool: 서비스를 로드 밸런싱할 IP 주소를 할당하기 위한IpAddressPool입니다. MetalLB.universe.tf/allow-shared-ip: 로드 밸런싱을 위해 에서 공유 IP 주소를 사용하는IpAddressPool입니다.참고rabbitmq의 여러 인스턴스와 같이 동일한 포트를 사용하는 서비스와 VIP를 공유할 수 없습니다.
-
MetalLB.universe.tf/loadBalancerIPs: 서비스 로드 밸런싱 시 사용할IpAddressPool범위에서 특정 VIP를 할당합니다.
-
네임스페이스의 전용 인터페이스에 대응하도록
datacentre네트워크의nicMappings를 구성하여ovn서비스의 NIC 매핑을 업데이트하여 네임스페이스의OVNController리소스가 다른 네임스페이스와 분리되었는지 확인합니다.... ovn: enabled: true template: ovnController: nicMappings: datacentre: ospbr_1 ovnDBCluster: ovndbcluster-nb:컨트롤 플레인을 업데이트합니다.
$ oc apply -f osp_ns_1_control_plane.yaml -n openstackCryostat가
OpenStackControlPlaneCR과 관련된 리소스를 생성할 때까지 기다립니다. 다음 명령을 실행하여 상태를 확인합니다.$ oc get openstackcontrolplane -n osp_ns_1 NAME STATUS MESSAGE control-plane-ns-1 Unknown Setup started상태가 "Setup complete"인 경우
OpenStackControlPlane리소스가 생성됩니다.작은 정보get명령의 끝에-w옵션을 추가하여 배포 진행 상황을 추적합니다.- 서비스 pod가 올바른 작업자 노드에서 실행 중인지 확인합니다.
4.2. 네임스페이스의 데이터 플레인 생성 링크 복사링크가 클립보드에 복사되었습니다!
각 네임스페이스에 대해 OpenStackDataPlaneNodeSet CR(사용자 정의 리소스)과 각 네임스페이스에 대한 OpenStackDataPlaneDeployment CR을 생성합니다. 다음 절차에서는 osp_ns_1 네임스페이스에 대한 OpenStackDataPlaneNodeSet CR 및 OpenStackDataPlaneDeployment CR을 생성합니다.
프로세스
-
OpenShift에 Red Hat OpenStack Services 배포의 데이터 플레인 절차 생성 절차에 따라
osp_ns_1네임스페이스에 대한OpenStackDataPlaneNodeSetCR을 생성합니다. nodes섹션을 찾아 노드가 속한 네임스페이스를 나타내는 각 노드의 고유한 이름으로hostName및ansibleVars.fqdn_internal_api필드를 업데이트합니다.nodes: edpm-compute-0: hostName: edpm_1-compute-0 networks: - name: ctlplane subnetName: subnet1 defaultRoute: true fixedIP: 192.168.122.100 - name: internalapi subnetName: subnet1 fixedIP: 172.17.0.100 - name: storage subnetName: subnet1 fixedIP: 172.18.0.100 - name: tenant subnetName: subnet1 fixedIP: 172.19.0.100 ansible: ansibleHost: 192.168.122.100 ansibleUser: cloud-admin ansibleVars: fqdn_internal_api: edpm_1-compute-0.example.com네임스페이스에 정의된 각 노드에 대해 정의된 네트워크의 IP 주소를 업데이트합니다.
nodes: edpm-compute-0: ... networks: - name: ctlplane subnetName: subnet1 defaultRoute: true fixedIP: 192.168.122.100 - name: internalapi subnetName: subnet1 fixedIP: 172.17.0.100 - name: storage subnetName: subnet1 fixedIP: 172.18.0.100 - name: tenant subnetName: subnet1 fixedIP: 172.19.0.100 ansible: ansibleHost: 192.168.122.100 ...-
fixedIP:osp_ns_1네임스페이스의 네트워크의 IP 주소로 설정합니다.
-
-
업데이트된
OpenStackDataPlaneNodeSetCR 정의 파일을 저장합니다. 업데이트된
OpenStackDataPlaneNodeSetCR 구성을 적용합니다.$ oc apply -f osp_ns_1_data_plane.yaml상태가
SetupReady:인지 확인하여 데이터 플레인 리소스가 업데이트되었는지 확인합니다.$ oc wait openstackdataplanenodeset data-plane-ns-1 --for condition=SetupReady --timeout=10m상태가
SetupReady이면 명령에서condition met메시지를 반환하고, 그렇지 않으면 시간 초과 오류가 반환됩니다.워크스테이션에 파일을 생성하여 새
OpenStackDataPlaneDeploymentCR을 정의합니다.apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: <node_set_deployment_name>-
&
lt;node_set_deployment_name>을OpenStackDataPlaneDeploymentCR 이름으로 바꿉니다. 이름은 고유해야 하며 소문자 영숫자(하이프린) 또는.(period)로 구성되어야 하며 영숫자 문자로 시작하고 끝나야 합니다.
작은 정보수정된 노드 세트의 목적을 나타내는 정의 파일과
OpenStackDataPlaneDeploymentCR에 고유하고 설명이 포함된 이름을 지정합니다.-
&
수정한
OpenStackDataPlaneNodeSetCR을 추가합니다.spec: nodeSets: - <nodeSet_name>-
OpenStackDataPlaneDeploymentCR 배포 파일을 저장합니다. 수정된
OpenStackDataPlaneNodeSetCR을 배포합니다.$ oc create -f osp_ns_1_data_plane_deploy.yaml -n openstack배포가 실행되는 동안 Ansible 로그를 볼 수 있습니다.
$ oc get pod -l app=openstackansibleee -w $ oc logs -l app=openstackansibleee -f --max-log-requests 10oc logs명령에서 다음 오류와 유사한 오류를 반환하는 경우--max-log-requests값을 늘립니다.error: you are attempting to follow 19 log streams, but maximum allowed concurrency is 10, use --max-log-requests to increase the limit수정된
OpenStackDataPlaneNodeSetCR이 배포되었는지 확인합니다.$ oc get openstackdataplanedeployment -n openstack NAME STATUS MESSAGE data-plane-ns-1 True Setup Complete $ oc get openstackdataplanenodeset -n openstack NAME STATUS MESSAGE data-plane-ns-1 True NodeSet Ready상태가 데이터 플레인이 배포되지 않았음을 나타내는 경우 배포 문제를 해결합니다. 자세한 내용은 OpenShift에 Red Hat OpenStack Services 배포 가이드의 데이터 플레인 생성 및 배포 문제 해결을 참조하십시오.