summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Tang <roy.s.tang@att.com>2019-10-02 19:33:33 +0000
committerRoy Tang <roy.s.tang@att.com>2019-12-04 19:59:09 +0000
commitf23db145a7d5c425b12d346cb99e462ce5e9a815 (patch)
tree9e1153e427d739c831fbbd71ee153b92310520bd
parent77a1f5b22527c07f186e4d961ae1febe3fda2801 (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
-rw-r--r--site/intel-pod18/baremetal/nodes.yaml12
-rw-r--r--site/intel-pod18/profiles/genesis.yaml50
-rw-r--r--site/intel-pod18/software/charts/osh/openstack-compute-kit/chart-group.yaml26
-rw-r--r--site/intel-pod18/software/charts/osh/openstack-compute-kit/nova.yaml46
-rw-r--r--type/cntt/network/common-addresses-ovsdpdk.yaml15
-rw-r--r--type/cntt/profiles/genesis.yaml6
-rw-r--r--type/cntt/profiles/hardware/intel-s2600wt.yaml24
-rw-r--r--type/cntt/profiles/host/cp-intel-s2600wt-dpdk.yaml127
-rw-r--r--type/cntt/profiles/host/dp-intel-s2600wt-dpdk.yaml144
-rw-r--r--type/cntt/software/charts/osh/openstack-compute-kit/libvirt-ovsdpdk.yaml70
-rw-r--r--type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml (renamed from site/intel-pod18/software/charts/osh/openstack-compute-kit/libvirt.yaml)2
-rw-r--r--type/cntt/software/charts/osh/openstack-compute-kit/neutron-ovsdpdk.yaml239
-rw-r--r--type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml (renamed from site/intel-pod18/software/charts/osh/openstack-compute-kit/neutron.yaml)7
-rw-r--r--type/cntt/software/charts/osh/openstack-compute-kit/nova-ovsdpdk.yaml87
-rw-r--r--type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml (renamed from site/intel-pod17/software/charts/osh/openstack-compute-kit/nova.yaml)6
-rw-r--r--type/cntt/software/charts/osh/openstack-compute-kit/openvswitch-dpdk.yaml115
-rw-r--r--type/cntt/software/config/versions.yaml80
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
...
-