7.4. 분산 영역에 대한 OpenStackDataPlaneNodeSet CR 생성
배포의 각 영역의 사전 프로비저닝된 데이터 플레인 노드에 대한 OpenStackDataPlaneNodeSet CR(사용자 정의 리소스)을 정의합니다. 배포에 필요한 만큼 노드 세트를 정의할 수 있습니다. 각 노드는 하나의 OpenStackDataPlaneNodeSet CR에만 포함할 수 있습니다. nodeTemplate 필드를 사용하여 OpenStackDataPlaneNodeSet CR의 모든 노드에 적용할 공통 속성과 노드별 속성에 대한 nodes 필드를 구성합니다. 노드별 구성은 nodeTemplate 의 상속된 값을 재정의합니다. 다음 절차에서는 영역 1에 대한 노드 세트를 생성합니다. 각 영역에 대한 컴퓨팅 노드 및 네트워크 노드에 필요한 노드 세트를 생성하려면 절차를 반복합니다.
프로세스
워크스테이션에 파일을 생성하여 Zone 1에 설정된 노드의
OpenStackDataPlaneNodeSetCR을 정의합니다(예:compute_node_set_zone1.yaml).apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: compute-node-set-zone11 namespace: openstack spec: env:2 - name: ANSIBLE_FORCE_COLOR value: "True" - name: ANSIBLE_TIMEOUT value: "60" - name: ANSIBLE_SSH_TIMEOUT value: "60" - name: ANSIBLE_SSH_RETRIES value: "60"이 노드 세트에 대해 실행할 서비스 목록을 추가합니다.
컴퓨팅 노드 세트에 대해 다음 서비스를 지정하고
nova서비스를 노드 세트에 대해 생성한 사용자 정의 서비스로 교체합니다.services: - download-cache - bootstrap - configure-network - validate-network - install-os - configure-os - frr - ssh-known-hosts - run-os - reboot-os - install-certs - ceph-client - ovn - neutron-metadata - libvirt - *nova-custom-az1*네트워크 노드 세트에 대해 다음 서비스를 지정합니다.
services: - download-cache - bootstrap - configure-network - validate-network - install-os - configure-os - frr - ssh-known-hosts - run-os - reboot-os - install-certs - ovn - neutron-metadata - ovn-bgp-agent
데이터 플레인을 컨트롤 플레인 네트워크에 연결합니다.
spec: ... networkAttachments: - ctlplane이 세트의 노드가 사전 프로비저닝되도록 지정합니다.
preProvisioned: trueAnsible이 데이터 플레인 노드에 연결할 수 있도록 생성한 SSH 키 시크릿을 추가합니다.
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>-
<
secret-key>를 데이터 플레인 시크릿 생성 에서 생성한 SSH 키SecretCR의 이름으로 바꿉니다(예:dataplane-ansible-ssh-private-key-secret).
-
<
컴퓨팅 노드 세트를 생성하는 경우 Red Hat Ceph Storage 보안에 대한 컴퓨팅 서비스 액세스를 활성화합니다.
nodeTemplate: ... extraMounts: - extraVolType: Ceph mounts: - mountPath: /etc/ceph name: ceph readOnly: true volumes: - name: ceph secret: secretName: ceph-conf-files-az1참고Networker 노드는 Red Hat Ceph Storage 시크릿에 액세스할 필요가 없습니다.
관리 네트워크를 지정합니다.
nodeTemplate: ... managementNetwork: ctlplane노드의 운영 체제를 등록하고 리포지토리를 활성화하기 위해 사용자 이름과 암호를 소싱하는 데 사용되는
SecretCR을 지정합니다. 다음 예제에서는 노드를 Red Hat CDN(Content Delivery Network)에 등록하는 방법을 보여줍니다. Red Hat Satellite 6.13에 노드를 등록하는 방법에 대한 자세한 내용은 호스트 관리를 참조하십시오.nodeTemplate: ... ansible: ansibleUser: cloud-admin1 ansiblePort: 22 ansibleVarsFrom: - secretRef: name: subscription-manager - secretRef: name: redhat-registry ansibleVars:2 rhc_release: 9.4 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: "fast-datapath-for-rhel-9-x86_64-rpms", state: enabled} - {name: "rhoso-18.0-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: []- 1
- 데이터 플레인 시크릿 생성 에서 생성한 시크릿과 연결된 사용자입니다.
- 2
- 노드 세트를 사용자 지정하는 Ansible 변수입니다. 사용할 수 있는 Ansible 변수 목록은 https://openstack-k8s-operators.github.io/edpm-ansible/ 을 참조하십시오. Red Hat 고객 포털 등록 명령의 전체 목록은 https://access.redhat.com/solutions/253273 을 참조하십시오.
registry.redhat.io에 로그인하는 방법에 대한 자세한 내용은 https://access.redhat.com/RegistryAuthentication#creating-registry-service-accounts-6 을 참조하십시오.
OVN BGP 에이전트가 데이터 플레인의 FRRounting(FRR)과 통신하는 데 사용하는 네트워크와 BGP 피어로 인증하는 암호를 구성합니다.
nodeTemplate: ... ansible: ... ansibleVars: ... edpm_frr_bfd: false edpm_frr_bgp_ipv4_src_network: bgpmainnet edpm_frr_bgp_ipv6_src_network: bgpmainnetv6 edpm_frr_bgp_neighbor_password: f00barZ네트워크 노드 세트를 생성하는 경우
edpm_enable_chassis_gw필드를 활성화합니다.ansible: ... ansibleVars: ... edpm_enable_chassis_gw: true노드에 적용할 네트워크 구성 템플릿을 추가합니다.
edpm_network_config_hide_sensitive_logs: false edpm_network_config_os_net_config_mappings: edpm-z1-compute-0: nic2: 6a:fe:54:3f:8a:021 edpm-z1-compute-1: nic2: 6b:fe:54:3f:8a:02 neutron_physical_bridge_name: br-ex neutron_public_interface_name: eth1 edpm_network_config_template: | --- {% set mtu_list = [ctlplane_mtu] %} {% for network in nodeset_networks %} {{ 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 }} use_dhcp: false - type: interface name: nic1 use_dhcp: true defroute: false - type: interface name: nic2 use_dhcp: false defroute: false dns_servers: {{ ctlplane_dns_nameservers }} domain: {{ dns_search_domains }} addresses: - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }} - type: interface name: nic3 use_dhcp: false addresses: - ip_netmask: {{ lookup('vars', 'bgpnet0_ip') }}/30 - type: interface name: nic4 use_dhcp: false addresses: - ip_netmask: {{ lookup('vars', 'bgpnet1_ip') }}/30 - type: interface name: lo addresses: - ip_netmask: {{ lookup('vars', 'bgpmainnet_ip') }}/32 - ip_netmask: {{ lookup('vars', 'bgpmainnetv6_ip') }}/128 - ip_netmask: {{ lookup('vars', 'internalapi_ip') }}/32 - ip_netmask: {{ lookup('vars', 'storage_ip') }}/322 - ip_netmask: {{ lookup('vars', 'tenant_ip') }}/32BGP를 사용할 때 필요하지 않은 검증을 비활성화합니다.
edpm_nodes_validation_validate_controllers_icmp: false edpm_nodes_validation_validate_gateway_icmp: false테넌트 네트워크를 노출하지 않도록 OVN BGP 에이전트를 구성합니다.
edpm_ovn_bgp_agent_expose_tenant_networks: false로컬
테넌트네트워크 대신bgpmainnet을 사용하여 BGP를 통해 터널을 설정하도록 OVN을 구성합니다.edpm_ovn_encap_ip: '{{ lookup(''vars'', ''bgpmainnet_ip'') }}이 노드 세트의 각 노드를 정의합니다.
nodes: edpm-z1-compute-0:1 hostName: edpm-z1-compute-0 networks:2 - name: ctlplane subnetName: subnet1 defaultRoute: true fixedIP: 192.168.122.1003 - name: internalapi subnetName: subnet1 - name: storage4 subnetName: subnet1 - name: tenant subnetName: subnet1 - name: Bgpnet0 subnetName: subnet1 fixedIP: 100.64.0.2 - name: Bgpnet1 subnetName: subnet1 fixedIP: 100.65.0.2 - name: Bgpmainnet subnetName: subnet1 fixedIP: 99.99.0.2 - name: BgpmainnetV6 subnetName: subnet0 fixedIP: f00d:f00d:f00d:f00d:f00d:f00d:f00d:0012 ansible: ansibleHost: 192.168.122.100 ansibleVars:5 edpm_frr_bgp_peers: - 100.64.0.1 - 100.65.0.1 edpm_ovn_bgp_agent_local_ovn_peer_ips: - 100.64.0.1 - 100.65.0.1 edpm-z1-compute-1: hostName: edpm-z1-compute-1 networks: - name: ctlplane subnetName: subnet1 defaultRoute: true fixedIP: 192.168.122.101 - name: internalapi subnetName: subnet1 - name: storage subnetName: subnet1 - name: tenant subnetName: subnet1 - name: Bgpnet0 subnetName: subnet1 fixedIP: 100.64.0.6 - name: Bgpnet1 subnetName: subnet1 fixedIP: 100.65.0.6 - name: Bgpmainnet subnetName: subnet1 fixedIP: 99.99.0.3 - name: BgpmainnetV6 subnetName: subnet0 fixedIP: f00d:f00d:f00d:f00d:f00d:f00d:f00d:0013 edpm-z1-compute-2: hostName: edpm-z1-compute-2 networks: - name: ctlplane subnetName: subnet1 defaultRoute: true fixedIP: 192.168.122.102 - name: internalapi subnetName: subnet1 - name: storage subnetName: subnet1 - name: tenant subnetName: subnet1 - name: Bgpnet0 subnetName: subnet1 fixedIP: 100.64.0.10 - name: Bgpnet1 subnetName: subnet1 fixedIP: 100.65.0.10 - name: Bgpmainnet subnetName: subnet1 fixedIP: 99.99.0.4 - name: BgpmainnetV6 subnetName: subnet0 fixedIP: f00d:f00d:f00d:f00d:f00d:f00d:f00d:0014참고-
nodes섹션에 정의된 노드는nodeTemplate섹션에 구성된 동일한 Ansible 변수를 구성할 수 있습니다. 특정 노드 및nodeTemplate섹션 모두에 대해 Ansible 변수가 구성된 경우 노드별 값은nodeTemplate섹션의 해당 변수를 재정의합니다. -
기본값을 재정의하고 일부 노드별 값을 설정하기 위해 노드의 모든
nodeTemplateAnsible 변수를 복제할 필요는 없습니다. 노드에 대해 재정의할 Ansible 변수만 구성해야 합니다. -
많은
ansibleVars에는 "외부 데이터 플레인 관리"를 나타내는 이름에edpm이 포함되어 있습니다.
-
- 정의 파일을 저장합니다.
zone 1:에 대한 노드 세트를 생성합니다.
$ oc create --save-config -f compute_node_set_zone1.yaml -n openstack상태가
SetupReady:인지 확인하여 리소스가 생성되었는지 확인합니다.$ oc wait openstackdataplanenodeset compute-node-set-zone1 --for condition=SetupReady --timeout=10m상태가
SetupReady이면 명령에서condition met메시지를 반환하고, 그렇지 않으면 시간 초과 오류가 반환됩니다.노드 세트에 대해
Secret리소스가 생성되었는지 확인합니다.$ oc get secret | grep openstack-data-plane compute-node-set-zone1 Opaque 1 3m50s서비스가 생성되었는지 확인합니다.
$ oc get openstackdataplaneservice -n openstack NAME AGE bootstrap 46m ceph-client 46m ceph-hci-pre 46m configure-network 46m configure-os 46m ...