diff options
author | Roy Tang <roy.s.tang@att.com> | 2019-10-02 19:33:33 +0000 |
---|---|---|
committer | Roy Tang <roy.s.tang@att.com> | 2019-12-04 19:59:09 +0000 |
commit | f23db145a7d5c425b12d346cb99e462ce5e9a815 (patch) | |
tree | 9e1153e427d739c831fbbd71ee153b92310520bd | |
parent | 77a1f5b22527c07f186e4d961ae1febe3fda2801 (diff) |
Deploy ovs-dpdk to pod18
This ps creates artifacts needed to support deployment
of ovs-dpdk. Most of the common artifacts are under
cntt umbrella, but currently only deploys to pod18.
Signed-off-by: Roy Tang <roy.s.tang@att.com>
Change-Id: Id02abc1b907ad33b423466acae21ad6c88dbd246
17 files changed, 998 insertions, 58 deletions
diff --git a/site/intel-pod18/baremetal/nodes.yaml b/site/intel-pod18/baremetal/nodes.yaml index 1a9de66..b7c7fb4 100644 --- a/site/intel-pod18/baremetal/nodes.yaml +++ b/site/intel-pod18/baremetal/nodes.yaml @@ -29,6 +29,10 @@ # # TODO: Include the hostname naming convention # +# OVS-DPDK NOTE: Use the following host_profile for your nodes: +# For ovs kernel: cp-intel-s2600wt or dp-intel-s2600wt +# For ovs dpdk: cp-intel-s2600wt-dpdk or dp-intel-s2600wt-dpdk +# schema: 'drydock/BaremetalNode/v1' metadata: schema: 'metadata/Document/v1' @@ -102,7 +106,7 @@ data: # including Genesis. Note Genesis won't actually be listed in this file as a # BaremetalNode, but the rest are. # This is the second "primary" control plane node after Genesis. - host_profile: cp-intel-s2600wt + host_profile: cp-intel-s2600wt-dpdk metadata: tags: # NEWSITE-CHANGEME: See previous comment. Apply 'masters' tag for control @@ -141,7 +145,7 @@ data: address: 10.10.184.23 # NEWSITE-CHANGEME: The next node's host profile # This is the third "primary" control plane profile after genesis - host_profile: cp-intel-s2600wt + host_profile: cp-intel-s2600wt-dpdk metadata: # NEWSITE-CHANGEME: The next node's rack designation rack: pod18-rack @@ -176,7 +180,7 @@ data: address: 10.10.184.24 # NEWSITE-CHANGEME: The next node's host profile # This is the one and only appearance of the "secondary" control plane profile - host_profile: dp-intel-s2600wt + host_profile: dp-intel-s2600wt-dpdk metadata: # NEWSITE-CHANGEME: The next node's rack designation rack: pod18-rack @@ -210,7 +214,7 @@ data: - network: management address: 10.10.184.25 # NEWSITE-CHANGEME: The next node's host profile - host_profile: dp-intel-s2600wt + host_profile: dp-intel-s2600wt-dpdk metadata: # NEWSITE-CHANGEME: The next node's rack designation rack: pod18-rack diff --git a/site/intel-pod18/profiles/genesis.yaml b/site/intel-pod18/profiles/genesis.yaml new file mode 100644 index 0000000..bb655d9 --- /dev/null +++ b/site/intel-pod18/profiles/genesis.yaml @@ -0,0 +1,50 @@ +--- +# OVS-DPDK NOTE: +# To support ovs-dpdk deployment, need to add dynamic label "sriov=enabled" +# to genesis node, hence the need for this override here. +schema: promenade/Genesis/v1 +metadata: + schema: metadata/Document/v1 + name: genesis + replacement: true + layeringDefinition: + abstract: false + layer: site + parentSelector: + name: genesis-cntt + actions: + - method: merge + path: . + storagePolicy: cleartext +data: + labels: + dynamic: + - beta.kubernetes.io/fluentd-ds-ready=true + - calico-etcd=enabled + - ceph-mds=enabled + - ceph-mon=enabled + - ceph-osd=enabled + - ceph-rgw=enabled + - ceph-mgr=enabled + - ceph-bootstrap=enabled + - tenant-ceph-control-plane=enabled + - tenant-ceph-mon=enabled + - tenant-ceph-rgw=enabled + - tenant-ceph-mgr=enabled + - kube-dns=enabled + - kube-ingress=enabled + - kubernetes-apiserver=enabled + - kubernetes-controller-manager=enabled + - kubernetes-etcd=enabled + - kubernetes-scheduler=enabled + - promenade-genesis=enabled + - ucp-control-plane=enabled + - maas-rack=enabled + - maas-region=enabled + - ceph-osd-bootstrap=enabled + - openstack-control-plane=enabled + - openvswitch=enabled + - openstack-l3-agent=enabled + - node-exporter=enabled + - sriov=enabled +... diff --git a/site/intel-pod18/software/charts/osh/openstack-compute-kit/chart-group.yaml b/site/intel-pod18/software/charts/osh/openstack-compute-kit/chart-group.yaml new file mode 100644 index 0000000..73396e7 --- /dev/null +++ b/site/intel-pod18/software/charts/osh/openstack-compute-kit/chart-group.yaml @@ -0,0 +1,26 @@ +--- +# OVS-DPDK NOTE: +# This replacement chartgroup deploys libvirt, openvswitch, neutron and nova +# that contains config changes needed to support ovs-dpdk deployment. +schema: armada/ChartGroup/v1 +metadata: + schema: metadata/Document/v1 + name: openstack-compute-kit + replacement: true + layeringDefinition: + abstract: false + layer: site + parentSelector: + name: openstack-compute-kit-chart-group-global + actions: + - method: merge + path: . + storagePolicy: cleartext +data: + description: Deploy Nova, Neutron, Openvswitch, and Libvirt for DPDK + chart_group: + - libvirt-ovsdpdk + - openvswitch-dpdk + - neutron-ovsdpdk + - nova-ovsdpdk +... diff --git a/site/intel-pod18/software/charts/osh/openstack-compute-kit/nova.yaml b/site/intel-pod18/software/charts/osh/openstack-compute-kit/nova.yaml deleted file mode 100644 index b730f0d..0000000 --- a/site/intel-pod18/software/charts/osh/openstack-compute-kit/nova.yaml +++ /dev/null @@ -1,46 +0,0 @@ ---- -# This file defines hardware-specific settings for nova. If you use the same -# hardware profile as this environment, you should not need to change this file. -# Otherwise, you should review the settings here and adjust for your hardware. -# In particular: -# 1. vcpu_pin_set will change if the number of logical CPUs on the hardware -# changes. -# 2. pci alias / passthrough_whitelist could change if the NIC type or NIC -# slotting changes. -# TODO: Should move to global layer and become tied to the hardware profile -schema: armada/Chart/v1 -metadata: - schema: metadata/Document/v1 - name: nova - layeringDefinition: - abstract: false - layer: site - parentSelector: - name: nova-global - actions: - - method: merge - path: . - storagePolicy: cleartext - substitutions: - - src: - schema: drydock/HardwareProfile/v1 - name: intel-s2600wt - path: .cpu_sets.kvm - dest: - path: .values.conf.nova.DEFAULT.vcpu_pin_set -data: - values: - network: - backend: - - openvswitch - - sriov - conf: - nova: - filter_scheduler: - available_filters: "nova.scheduler.filters.all_filters" - enabled_filters: "RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateInstanceExtraSpecsFilter,AggregateCoreFilter,AggregateRamFilter,AggregateMultiTenancyIsolation,JsonFilter,IoOpsFilter,AggregateDiskFilter,AllHostsFilter,IsolatedHostsFilter,AggregateImagePropertiesIsolation,PciPassthroughFilter,AggregateIoOpsFilter,NumInstancesFilter,AggregateNumInstancesFilter,MetricsFilter,SimpleCIDRAffinityFilter,AggregateTypeAffinityFilter,NUMATopologyFilter,ComputeCapabilitiesFilter,DifferentHostFilter,SameHostFilter" - pci: - alias: '{"name": "numa0", "capability_type": "pci", "product_id": "154c", "vendor_id": "8086", "device_type": "type-PCI"}' - passthrough_whitelist: | - [{"address": "0000:05:06.*", "physical_network": "sriovnet1"},{"address": "0000:05:07.*", "physical_network": "sriovnet1"},{"address": "0000:05:08.*", "physical_network": "sriovnet1"},{"address": "0000:05:09.*", "physical_network": "sriovnet1"}] -... diff --git a/type/cntt/network/common-addresses-ovsdpdk.yaml b/type/cntt/network/common-addresses-ovsdpdk.yaml new file mode 100644 index 0000000..18168d3 --- /dev/null +++ b/type/cntt/network/common-addresses-ovsdpdk.yaml @@ -0,0 +1,15 @@ +--- +# OVS-DPDK NOTE: +# This file provides common network config needed for ovs-dpdk +# +schema: pegleg/CommonAddresses/v1 +metadata: + schema: metadata/Document/v1 + name: common-addresses-ovsdpdk + layeringDefinition: + abstract: false + layer: type + storagePolicy: cleartext +data: + bridge_for_ovsdpdk: 'br-phy-bond0' +... diff --git a/type/cntt/profiles/genesis.yaml b/type/cntt/profiles/genesis.yaml index 54c5276..d90f000 100644 --- a/type/cntt/profiles/genesis.yaml +++ b/type/cntt/profiles/genesis.yaml @@ -6,10 +6,12 @@ schema: promenade/Genesis/v1 metadata: schema: metadata/Document/v1 - name: genesis-site + name: genesis + labels: + name: genesis-cntt layeringDefinition: abstract: false - layer: site + layer: type parentSelector: name: genesis-global actions: diff --git a/type/cntt/profiles/hardware/intel-s2600wt.yaml b/type/cntt/profiles/hardware/intel-s2600wt.yaml index 94fba0e..e023254 100644 --- a/type/cntt/profiles/hardware/intel-s2600wt.yaml +++ b/type/cntt/profiles/hardware/intel-s2600wt.yaml @@ -107,9 +107,31 @@ data: dev_type: 'ST91000640NS' bus_type: 'scsi' cpu_sets: - kvm: '4-43,48-87' + # CPUS pinning + # Host OS CPUs are inferred, and will be the remaining cores + kvm: '2-21,24-43,46-65,68-87' + # Kernel config + # Reduce OS jitter on the offloaded CPUs. + rcu_nocbs: '2-21,24-43,46-65,68-87' + # Nova config + # CPUs dedicated to tenant workload. + vcpu_pin_set: '4-21,26-43,48-65,70-87' + # OVS config + # CPUs used by OVS-DPDK processes, same as CPUs used by host OS. + # For this lab, the CPU/Numa allocation is as followed: + # NUMA node0 CPU(s): 0-21,44-65 + # NUMA node1 CPU(s): 22-43,66-87 + # So to spread them about both numa, the following is assigned: + # VCPUs 0,44,1,45,22,66,23,67 = first 4 CPU cores + dpdk-lcore-mask: '0x0C0000300000C00003' + # OVS config + # CPUs used by dpdk Poll Mode Drivers (PMD) + # OVS configu paramter for DPDK. + # VCPUs 2,46,3,47,24,68,25,69 CPU cores 4-7 + pmd-cpu-mask: '0x300000C0000300000C' hugepages: dpdk: size: '1G' count: 32 + socket-mem: '4096,4096' ... diff --git a/type/cntt/profiles/host/cp-intel-s2600wt-dpdk.yaml b/type/cntt/profiles/host/cp-intel-s2600wt-dpdk.yaml new file mode 100644 index 0000000..c8301df --- /dev/null +++ b/type/cntt/profiles/host/cp-intel-s2600wt-dpdk.yaml @@ -0,0 +1,127 @@ +--- +# The primary control plane host profile for Airship for DELL R720s, and +# should not need to be altered if you are using matching HW. The active +# participants in the Ceph cluster run on this profile. Other control plane +# services are not affected by primary vs secondary designation. +# +# OVS-DPDK NOTE: +# This host profile updated to support ovs-dpdk deployment. + +schema: drydock/HostProfile/v1 +metadata: + schema: metadata/Document/v1 + name: cp-intel-s2600wt-dpdk + storagePolicy: cleartext + layeringDefinition: + abstract: false + layer: site + parentSelector: + hosttype: cp-global + actions: + - method: replace + path: .interfaces + - method: replace + path: .storage + - method: merge + path: . + substitutions: + - dest: + path: .interfaces.data2.sriov.device + src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .device_aliases.data_nic2.address + - dest: + path: .platform.kernel_params.dpdk-socket-mem + src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .hugepages.dpdk.socket-mem +data: + hardware_profile: intel-s2600wt + + primary_network: dmz + interfaces: + dmz: + device_link: dmz + slaves: + - ctrl_nic1 + networks: + - dmz + admin: + device_link: admin + slaves: + - ctrl_nic2 + networks: + - admin + data1: + device_link: data1 + slaves: + - data_nic1 + networks: + - private + - management + data2: + device_link: data2 + slaves: + - data_nic2 + networks: + - storage + - public + sriov: + num_vfs: 32 + promisc: false + ovs_dpdk: + vf_index: 0 + + storage: + physical_devices: + bootdisk: + labels: + bootdrive: 'true' + partitions: + - name: 'root' + size: '30g' + bootable: true + filesystem: + mountpoint: '/' + fstype: 'ext4' + mount_options: 'defaults' + - name: 'boot' + size: '1g' + filesystem: + mountpoint: '/boot' + fstype: 'ext4' + mount_options: 'defaults' + - name: 'var_log' + size: '100g' + filesystem: + mountpoint: '/var/log' + fstype: 'ext4' + mount_options: 'defaults' + - name: 'var' + size: '>100g' + filesystem: + mountpoint: '/var' + fstype: 'ext4' + mount_options: 'defaults' + + platform: + image: 'xenial' + kernel: 'hwe-16.04' + kernel_params: + kernel_package: 'linux-image-4.15.0-46-generic' + intel_iommu: 'on' + iommu: 'pt' + amd_iommu: 'on' + cgroup_disable: 'hugetlb' + transparent_hugepage: 'never' + hugepagesz: 'hardwareprofile:hugepages.dpdk.size' + hugepages: 'hardwareprofile:hugepages.dpdk.count' + default_hugepagesz: 'hardwareprofile:hugepages.dpdk.size' + + metadata: + owner_data: + openstack-l3-agent: enabled + sriov: enabled +... diff --git a/type/cntt/profiles/host/dp-intel-s2600wt-dpdk.yaml b/type/cntt/profiles/host/dp-intel-s2600wt-dpdk.yaml new file mode 100644 index 0000000..1028d94 --- /dev/null +++ b/type/cntt/profiles/host/dp-intel-s2600wt-dpdk.yaml @@ -0,0 +1,144 @@ +--- +# The data plane host profile for Airship for DELL R720s, and should +# not need to be altered if you are using matching HW. The host profile is setup +# for cpu isolation (for nova pinning), hugepages, and sr-iov. +# +# OVS-DPDK NOTE: +# This host profile updated to support ovs-dpdk deployment. + +schema: drydock/HostProfile/v1 +metadata: + schema: metadata/Document/v1 + name: dp-intel-s2600wt-dpdk + storagePolicy: cleartext + layeringDefinition: + abstract: false + layer: type + parentSelector: + hosttype: dp-global + actions: + - method: replace + path: .interfaces + - method: replace + path: .storage + - method: merge + path: . + substitutions: + - dest: + path: .interfaces.data2.sriov.device + src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .device_aliases.data_nic2.address + - dest: + path: .platform.kernel_params.dpdk-socket-mem + src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .hugepages.dpdk.socket-mem + - dest: + path: .platform.kernel_params.rcu_nocbs + src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .cpu_sets.rcu_nocbs + - dest: + path: .platform.kernel_params.isolcpus + src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .cpu_sets.kvm +data: + hardware_profile: intel-s2600wt + + primary_network: dmz + interfaces: + dmz: + device_link: dmz + slaves: + - ctrl_nic1 + networks: + - dmz + admin: + device_link: admin + slaves: + - ctrl_nic2 + networks: + - admin + data1: + device_link: data1 + slaves: + - data_nic1 + networks: + - private + - management + data2: + device_link: data2 + slaves: + - data_nic2 + networks: + - storage + - public + sriov: + num_vfs: 32 + promisc: false + ovs_dpdk: + vf_index: 0 + storage: + physical_devices: + bootdisk: + labels: + bootdrive: 'true' + partitions: + - name: 'root' + size: '30g' + bootable: true + filesystem: + mountpoint: '/' + fstype: 'ext4' + mount_options: 'defaults' + - name: 'boot' + size: '1g' + filesystem: + mountpoint: '/boot' + fstype: 'ext4' + mount_options: 'defaults' + - name: 'log' + size: '100g' + filesystem: + mountpoint: '/var/log' + fstype: 'ext4' + mount_options: 'defaults' + - name: 'var' + size: '>100g' + filesystem: + mountpoint: '/var' + fstype: 'ext4' + mount_options: 'defaults' + + datadisk: + partitions: + - name: 'nova' + size: '99%' + filesystem: + mountpoint: '/var/lib/nova' + fstype: 'ext4' + mount_options: 'defaults' + + platform: + image: 'xenial' + kernel: 'hwe-16.04' + kernel_params: + kernel_package: 'linux-image-4.15.0-46-generic' + intel_iommu: 'on' + iommu: 'pt' + amd_iommu: 'on' + cgroup_disable: 'hugetlb' + transparent_hugepage: 'never' + hugepagesz: 'hardwareprofile:hugepages.dpdk.size' + hugepages: 'hardwareprofile:hugepages.dpdk.count' + default_hugepagesz: 'hardwareprofile:hugepages.dpdk.size' + metadata: + owner_data: + sriov: enabled +... diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/libvirt-ovsdpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/libvirt-ovsdpdk.yaml new file mode 100644 index 0000000..bb09f4a --- /dev/null +++ b/type/cntt/software/charts/osh/openstack-compute-kit/libvirt-ovsdpdk.yaml @@ -0,0 +1,70 @@ +--- +# OVS-DPDK NOTE: +# This chart is created to support deployment of ovs-dpdk. +# Do not use for env that uses regular ovs kernel. +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: libvirt-ovsdpdk + labels: + name: libvirt-ovsdpdk-cntt + component: libvirt + layeringDefinition: + abstract: false + layer: type + parentSelector: + name: libvirt-global + actions: + - method: merge + path: . + storagePolicy: cleartext + substitutions: + # Chart source + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .charts.osh.libvirt + dest: + path: .source + # Images + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.images.osh.libvirt + dest: + path: .values.images.tags +data: + values: + network: + backend: + - openvswitch + - sriov + dependencies: + - libvirt-htk-ovsdpdk +... +--- +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: libvirt-htk-ovsdpdk + labels: + name: libvirt-htk-ovsdpdk-cntt + component: libvirt + layeringDefinition: + abstract: false + layer: type + storagePolicy: cleartext + substitutions: + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .charts.osh.libvirt-htk + dest: + path: .source +data: + chart_name: libvirt-htk + release: libvirt-htk + namespace: libvirt-htk + values: {} + dependencies: [] +... diff --git a/site/intel-pod18/software/charts/osh/openstack-compute-kit/libvirt.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml index f7092cd..5b35bdb 100644 --- a/site/intel-pod18/software/charts/osh/openstack-compute-kit/libvirt.yaml +++ b/type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml @@ -6,7 +6,7 @@ metadata: replacement: true layeringDefinition: abstract: false - layer: site + layer: type parentSelector: name: libvirt-global actions: diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/neutron-ovsdpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/neutron-ovsdpdk.yaml new file mode 100644 index 0000000..c22f7d1 --- /dev/null +++ b/type/cntt/software/charts/osh/openstack-compute-kit/neutron-ovsdpdk.yaml @@ -0,0 +1,239 @@ +--- +# This file defines hardware-specific settings for neutron. If you use the same +# hardware profile as this environment, you should not need to change this file. +# Otherwise, you should review the settings here and adjust for your hardware. +# In particular: +# 1. logical network interface names +# 2. physical device mappigns +# TODO: Should move to global layer and become tied to the hardware profile +# +# OVS-DPDK NOTE: +# This chart is created to support deployment of ovs-dpdk. +# Do not use for env that uses regular ovs kernel. + +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: neutron-ovsdpdk + labels: + name: neutron-ovsdpdk-cntt + component: neutron + layeringDefinition: + abstract: false + layer: type + parentSelector: + name: neutron-global + component: neutron + actions: + - method: merge + path: . + storagePolicy: cleartext + substitutions: + # Chart source + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.charts.osh.neutron + dest: + path: .source + # Images + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.images.osh.neutron + dest: + path: .values.images.tags + + # OVS-DPDK settings for neutron + - src: + schema: pegleg/CommonAddresses/v1 + name: common-addresses-ovsdpdk + path: .bridge_for_ovsdpdk + dest: + - path: .values.conf.ovs_dpdk.bridges[0].name + pattern: TUNNEL_BRIDGE + - path: .values.conf.ovs_dpdk.bonds[0].bridge + pattern: TUNNEL_BRIDGE + - path: .values.conf.plugins.openvswitch_agent.ovs.bridge_mappings + pattern: TUNNEL_BRIDGE + - path: .values.network.interface.tunnel + pattern: TUNNEL_BRIDGE + ## OVS-DPDK NOTE: Using storage network for dpdk work for now + - src: + schema: drydock/Network/v1 + name: storage + path: .mtu + dest: + path: .values.conf.ovs_dpdk.bonds[0].mtu + - src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .device_aliases.data_nic2.address + dest: + path: .values.conf.ovs_dpdk.bonds[0].nics[0].pci_id + - src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .device_aliases.data_nic3.address + dest: + path: .values.conf.ovs_dpdk.bonds[0].nics[1].pci_id +data: + wait: + timeout: 1800 + test: + timeout: 900 + values: + labels: + sriov: + node_selector_key: sriov + node_selector_value: enabled + pod: + security_context: + neutron_sriov_agent: + pod: + runAsUser: 42424 + container: + neutron_sriov_agent_init: + privileged: true + runAsUser: 0 + readOnlyRootFilesystem: false + neutron_sriov_agent: + readOnlyRootFilesystem: true + privileged: true + probes: + dhcp_agent: + dhcp_agent: + readiness: + enabled: false + liveness: + enabled: false + l3_agent: + l3_agent: + readiness: + enabled: false + liveness: + enabled: false + metadata_agent: + metadata_agent: + readiness: + enabled: false + liveness: + enabled: false + ovs_agent: + ovs_agent: + liveness: + enabled: false + sriov_agent: + sriov_agent: + readiness: + enabled: false + network: + interface: + sriov: + - device: ens785f1 + num_vfs: 32 + promisc: false + - device: ens785f2 + num_vfs: 32 + promisc: false + tunnel: TUNNEL_BRIDGE + backend: + - openvswitch + - sriov + conf: + # api-paste entrypoint neutron.api.versions:Versions.factory was deprecated in Queens + # See https://docs.openstack.org/releasenotes/neutron/queens.html: + paste: + app:neutronversions: + paste.app_factory: neutron.pecan_wsgi.app:versions_factory + ovs_dpdk: + enabled: true + driver: vfio-pci + nics: [] + bridges: + - name: TUNNEL_BRIDGE + bonds: + - name: dpdkbond0 + bridge: TUNNEL_BRIDGE + # The IP from the first nic in nics list shall be used + migrate_ip: false + n_rxq: 4 + n_txq: 4 + n_rxq_size: 1024 + n_txq_size: 1024 + ovs_options: "bond_mode=active-backup" + nics: + - name: dpdk_b0s0 + vf_index: 0 + - name: dpdk_b0s1 + vf_index: 0 + plugins: + openvswitch_agent: + default: + ovs_vsctl_timeout: 30 + agent: + tunnel_types: "" + securitygroup: + enable_security_group: False + firewall_driver: neutron.agent.firewall.NoopFirewallDriver + ovs: + bridge_mappings: ovsnet:TUNNEL_BRIDGE + datapath_type: netdev + of_connect_timeout: 60 + of_request_timeout: 30 + vhostuser_socket_dir: /var/run/openvswitch/vhostuser + ml2_conf: + ml2: + mechanism_drivers: l2population,openvswitch,sriovnicswitch + ml2_type_vlan: + ## NOTE: Must have at least 1 sriov network defined + network_vlan_ranges: external,sriovnet1:100:4000,sriovnet2:100:4000,ovsnet:2:4094 + sriov_agent: + securitygroup: + firewall_driver: neutron.agent.firewall.NoopFirewallDriver + sriov_nic: + ## NOTE: Must have at least 1 sriov network to physical device + ## mapping, otherwise sriov agent readiness check + ## will fail. + physical_device_mappings: sriovnet1:ens785f1,sriovnet2:ens785f2 + exclude_devices: ens785f1:0000:05:06.0,ens785f2:05:0a.0 + # Need to wait for sriov agent to come up and configure VFs first + dependencies: + dynamic: + targeted: + openvswitch: + ovs_agent: + pod: + - requireSameNode: true + labels: + application: neutron + component: neutron-sriov-agent + dependencies: + - neutron-htk-ovsdpdk +... +--- +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: neutron-htk-ovsdpdk + labels: + name: neutron-htk-ovsdpdk-cntt + component: neutron + layeringDefinition: + abstract: false + layer: type + storagePolicy: cleartext + substitutions: + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.charts.osh.neutron-htk + dest: + path: .source +data: + chart_name: neutron-htk + release: neutron-htk + namespace: neutron-htk + values: {} + dependencies: [] +... diff --git a/site/intel-pod18/software/charts/osh/openstack-compute-kit/neutron.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml index 6cced90..cafdade 100644 --- a/site/intel-pod18/software/charts/osh/openstack-compute-kit/neutron.yaml +++ b/type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml @@ -9,11 +9,14 @@ schema: armada/Chart/v1 metadata: schema: metadata/Document/v1 - replacement: true name: neutron + replacement: true + labels: + name: neutron-cntt + component: neutron layeringDefinition: abstract: false - layer: site + layer: type parentSelector: name: neutron-global actions: diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/nova-ovsdpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/nova-ovsdpdk.yaml new file mode 100644 index 0000000..8d8c5c2 --- /dev/null +++ b/type/cntt/software/charts/osh/openstack-compute-kit/nova-ovsdpdk.yaml @@ -0,0 +1,87 @@ +--- +# OVS-DPDK NOTE: +# This chart is created to support deployment of ovs-dpdk. +# Do not use for env that uses regular ovs kernel. + +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: nova-ovsdpdk + labels: + name: nova-ovsdpdk-cntt + component: nova + layeringDefinition: + abstract: false + layer: type + parentSelector: + name: nova-global + actions: + - method: merge + path: . + storagePolicy: cleartext + substitutions: + # Chart source + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.charts.osh.nova + dest: + path: .source + # Images + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.images.osh.nova + dest: + path: .values.images.tags + - src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .cpu_sets.kvm + dest: + path: .values.conf.nova.DEFAULT.vcpu_pin_set +data: + values: + network: + backend: + - openvswitch + - sriov + conf: + nova: + filter_scheduler: + available_filters: "nova.scheduler.filters.all_filters" + enabled_filters: "RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateInstanceExtraSpecsFilter,AggregateCoreFilter,AggregateRamFilter,AggregateMultiTenancyIsolation,JsonFilter,IoOpsFilter,AggregateDiskFilter,AllHostsFilter,IsolatedHostsFilter,AggregateImagePropertiesIsolation,PciPassthroughFilter,AggregateIoOpsFilter,NumInstancesFilter,AggregateNumInstancesFilter,MetricsFilter,SimpleCIDRAffinityFilter,AggregateTypeAffinityFilter,NUMATopologyFilter,ComputeCapabilitiesFilter,DifferentHostFilter,SameHostFilter" + pci: + alias: '{"name": "numa0", "capability_type": "pci", "product_id": "154c", "vendor_id": "8086", "device_type": "type-PCI"}' + ## OVS-DPDK NOTE: Exclude vf0 from each of the sriov nic, vf0 is reserved for used by ovs to create dpdk bond. + passthrough_whitelist: | + [{"address": {"domain":"0000","bus":"05","slot":"06","function":"[1-7]"}, "physical_network": "sriovnet1"},{"address": "0000:05:07.*", "physical_network": "sriovnet1"},{"address": "0000:05:08.*", "physical_network": "sriovnet1"},{"address": "0000:05:09.*", "physical_network": "sriovnet1"}] + dependencies: + - nova-htk-ovsdpdk +... +--- +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: nova-htk-ovsdpdk + labels: + name: nova-htk-ovsdpdk-cntt + component: nova + layeringDefinition: + abstract: false + layer: type + storagePolicy: cleartext + substitutions: + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.charts.osh.nova-htk + dest: + path: .source +data: + chart_name: nova-htk + release: nova-htk + namespace: nova-htk + values: {} + dependencies: [] +... diff --git a/site/intel-pod17/software/charts/osh/openstack-compute-kit/nova.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml index b730f0d..5fd9a1c 100644 --- a/site/intel-pod17/software/charts/osh/openstack-compute-kit/nova.yaml +++ b/type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml @@ -12,11 +12,15 @@ schema: armada/Chart/v1 metadata: schema: metadata/Document/v1 name: nova + labels: + name: nova-cntt + component: nova layeringDefinition: abstract: false - layer: site + layer: type parentSelector: name: nova-global + component: nova actions: - method: merge path: . diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/openvswitch-dpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/openvswitch-dpdk.yaml new file mode 100644 index 0000000..7fe5e40 --- /dev/null +++ b/type/cntt/software/charts/osh/openstack-compute-kit/openvswitch-dpdk.yaml @@ -0,0 +1,115 @@ +--- +# OVS-DPDK NOTE: +# This chart is created to support deployment of ovs-dpdk. +# Do not use for env that uses regular ovs kernel. + +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: openvswitch-dpdk + labels: + name: openvswitch-dpdk-cntt + component: openswitch + layeringDefinition: + abstract: false + layer: type + parentSelector: + name: openvswitch-global + actions: + - method: merge + path: . + storagePolicy: cleartext + substitutions: + # Chart source + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.charts.osh.openvswitch + dest: + path: .source + # Images + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.images.osh.openvswitch + dest: + path: .values.images.tags + # OVS-DPDK config + - src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .cpu_sets.dpdk-lcore-mask + dest: + path: .values.conf.ovs_dpdk.lcore_mask + - src: + schema: drydock/HardwareProfile/v1 + name: intel-s2600wt + path: .cpu_sets.pmd-cpu-mask + dest: + path: .values.conf.ovs_dpdk.pmd_cpu_mask + - src: + schema: pegleg/CommonAddresses/v1 + name: common-addresses-ovsdpdk + path: .bridge_for_ovsdpdk + dest: + - path: .values.network.external_bridge + - path: .values.network.interface.external +data: + values: + pod: + resources: + enabled: true + ovs: + vswitchd_dpdk: + requests: + memory: "2Gi" + cpu: "2" + limits: + memory: "2Gi" + cpu: "2" + hugepages-1Gi: "1Gi" + conf: + ovs_dpdk: + enabled: true + socket_memory: 4096,4096 + vhostuser_socket_dir: vhostuser + hugepages_mountpath: /dev/hugepages + # OVS-DPDK NOTE: Need to wait for sriov agent to come up and configure VFs first + dependencies: + static: + vswitchd: + pod: + - requireSameNode: true + labels: + application: neutron + component: neutron-sriov-agent + dependencies: + - openvswitch-htk-dpdk +... +--- +schema: armada/Chart/v1 +metadata: + schema: metadata/Document/v1 + name: openvswitch-htk-dpdk + labels: + name: openvswitch-htk-dpdk-cntt + component: openvswitch + layeringDefinition: + abstract: false + layer: type + storagePolicy: cleartext + substitutions: + - src: + schema: pegleg/SoftwareVersions/v1 + name: software-versions + path: .ovs-dpdk.charts.osh.openvswitch-htk + dest: + path: .source +data: + chart_name: openvswitch-htk + release: openvswitch-htk + namespace: openvswitch-htk + values: {} + dependencies: [] +... + diff --git a/type/cntt/software/config/versions.yaml b/type/cntt/software/config/versions.yaml index 887aa64..929a182 100644 --- a/type/cntt/software/config/versions.yaml +++ b/type/cntt/software/config/versions.yaml @@ -1,4 +1,8 @@ --- +# OVS-DPDK NOTE: +# Add ovs-dpdk section to specify images and charts needed +# to support deployment of ovs-dpdk + schema: pegleg/SoftwareVersions/v1 metadata: schema: metadata/Document/v1 @@ -14,6 +18,81 @@ metadata: path: . storagePolicy: cleartext data: + ovs-dpdk: + charts: + osh: + neutron: + location: https://opendev.org/openstack/openstack-helm + reference: d2abe39d498f48c4721e26aca19e81189bc8891b + subpath: neutron + type: git + neutron-htk: + location: https://opendev.org/openstack/openstack-helm-infra + reference: d0b32ed88ad652d9c2226466a13bac8b28038399 + subpath: helm-toolkit + type: git + nova: + location: https://opendev.org/openstack/openstack-helm + reference: d2abe39d498f48c4721e26aca19e81189bc8891b + subpath: nova + type: git + nova-htk: + location: https://opendev.org/openstack/openstack-helm-infra + reference: d0b32ed88ad652d9c2226466a13bac8b28038399 + subpath: helm-toolkit + type: git + openvswitch: + location: https://opendev.org/openstack/openstack-helm-infra + reference: d0b32ed88ad652d9c2226466a13bac8b28038399 + subpath: openvswitch + type: git + openvswitch-htk: + location: https://opendev.org/openstack/openstack-helm-infra + reference: d0b32ed88ad652d9c2226466a13bac8b28038399 + subpath: helm-toolkit + type: git + images: + osh: + nova: + bootstrap: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + db_drop: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + db_init: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + ks_user: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + ks_service: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + ks_endpoints: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + nova_api: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_cell_setup: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_cell_setup_init: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + nova_compute: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_compute_ssh: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_conductor: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_consoleauth: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_db_sync: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_novncproxy: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_novncproxy_assets: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_placement: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_scheduler: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_spiceproxy: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + nova_spiceproxy_assets: "docker.io/openstackhelm/nova:stein-ubuntu_bionic" + neutron: + bootstrap: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + db_init: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + db_drop: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + ks_user: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + ks_service: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + ks_endpoints: "docker.io/openstackhelm/heat:stein-ubuntu_bionic" + neutron_db_sync: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic" + neutron_dhcp: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic" + neutron_l3: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic" + neutron_linuxbridge_agent: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic" + neutron_metadata: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic" + neutron_openvswitch_agent: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic" + neutron_server: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic" + openvswitch: + openvswitch_db_server: docker.io/openstackhelm/openvswitch:latest-ubuntu_bionic-dpdk + openvswitch_vswitchd: docker.io/openstackhelm/openvswitch:latest-ubuntu_bionic-dpdk + libvirt: + libvirt: docker.io/openstackhelm/libvirt:latest-ubuntu_bionic kernel_drivers: i40e_driver: type: tar @@ -22,4 +101,3 @@ data: type: tar location: https://sourceforge.net/projects/e1000/files/ixgbe%20stable/5.6.3/ixgbe-5.6.3.tar.gz ... - |