From 472adf7cd9294dbfc828f3eed3f00cdd8de42ae7 Mon Sep 17 00:00:00 2001 From: Miguel Angel Nieto Jimenez Date: Tue, 20 Aug 2024 12:52:43 +0200 Subject: [PATCH] Multiple nodesets for ovs-dpdk-sriov scenario Created a new dt based on ovs-dpdk-sriov va --- automation/vars/default.yaml | 59 +++++ .../edpm/deployment/.gitignore | 1 + .../edpm/deployment/kustomization.yaml | 15 ++ .../edpm/nodeset/kustomization.yaml | 6 + .../edpm/nodeset2/.gitignore | 1 + .../edpm/nodeset2/kustomization.yaml | 59 +++++ .../edpm/nodeset2/values.yaml | 230 ++++++++++++++++++ .../kustomization.yaml | 6 + .../nncp/kustomization.yaml | 6 + zuul.d/projects.yaml | 1 + zuul.d/validations.yaml | 12 + 11 files changed, 396 insertions(+) create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/.gitignore create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/kustomization.yaml create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset/kustomization.yaml create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/.gitignore create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/kustomization.yaml create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/values.yaml create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/kustomization.yaml create mode 100644 examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/nncp/kustomization.yaml diff --git a/automation/vars/default.yaml b/automation/vars/default.yaml index 29840be5f..43810c622 100644 --- a/automation/vars/default.yaml +++ b/automation/vars/default.yaml @@ -221,6 +221,65 @@ vas: src_file: values.yaml build_output: deployment.yaml + ovs-dpdk-sriov-2nodesets: + stages: + - path: examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/nncp + wait_conditions: + - >- + oc -n openstack wait nncp + -l osp/nncm-config-type=standard + --for jsonpath='{.status.conditions[0].reason}'=SuccessfullyConfigured + --timeout=60s + values: + - name: network-values + src_file: ../../../../va/nfv/ovs-dpdk-sriov/nncp/values.yaml + build_output: nncp.yaml + + - path: examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets + wait_conditions: + - >- + oc -n openstack wait osctlplane controlplane --for condition=Ready + --timeout=1200s + values: + - name: network-values + src_file: ../../../va/nfv/ovs-dpdk-sriov/nncp/values.yaml + - name: service-values + src_file: ../../../va/nfv/ovs-dpdk-sriov/service-values.yaml + build_output: control-plane.yaml + + - path: examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset + wait_conditions: + - >- + oc -n openstack wait + osdpns openstack-edpm --for condition=SetupReady + --timeout=60m + values: + - name: edpm-nodeset-values + src_file: ../../../../../va/nfv/ovs-dpdk-sriov/edpm/nodeset/values.yaml + build_output: nodeset.yaml + + - path: examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2 + wait_conditions: + - >- + oc -n openstack wait + osdpns openstack-edpm-2 --for condition=SetupReady + --timeout=60m + values: + - name: edpm-nodeset2-values + src_file: values.yaml + build_output: nodeset2.yaml + + - path: examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment + wait_conditions: + - >- + oc -n openstack wait + osdpns openstack-edpm --for condition=Ready + --timeout=60m + values: + - name: edpm-deployment-values + src_file: ../../../../../va/nfv/ovs-dpdk-sriov/edpm/deployment/values.yaml + build_output: deployment.yaml + nfv-ovs-dpdk-sriov-hci: stages: - path: examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/control-plane/nncp diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/.gitignore b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/.gitignore new file mode 100644 index 000000000..56387c5df --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/.gitignore @@ -0,0 +1 @@ +dataplane-deployment.yaml \ No newline at end of file diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/kustomization.yaml b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/kustomization.yaml new file mode 100644 index 000000000..69898b18c --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment/kustomization.yaml @@ -0,0 +1,15 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../../../va/nfv/ovs-dpdk-sriov/edpm/deployment + +patches: + - target: + kind: OpenStackDataPlaneDeployment + name: edpm-deployment + patch: | + - op: add + path: /spec/nodeSets/- + value: openstack-edpm-2 diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset/kustomization.yaml b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset/kustomization.yaml new file mode 100644 index 000000000..3cfe9c7c9 --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../../../va/nfv/ovs-dpdk-sriov/edpm/nodeset diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/.gitignore b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/.gitignore new file mode 100644 index 000000000..7358689c2 --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/.gitignore @@ -0,0 +1 @@ +dataplane-nodeset-2.yaml diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/kustomization.yaml b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/kustomization.yaml new file mode 100644 index 000000000..a03831aeb --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/kustomization.yaml @@ -0,0 +1,59 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: + - ../../../../../../va/nfv/ovs-dpdk-sriov/edpm/nodeset/ + # - https://github.com/openstack-k8s-operators/architecture/va/nfv/ovs-dpdk-sriov/edpm/nodeset?ref=main + ## It's possible to replace ../../../../../../va/nfv/ovs-dpdk-sriov/edpm/nodeset/ with a git checkout URL + ## as per: https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md + +resources: + - values.yaml + +patches: + - target: + kind: ConfigMap + name: sriov-nova + patch: |- + - op: replace + path: /metadata/name + value: sriov-nova-2 + - target: + kind: ConfigMap + name: ovs-dpdk-sriov-cpu-pinning-nova + patch: |- + - op: replace + path: /metadata/name + value: ovs-dpdk-sriov-cpu-pinning-nova-2 + - target: + kind: OpenStackDataPlaneService + name: nova-custom-ovsdpdksriov + patch: |- + - op: replace + path: /metadata/name + value: nova-custom-ovsdpdksriov-2 + - op: replace + path: /spec/label + value: nova-custom-ovsdpdksriov-2 + - op: replace + path: /spec/dataSources/0/configMapRef/name + value: ovs-dpdk-sriov-cpu-pinning-nova-2 + - op: replace + path: /spec/dataSources/1/configMapRef/name + value: sriov-nova-2 + - target: + kind: OpenStackDataPlaneNodeSet + name: openstack-edpm + patch: |- + - op: replace + path: /metadata/name + value: openstack-edpm-2 + - op: replace + path: /spec/baremetalSetTemplate/bmhLabelSelector/app + value: openstack-2 + - op: replace + path: /spec/services/16 + value: nova-custom-ovsdpdksriov-2 + - op: remove + path: /spec/services/8 diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/values.yaml b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/values.yaml new file mode 100644 index 000000000..ee03de542 --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/values.yaml @@ -0,0 +1,230 @@ +--- +# yamllint disable rule:line-length + +# local-config: referenced, but not emitted by kustomize +apiVersion: v1 +kind: ConfigMap +metadata: + name: edpm-nodeset-values + annotations: + config.kubernetes.io/local-config: "true" +data: + root_password: cmVkaGF0Cg== + preProvisioned: false + baremetalSetTemplate: + ctlplaneInterface: eno2 # CHANGEME + cloudUserName: cloud-admin + provisioningInterface: enp1s0 # CHANGEME + bmhLabelSelector: + app: openstack # CHANGEME + passwordSecret: + name: baremetalset-password-secret + namespace: openstack + ssh_keys: + # Authorized keys that will have access to the dataplane computes via SSH + authorized: CHANGEME + # The private key that will have access to the dataplane computes via SSH + private: CHANGEME2 + # The public key that will have access to the dataplane computes via SSH + public: CHANGEME3 + nodeset: + ansible: + ansibleUser: cloud-admin + ansiblePort: 22 + ansibleVars: + # CHANGEME -- see https://access.redhat.com/solutions/253273 + # edpm_bootstrap_command: | + # subscription-manager register --username \ + # --password + # podman login -u -p registry.redhat.io + timesync_ntp_servers: + - hostname: pool.ntp.org + # CPU pinning settings + # edpm nfv ovs dpdk config + # CHANGEME + # yamllint disable-line rule:line-length + edpm_kernel_args: "default_hugepagesz=1GB hugepagesz=1G hugepages=64 iommu=pt intel_iommu=on tsx=off isolcpus=2-11,14-23" + edpm_tuned_profile: "cpu-partitioning-powersave" + edpm_tuned_isolated_cores: "2-11,14-23" + edpm_nova_libvirt_qemu_group: "hugetlbfs" + edpm_ovs_dpdk_pmd_core_list: "1,13,2,14,3,15" + edpm_ovs_dpdk_socket_memory: "4096" + edpm_ovs_dpdk_memory_channels: "4" + edpm_ovs_dpdk_vhost_postcopy_support: "true" + edpm_ovn_bridge_mappings: ['dpdk-mgmt:br-link1', 'dpdk2:br-link2'] + # edpm nfv sriov config + edpm_neutron_sriov_agent_SRIOV_NIC_physical_device_mappings: 'sriov1:eno5,sriov2:eno6' + # edpm_network_config + # These vars are edpm_network_config role vars + edpm_network_config_hide_sensitive_logs: false + edpm_network_config_os_net_config_mappings: + # Need to provide nic mapping based on system uuid or system product name + # here used systetm uuid + edpm-compute-0: # CHANGEME + nic1: 6c:fe:54:3f:8a:01 # CHANGEME + nic2: 6c:fe:54:3f:8a:02 # CHANGEME + nic3: 6c:fe:54:3f:8a:03 # CHANGEME + nic4: 6c:fe:54:3f:8a:04 # CHANGEME + nic5: 6c:fe:54:3f:8a:05 # CHANGEME + nic6: 6c:fe:54:3f:8a:06 # CHANGEME + nic7: 6c:fe:54:3f:8a:07 # CHANGEME + 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 }} + 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: nic2 + mtu: {{ min_viable_mtu }} + # force the MAC address of the bridge to this interface + primary: true + {% for network in nodeset_networks if network not in ['external', 'tenant'] %} + - 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 %} + - type: ovs_user_bridge + name: br-link1 + use_dhcp: false + ovs_extra: "set port br-link1 tag={{ lookup('vars', networks_lower['tenant'] ~ '_vlan_id') }}" + addresses: + - ip_netmask: {{ lookup('vars', networks_lower['tenant'] ~ '_ip') }}/{{ lookup('vars', networks_lower['tenant'] ~ '_cidr') }} + mtu: {{ lookup('vars', networks_lower['tenant'] ~ '_mtu') }} + members: + - type: ovs_dpdk_bond + name: dpdkbond0 + mtu: 9000 + rx_queue: 1 + ovs_options: "bond_mode=balance-tcp lacp=active other_config:lacp-time=fast other-config:lacp-fallback-ab=true other_config:lb-output-action=true" + members: + - type: ovs_dpdk_port + name: dpdk0 + members: + - type: interface + name: nic3 + - type: ovs_dpdk_port + name: dpdk1 + members: + - type: interface + name: nic4 + + - type: ovs_user_bridge + name: br-link2 + mtu: 9000 + use_dhcp: false + members: + - type: ovs_dpdk_port + name: dpdk2 + mtu: 9000 + rx_queue: 2 + members: + - type: interface + name: nic5 + - type: sriov_pf + name: nic6 + numvfs: 10 + mtu: 9000 + use_dhcp: false + promisc: true + - type: sriov_pf + name: nic7 + numvfs: 10 + mtu: 9000 + use_dhcp: false + promisc: true + # These vars are for the network config templates themselves and are + # considered EDPM network defaults. + neutron_physical_bridge_name: br-ex + neutron_public_interface_name: nic1 + # edpm_nodes_validation + edpm_nodes_validation_validate_controllers_icmp: false + edpm_nodes_validation_validate_gateway_icmp: false + dns_search_domains: [] + 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 + networks: + - defaultRoute: true + name: ctlplane + subnetName: subnet1 + - name: internalapi + subnetName: subnet1 + - name: storage + subnetName: subnet1 + - name: tenant + subnetName: subnet1 + nodes: + edpm-compute-0: + hostName: edpm-compute-0 + edpm-compute-1: + hostName: edpm-compute-1 + services: + - bootstrap + - download-cache + - reboot-os + - configure-ovs-dpdk + - configure-network + - validate-network + - install-os + - configure-os + - ssh-known-hosts + - run-os + - install-certs + - ovn + - neutron-ovn-igmp + - neutron-metadata + - neutron-sriov + - libvirt + - nova-custom-ovsdpdksriov + - telemetry + nova: + compute: + conf: | + # CHANGEME + [DEFAULT] + reserved_host_memory_mb = 4096 + [compute] + cpu_shared_set = 0-3,24-27 + cpu_dedicated_set = 8-23,32-47 + [neutron] + physnets = dpdk1, dpdk2 + [neutron_physnet_dpdk1] + numa_nodes = 0 + [neutron_physnet_dpdk2] + numa_nodes = 0 + [neutron_tunnel] + numa_nodes = 0 + migration: + ssh_keys: + private: CHANGEME4 + public: CHANGEME5 + pci: + # yamllint disable-line rule:line-length + conf: | + # CHANGEME + [pci] + device_spec = {"vendor_id":"8086", "product_id":"1572", "address": "0000:19:00.3", "physical_network":"sriov1", "trusted":"true"} + device_spec = {"vendor_id":"8086", "product_id":"1572", "address": "0000:20:00.3", "physical_network":"sriov2", "trusted":"true"} + neutron: + igmp: + conf: | + [ovs] + igmp_snooping_enable = False diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/kustomization.yaml b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/kustomization.yaml new file mode 100644 index 000000000..f22362647 --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../va/nfv/ovs-dpdk-sriov diff --git a/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/nncp/kustomization.yaml b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/nncp/kustomization.yaml new file mode 100644 index 000000000..a64278116 --- /dev/null +++ b/examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/nncp/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../../va/nfv/ovs-dpdk-sriov/nncp diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml index 2fa21e081..822eaad3e 100644 --- a/zuul.d/projects.yaml +++ b/zuul.d/projects.yaml @@ -9,6 +9,7 @@ - rhoso-architecture-validate-osasinfra - rhoso-architecture-validate-ovs-dpdk - rhoso-architecture-validate-ovs-dpdk-sriov + - rhoso-architecture-validate-ovs-dpdk-sriov-2nodesets - rhoso-architecture-validate-pidone - rhoso-architecture-validate-sriov - rhoso-architecture-validate-uni01alpha diff --git a/zuul.d/validations.yaml b/zuul.d/validations.yaml index 20695b40e..cb3fac06a 100644 --- a/zuul.d/validations.yaml +++ b/zuul.d/validations.yaml @@ -90,6 +90,18 @@ parent: rhoso-architecture-base-job vars: cifmw_architecture_scenario: ovs-dpdk-sriov +- job: + files: + - examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets + - examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/deployment + - examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset + - examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2 + - examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/nncp + - lib + name: rhoso-architecture-validate-ovs-dpdk-sriov-2nodesets + parent: rhoso-architecture-base-job + vars: + cifmw_architecture_scenario: ovs-dpdk-sriov-2nodesets - job: files: - automation/net-env/pidone.yaml