7.2. RHOSO 데이터 플레인에 Compute 서비스 채택
Compute(nova) 서비스를 OpenShift(RHOSO) 데이터 플레인의 Red Hat OpenStack Services에 채택합니다.
사전 요구 사항
- 컴퓨팅 서비스(nova) 호스트에서 나머지 컨트롤 플레인 노드, 리포지토리 및 패키지를 중지했습니다. 자세한 내용은 인프라 관리 및 Compute 서비스 중지 를 참조하십시오.
-
NovaLibvirt서비스에 Ceph 백엔드를 구성했습니다. 자세한 내용은 Ceph 백엔드 구성을 참조하십시오. IP 주소 관리(IPAM)를 구성했습니다.
$ oc apply -f - <<EOF apiVersion: network.openstack.org/v1beta1 kind: NetConfig metadata: name: netconfig spec: networks: - name: ctlplane dnsDomain: ctlplane.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.example.com subnets: - name: subnet1 allocationRanges: - end: 172.17.0.250 start: 172.17.0.100 cidr: 172.17.0.0/24 vlan: 20 - name: External dnsDomain: external.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.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: storagemgmt dnsDomain: storagemgmt.example.com subnets: - name: subnet1 allocationRanges: - end: 172.20.0.250 start: 172.20.0.100 cidr: 172.20.0.0/24 vlan: 23 - name: tenant dnsDomain: tenant.example.com subnets: - name: subnet1 allocationRanges: - end: 172.19.0.250 start: 172.19.0.100 cidr: 172.19.0.0/24 vlan: 22 EOF-
neutron-sriov-nic-agent가 컴퓨팅 서비스 노드에서 실행 중인 경우 물리적 장치 매핑이OpenStackDataPlaneNodeSetCR(사용자 정의 리소스)에 정의된 값과 일치하는지 확인합니다. 자세한 내용은 director Operator 배포에서 설정 가져오기를 참조하십시오. 업그레이드를 실행하는 스크립트를 실행하도록 쉘 변수를 정의했습니다.
$ CEPH_FSID=$(oc get secret ceph-conf-files -o json | jq -r '.data."ceph.conf"' | base64 -d | grep fsid | sed -e 's/fsid = //') $ alias openstack="oc exec -t openstackclient -- openstack" $ DEFAULT_CELL_NAME="cell3"1 $ RENAMED_CELLS="cell1 cell2 $DEFAULT_CELL_NAME" $ declare -A COMPUTES_CELL1 $ export COMPUTES_CELL1=(2 ["standalone.localdomain"]="192.168.122.100"3 # <compute1>4 # <compute2> # <compute3> ) $ declare -A COMPUTES_CELL2 $ export COMPUTES_CELL2=( # ... ) $ declare -A COMPUTES_CELL3 $ export COMPUTES_CELL3=( # ...5 ) # ... $ declare -A COMPUTES_API_CELL1 $ export COMPUTES_API_CELL1=(6 ["standalone.localdomain"]="172.17.0.100" # ... ) # ... $ NODESETS="" $ for CELL in $(echo $RENAMED_CELLS); do ref="COMPUTES_$(echo ${CELL}|tr '[:lower:]' '[:upper:]')" eval names=\${!${ref}[@]} [ -z "$names" ] && continue NODESETS="'openstack-${CELL}', $NODESETS"7 done $ NODESETS="[${NODESETS%,*}]"- 1
- 소스 클라우드
기본셀은 채택 후 대상 클라우드에서 새DEFAULT_CELL_NAME을 확보합니다. 다중 셀 채택 시나리오에서는 소스 클라우드에서 마지막 셀의 증분 인덱스를 제공하여 원래 이름,기본값을 유지하거나 새 셀 기본 이름을 만들 수 있습니다. 예를 들어 마지막 셀의 증가된 인덱스가cell5인 경우 새 셀의 기본 이름은cell6입니다. - 2
- 각 셀에 대해
ctlplane및internalapi네트워크에 연결된 Compute 서비스 노드의 이름 및 IP 주소로 <["standalone.localdomain"]="x.x.x"> 값과COMPUTES_CELL<X> 값을 업데이트합니다. 각 네트워크에 정의된 실제 FQDN을 지정하지 마십시오. 컴퓨팅 노드의 연결된 각 네트워크에 대해 항상 동일한 호스트 이름을 사용합니다. 필요에 따라 소스 클라우드의 나머지 네트워크에 있는 IP 주소와 호스트 이름을 제공합니다. 또는 이 절차의 9단계에서 생성하는 파일을 수동으로 조정할 수 있습니다. - 3
- 배포에 사용자 지정 DNS 도메인이 있는 경우 노드의 FQDN 값에 지정합니다. 이 값은 데이터 플레인 노드 세트
spec.nodes.<NODE NAME>.hostName에서 사용됩니다. - 4
- 소스 클라우드
cell1셀의 모든 Compute 서비스 노드를COMPUTES_CELL1에 할당합니다. <compute1> , <compute2> , <compute3>를 컴퓨팅 서비스 노드의 이름으로 바꿉니다. - 5
- 소스 클라우드
기본셀의 모든 컴퓨팅 서비스 노드를COMPUTES_CELL<X> 및COMPUTES_API_CELL<X>'에 할당합니다. 여기서 <X>는DEFAULT_CELL_NAME환경 변수 값입니다. 이 예제에서DEFAULT_CELL_NAME환경 변수 값은cell3과 같습니다. - 6
- 각 셀에 대해
ctlplane및internalapi네트워크에 연결된 컴퓨팅 서비스 노드의 이름 및 IP 주소로 <["standalone.localdomain"]="192.168.122.100"> 값과COMPUTES_API_CELL값을 업데이트합니다. 각 네트워크에 정의된 실제 FQDN을 지정하지 마십시오. 연결된 각 네트워크에 동일한 호스트 이름을 사용합니다. 필요에 따라 소스 클라우드의 나머지 네트워크에 있는 IP 주소와 호스트 이름을 제공합니다. 또는 이 절차의 9단계에서 생성하는 파일을 수동으로 조정할 수 있습니다. - 7
- 셀에 대한 노드 세트가 생성되지 않기 때문에 컴퓨팅 노드를 포함하지 않는 셀은 이 템플릿에서 생략됩니다.
참고기본셀을 사용하여 소스 클라우드를 배포하고 채택 중에 이름을 변경하려면 다음 예와 같이 사용할 새 이름을 정의합니다.$ DEFAULT_CELL_NAME="cell1" $ RENAMED_CELLS="cell1"
libvirt에 대한 Compute 서비스에서 로컬 스토리지 백엔드를 구성하는 경우 CEPH_FSID 매개변수의 값을 설정하지 마십시오. 스토리지 백엔드는 소스 클라우드 스토리지 백엔드와 일치해야 합니다. 채택 중에는 스토리지 백엔드를 변경할 수 없습니다.
프로세스
데이터 플레인 노드에 대한 SSH 인증 보안을 생성합니다.
$ oc apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: dataplane-adoption-secret data: ssh-privatekey: | $(cat <path_to_SSH_key> | base64 | sed 's/^/ /') EOF-
&
lt;path_to_SSH_key>를 SSH 키 경로로 바꿉니다.
-
&
ssh 키 쌍
nova-migration-ssh-key시크릿을 생성합니다.$ cd "$(mktemp -d)" $ ssh-keygen -f ./id -t ecdsa-sha2-nistp521 -N '' $ oc get secret nova-migration-ssh-key || oc create secret generic nova-migration-ssh-key \ --from-file=ssh-privatekey=id \ --from-file=ssh-publickey=id.pub \ --type kubernetes.io/ssh-auth $ rm -f id* $ cd -TLS Everywhere가 활성화된 경우 기존 RHOSP 배포 암호와 일치하도록
LIBVIRT_PASSWORD를 설정합니다.declare -A TRIPLEO_PASSWORDS TRIPLEO_PASSWORDS[default]="$HOME/overcloud-passwords.yaml" LIBVIRT_PASSWORD=$(cat ${TRIPLEO_PASSWORDS[default]} | grep ' LibvirtTLSPassword:' | awk -F ': ' '{ print $2; }') LIBVIRT_PASSWORD_BASE64=$(echo -n "$LIBVIRT_PASSWORD" | base64)TLS-e가 활성화되면 libvirt-secret을 생성합니다.
$ oc apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: libvirt-secret type: Opaque data: LibvirtPassword: ${LIBVIRT_PASSWORD_BASE64} EOF
libvirt의 로컬 스토리지 백엔드를 구성하기 위해 모든 셀에 사용할 구성 맵을 생성합니다.
$ oc apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: nova-cells-global-config data:1 99-nova-compute-cells-workarounds.conf: |2 [workarounds] disable_compute_service_check_for_ffu=true EOF참고실시간 클라우드를 채택하는 경우 cell1 기본
nova-extra-config구성 맵에 저장된 기본nova데이터 플레인 서비스에 대한 추가 구성을 수행해야 할 수 있습니다.cell1기본구성 맵의 기존 구성을 삭제하거나 덮어쓰지 마십시오. 구성을 덮어쓰면nova-extra-confignova-extra-config구성 맵의 특정 콘텐츠를 사용하는 데이터 위치 서비스가 손상될 수 있습니다.libvirt에 대해 Red Hat Ceph Storage 백엔드를 구성합니다.
$ oc apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: nova-cells-global-config data: 99-nova-compute-cells-workarounds.conf: | [workarounds] disable_compute_service_check_for_ffu=true 03-ceph-nova.conf: | [libvirt] images_type=rbd images_rbd_pool=vms images_rbd_ceph_conf=/etc/ceph/ceph.conf images_rbd_glance_store_name=default_backend images_rbd_glance_copy_poll_interval=15 images_rbd_glance_copy_timeout=600 rbd_user=openstack rbd_secret_uuid=$CEPH_FSID EOF참고다중 셀 구성이 있는 Red Hat Ceph Storage 환경의 경우
nova-custom-ceph-cellX및nova-compute-extraconfig-cellX와 유사한 구성 맵 및 Red Hat OpenStack Platform 데이터 플레인 서비스의 이름을 지정해야 합니다.컴퓨팅 서비스 셀에 대한 데이터 플레인 서비스를 생성하여 사전 업그레이드 해결 방법을 활성화하고 선택한 스토리지 백엔드에 대한 Compute 서비스를 구성합니다.
for CELL in $(echo $RENAMED_CELLS); do $ oc apply -f - <<EOF --- apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneService metadata: name: nova-$CELL spec: dataSources:1 - secretRef: name: nova-$CELL-compute-config2 - secretRef: name: nova-migration-ssh-key3 - configMapRef: name: nova-cells-global-config playbook: osp.edpm.nova caCerts: combined-ca-bundle edpmServiceType: nova containerImageFields: - NovaComputeImage - EdpmIscsidImage EOF doneTLS Everywhere가 활성화된 경우
OpenStackDataPlaneServiceCR에 다음 콘텐츠를 추가합니다.tlsCerts: contents: - dnsnames - ips networks: - ctlplane issuer: osp-rootca-issuer-internal edpmRoleServiceName: nova caCerts: combined-ca-bundle edpmServiceType: nova- 1
- cell<X>에 대한 로컬 메타데이터 서비스를 활성화하려면
spec.dataSources.secretRef를 추가하여 자동 생성된nova-cell<X>-metadata-neutron-config시크릿을 참조합니다. Compute 서비스 Adopting에 설명된 대로OpenStackControlPlane/openstackCR에서spec.nova.template.cellTemplates.cell<X>.metadataServiceTemplate.enable을 설정해야 합니다. 단일 최상위 메타데이터를 구성하거나 셀당 메타데이터를 정의할 수 있습니다. - 2
- 각 셀에 대해
nova-cell<X>-compute-config자동 생성기입니다. - 3
- Compute 서비스와 관련된 각 사용자 정의
OpenStackDataPlaneServiceCR에 대해nova-cell<X>-compute-config및nova-migration-ssh-key참조를 추가해야 합니다.
참고컴퓨팅 서비스 셀에 대한 데이터 플레인 서비스를 생성할 때 다음 고려 사항을 검토하십시오.
-
이 예에서는 동일한
nova-migration-ssh-key키가 셀 간에 공유됩니다. 그러나 다른 셀에 대해 다른 키를 사용해야 합니다. -
간단한 구성 덮어쓰기의 경우 사용자 정의 데이터 플레인 서비스가 필요하지 않습니다. 그러나 셀
cell1을 재구성하기 위해 가장 안전한 옵션은 사용자 지정 서비스 및 전용 구성 맵을 생성하는 것입니다. -
cell1은nova라는 기본OpenStackDataPlaneServiceCR과nova-extra-config구성 맵으로 이미 관리됩니다. 기본 데이터 플레인 서비스nova정의를 변경하지 마십시오. RHOSO Operator가 OLM으로 업데이트되면 변경 사항이 손실됩니다. -
셀이 여러 노드 세트에 걸쳐 사용자 지정
OpenStackDataPlaneService리소스에 노드 세트와 관련된 이름을 지정합니다(예:nova-cell1-nfv및nova-cell1-enterprise). 그런 다음 자동 생성 구성 맵의 이름은nova-cell1-nfv-extra-config및nova-cell1-enterprise-extra-config입니다. - 동일한 셀의 여러 노드 세트에 있는 노드의 다양한 구성도 지원되지만 이 가이드에서는 다루지 않습니다.
서브스크립션 관리자의 시크릿을 생성합니다.
$ oc create secret generic subscription-manager \ --from-literal rhc_auth='{"login": {"username": "<subscription_manager_username>", "password": "<subscription_manager_password>"}}'-
<
;subscription_manager_username>을 해당 사용자 이름으로 바꿉니다. -
&
lt;subscription_manager_password>를 해당 암호로 바꿉니다.
-
<
Red Hat 레지스트리의 시크릿을 생성합니다.
$ oc create secret generic redhat-registry \ --from-literal edpm_container_registry_logins='{"registry.redhat.io": {"<registry_username>": "<registry_password>"}}'-
<
;registry_username>을 해당 사용자 이름으로 바꿉니다. <
;registry_password>를 해당 암호로 바꿉니다.참고OpenStackDataPlaneServiceCR의dataSources필드에서subscription-manager시크릿을 참조할 필요가 없습니다. 시크릿은nodeTemplate필드의ansibleVarsFrom속성에 노드별OpenStackDataPlaneNodeSetCR을 사용하여 이미 전달되었습니다.
-
<
각 셀에 대한 데이터 플레인 노드 세트 정의를 생성합니다.
$ declare -A names $ for CELL in $(echo $RENAMED_CELLS); do ref="COMPUTES_$(echo ${CELL}|tr '[:lower:]' '[:upper:]')" eval names=\${!${ref}[@]} ref_api="COMPUTES_API_$(echo ${CELL}|tr '[:lower:]' '[:upper:]')" [ -z "$names" ] && continue ind=0 rm -f computes-$CELL for compute in $names; do ip="${ref}['$compute']" ip_api="${ref_api}['$compute']" cat >> computes-$CELL << EOF ${compute}: hostName: $compute1 ansible: ansibleHost: $compute networks:2 - defaultRoute: true fixedIP: ${!ip} name: ctlplane subnetName: subnet1 - name: internalapi subnetName: subnet1 fixedIP: ${!ip_api} - name: storage subnetName: subnet1 - name: tenant subnetName: subnet1 EOF ind=$(( ind + 1 )) done test -f computes-$CELL || continue cat > nodeset-${CELL}.yaml <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: openstack-$CELL3 spec: tlsEnabled: false4 networkAttachments: - ctlplane preProvisioned: true services: - redhat - bootstrap - download-cache - configure-network - validate-network - install-os - configure-os - ssh-known-hosts - run-os - reboot-os - install-certs - ovn - neutron-metadata - libvirt - nova-$CELL - telemetry5 env: - name: ANSIBLE_CALLBACKS_ENABLED value: "profile_tasks" - name: ANSIBLE_FORCE_COLOR value: "True" - name: ANSIBLE_VERBOSITY value: '3' nodeTemplate: ansibleSSHPrivateKeySecret: dataplane-adoption-secret ansible: ansibleUser: root ansibleVarsFrom: - secretRef: name: subscription-manager - secretRef: name: redhat-registry ansibleVars: rhc_release: 9.2 rhc_repositories: - {name: "*", state: disabled} - {name: "rhel-9-for-x86_64-baseos-eus-rpms", state: enabled} - {name: "rhel-9-for-x86_64-appstream-eus-rpms", state: enabled} - {name: "rhel-9-for-x86_64-highavailability-eus-rpms", state: enabled} - {name: "rhoso-18.0-for-rhel-9-x86_64-rpms", state: enabled} - {name: "fast-datapath-for-rhel-9-x86_64-rpms", state: enabled} - {name: "rhceph-7-tools-for-rhel-9-x86_64-rpms", state: enabled} edpm_bootstrap_release_version_package: [] # edpm_network_config # Default nic config template for a EDPM node # These vars are edpm_network_config role vars edpm_network_config_template: | --- {% set mtu_list = [ctlplane_mtu] %} {% for network in nodeset_networks %} {% set _ = mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) %} {%- endfor %} {% set min_viable_mtu = mtu_list | max %} network_config: - type: ovs_bridge name: {{ neutron_physical_bridge_name }} mtu: {{ min_viable_mtu }} use_dhcp: false dns_servers: {{ ctlplane_dns_nameservers }} domain: {{ dns_search_domains }} addresses: - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }} routes: {{ ctlplane_host_routes }} members: - type: interface name: nic1 mtu: {{ min_viable_mtu }} # force the MAC address of the bridge to this interface primary: true {% for network in nodeset_networks %} - type: vlan mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} addresses: - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} {% endfor %} edpm_network_config_nmstate: false # Control resolv.conf management by NetworkManager # false = disable NetworkManager resolv.conf update (default) # true = enable NetworkManager resolv.conf update edpm_bootstrap_network_resolvconf_update: false edpm_network_config_hide_sensitive_logs: false # # These vars are for the network config templates themselves and are # considered EDPM network defaults. neutron_physical_bridge_name: br-ctlplane6 neutron_public_interface_name: eth0 # edpm_nodes_validation edpm_nodes_validation_validate_controllers_icmp: false edpm_nodes_validation_validate_gateway_icmp: false # edpm ovn-controller configuration edpm_ovn_bridge_mappings: <bridge_mappings>7 edpm_ovn_bridge: br-int edpm_ovn_encap_type: geneve ovn_monitor_all: true edpm_ovn_remote_probe_interval: 60000 edpm_ovn_ofctrl_wait_before_clear: 8000 timesync_ntp_servers: - hostname: clock.redhat.com - hostname: clock2.redhat.com edpm_bootstrap_command: | # FIXME: perform dnf upgrade for other packages in EDPM ansible # here we only ensuring that decontainerized libvirt can start dnf -y upgrade openstack-selinux rm -f /run/virtlogd.pid gather_facts: false # edpm firewall, change the allowed CIDR if needed edpm_sshd_configure_firewall: true edpm_sshd_allowed_ranges: ['192.168.122.0/24'] # Do not attempt OVS major upgrades here edpm_ovs_packages: - openvswitch3.3 edpm_default_mounts:8 - path: /dev/hugepages<size> opts: pagesize=<size> fstype: hugetlbfs group: hugetlbfs nodes: EOF cat computes-$CELL >> nodeset-${CELL}.yaml done- 1
- 배포에 사용자 지정 DNS 도메인이 있는 경우 노드의 FQDN을 지정합니다.
- 2
- 데이터 플레인 연결 다운 타임을 방지하려면 네트워크 구성이 소스 클라우드 구성과 일치해야 합니다.
ctlplane네트워크가 먼저 있어야 합니다. 이 명령은ctlplane및internalapi네트워크에 있는 호스트의 IP 주소만 유지합니다. 다른 격리된 네트워크에 대해 이 단계를 반복하거나 결과 파일을 수동으로 업데이트합니다. - 3
openstack-cell1,openstack-cell2와 같은 노드 세트 이름을 사용합니다. 컴퓨팅 노드가 포함된 셀에 대한 노드 세트만 생성합니다.- 4
- TLS Everywhere가 활성화된 경우
tlsEnabled를true로 변경합니다. - 5
- Telemetry 서비스를 채택하지 않는 경우 서비스 목록에서 생략합니다.
- 6
- 데이터 플레인 연결 다운타임을 방지하려면 브리지 이름 및 기타 OVN 및 Networking 서비스 관련 값이 소스 클라우드 구성과 일치해야 합니다.
- 7
- &
lt;bridge_mappings>를 구성의 브리지 매핑 값으로 바꿉니다(예:"datacentre:br-ctlplane"). - 8
- 대규모 페이지를 구성하려면 <
size>를 페이지 크기로 바꿉니다. 다중 크기의 대규모 페이지를 구성하려면 목록에 더 많은 항목을 생성합니다. 마운트 지점이 소스 클라우드 구성과 일치해야 합니다.
참고채택하기 전에 컴퓨팅 서비스 노드에서 사용한
OpenStackDataPlaneNodeSetCR에서 동일한ovn-controller설정을 사용해야 합니다. 이 구성은 Open vSwitch 데이터베이스의Open_vSwitch테이블의external_ids열에 저장됩니다.$ ovs-vsctl list Open . ... external_ids : {hostname=standalone.localdomain, ovn-bridge=br-int, ovn-bridge-mappings=<bridge_mappings>, ovn-chassis-mac-mappings="datacentre:1e:0a:bb:e6:7c:ad", ovn-encap-ip="172.19.0.100", ovn-encap-tos="0", ovn-encap-type=geneve, ovn-match-northd-version=False, ovn-monitor-all=True, ovn-ofctrl-wait-before-clear="8000", ovn-openflow-probe-interval="60", ovn-remote="tcp:ovsdbserver-sb.openstack.svc:6642", ovn-remote-probe-interval="60000", rundir="/var/run/openvswitch", system-id="2eec68e6-aa21-4c95-a868-31aeafc11736"} ...각 Compute 셀에 대해
OpenStackDataPlaneNodeSetCR을 배포합니다.$ for CELL in $(echo $RENAMED_CELLS); do > test -f nodeset-${CELL}.yaml || continue > oc apply -f nodeset-${CELL}.yaml > doneBlock Storage 서비스(cinder)에 Red Hat Ceph Storage 백엔드를 사용하는 경우 채택된 데이터 플레인 워크로드를 준비합니다.
$ for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc patch osdpns/openstack-$CELL --type=merge --patch " spec: services: - redhat - bootstrap - download-cache - configure-network - validate-network - install-os - configure-os - ssh-known-hosts - run-os - reboot-os - ceph-client - install-certs - ovn - neutron-metadata - libvirt - nova-$CELL - telemetry nodeTemplate: extraMounts: - extraVolType: Ceph volumes: - name: ceph secret: secretName: ceph-conf-files mounts: - name: ceph mountPath: "/etc/ceph" readOnly: true " done참고ceph-client및ceph-hci-pre서비스를 제외하고 원래OpenStackDataPlaneNodeSetCR의 동일한 서비스 목록을 사용해야 합니다.선택사항:
OpenStackDataPlaneNodeSetCR에서neutron-sriov-nic-agent를 활성화합니다.$ for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[ { "op": "add", "path": "/spec/services/-", "value": "neutron-sriov" }, { "op": "add", "path": "/spec/nodeTemplate/ansible/ansibleVars/edpm_neutron_sriov_agent_SRIOV_NIC_physical_device_mappings", "value": "dummy_sriov_net:dummy-dev" }, { "op": "add", "path": "/spec/nodeTemplate/ansible/ansibleVars/edpm_neutron_sriov_agent_SRIOV_NIC_resource_provider_bandwidths", "value": "dummy-dev:40000000:40000000" }, { "op": "add", "path": "/spec/nodeTemplate/ansible/ansibleVars/edpm_neutron_sriov_agent_SRIOV_NIC_resource_provider_hypervisors", "value": "dummy-dev:standalone.localdomain" }]' done선택사항:
OpenStackDataPlaneNodeSetCR에서neutron-dhcp를 활성화합니다.$ for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[ { "op": "add", "path": "/spec/services/-", "value": "neutron-dhcp" }]' done참고Bare Metal Provisioning 서비스(ironic)에 대해 OVN과 함께
neutron-dhcp를 사용하려면 Networking 서비스(neutron)의disable_ovn_dhcp_for_baremetal_ports구성 옵션을true로 설정해야 합니다.NeutronAPI사양에서 이 구성을 설정할 수 있습니다... spec: serviceUser: neutron ... customServiceConfig: | [DEFAULT] dhcp_agent_notification = True [ovn] disable_ovn_dhcp_for_baremetal_ports = truepre-adoption 검증을 실행합니다.
검증 서비스를 생성합니다.
$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneService metadata: name: pre-adoption-validation spec: playbook: osp.edpm.pre_adoption_validation EOF검증만 실행하는
OpenStackDataPlaneDeploymentCR을 생성합니다.$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: openstack-pre-adoption spec: nodeSets: $NODESETS servicesOverride: - pre-adoption-validation EOF참고다른
OpenStackDataPlaneServiceCR에 대해 다른 마이그레이션 SSH 키를 생성한 경우 셀을 나타내는 각 노드 세트 또는 노드 세트에 대해 별도의OpenStackDataPlaneDeploymentCR도 정의해야 합니다.검증이 완료되면 Ansible EE Pod의 상태가
Completed인지 확인합니다.$ watch oc get pod -l app=openstackansibleee$ oc logs -l app=openstackansibleee -f --max-log-requests 20배포가
Ready상태가 될 때까지 기다립니다.$ oc wait --for condition=Ready openstackdataplanedeployment/openstack-pre-adoption --timeout=10m중요openstack-pre-adoption 검증이 실패하는 경우 Ansible 로그를 참조하여 실패한 항목을 확인한 다음 다음 문제 해결 옵션을 시도해야 합니다.
-
호스트 이름 검증에 실패한 경우 데이터 플레인 노드의 호스트 이름이
OpenStackDataPlaneNodeSetCR에 올바르게 나열되어 있는지 확인합니다. -
커널 인수 검사에 실패한 경우
OpenStackDataPlaneNodeSetCR의edpm_kernel_args및edpm_kernel_hugepages변수의 커널 인수 구성이 RHOSP(Red Hat OpenStack Platform) 17.1 노드에서 사용한 커널 인수 구성과 동일한지 확인합니다. -
tuned 프로필 검사에 실패한 경우
OpenStackDataPlaneNodeSetCR의edpm_tuned_profile변수가 RHOSP 17.1 노드에 설정된 것과 동일한 프로필을 사용하도록 구성되어 있는지 확인합니다.
-
호스트 이름 검증에 실패한 경우 데이터 플레인 노드의 호스트 이름이
나머지 director Operator 서비스를 제거합니다.
OpenStackDataPlaneServiceCR을 생성하여 채택 중인 데이터 플레인 서비스를 정리합니다.$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneService metadata: name: tripleo-cleanup spec: playbook: osp.edpm.tripleo_cleanup EOFOpenStackDataPlaneDeploymentCR을 생성하여 정리를 실행합니다.$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: tripleo-cleanup spec: nodeSets: $NODESETS servicesOverride: - tripleo-cleanup EOF
정리가 완료되면
OpenStackDataPlaneDeploymentCR을 배포합니다.$ oc apply -f - <<EOF apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: openstack spec: nodeSets: $NODESETS EOF참고Networker 노드와 같이 배포할 다른 노드 세트가 있는 경우 이 단계의
nodeSets목록에 추가하거나 나중에 별도의OpenStackDataPlaneDeploymentCR을 생성할 수 있습니다. 배포 후에는OpenStackDataPlaneDeploymentCR에 새 노드 세트를 추가할 수 없습니다.
검증
모든 Ansible EE Pod가
Completed상태에 도달하는지 확인합니다.$ watch oc get pod -l app=openstackansibleee$ oc logs -l app=openstackansibleee -f --max-log-requests 20데이터 플레인 노드 세트가
Ready상태가 될 때까지 기다립니다.$ for CELL in $(echo $RENAMED_CELLS); do > oc wait --for condition=Ready osdpns/openstack-$CELL --timeout=30m > doneNetworking 서비스(neutron) 에이전트가 실행 중인지 확인합니다.
$ oc exec openstackclient -- openstack network agent list +--------------------------------------+------------------------------+------------------------+-------------------+-------+-------+----------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+------------------------------+------------------------+-------------------+-------+-------+----------------------------+ | 174fc099-5cc9-4348-b8fc-59ed44fcfb0e | DHCP agent | standalone.localdomain | nova | :-) | UP | neutron-dhcp-agent | | 10482583-2130-5b0d-958f-3430da21b929 | OVN Metadata agent | standalone.localdomain | | :-) | UP | neutron-ovn-metadata-agent | | a4f1b584-16f1-4937-b2b0-28102a3f6eaa | OVN Controller agent | standalone.localdomain | | :-) | UP | ovn-controller | +--------------------------------------+------------------------------+------------------------+-------------------+-------+-------+----------------------------+
director Operator 셀 컨트롤러에서 모든 서비스를 제거한 후 셀 컨트롤러를 분리할 수 있습니다. 새 셀 컴퓨팅 노드를 생성하려면 해제된 컨트롤러를 새 데이터 플레인 호스트로 다시 프로비저닝하고 해당 셀 또는 새 셀의 노드 세트에 추가합니다.
다음 단계
- Compute 서비스에서 빠른 업그레이드를 수행해야 합니다. 자세한 내용은 Compute 서비스에서 빠른 업그레이드 수행을 참조하십시오.