Skip to content

Commit

Permalink
Multiple nodesets for ovs-dpdk-sriov scenario
Browse files Browse the repository at this point in the history
Created a new dt based on ovs-dpdk-sriov va
Depends-on: openstack-k8s-operators/ci-framework#2280
  • Loading branch information
Miguel Angel Nieto Jimenez authored and mnietoji committed Dec 17, 2024
1 parent b945fba commit 1e3a71d
Show file tree
Hide file tree
Showing 27 changed files with 1,398 additions and 0 deletions.
61 changes: 61 additions & 0 deletions automation/vars/ovs-dpdk-sriov-2nodesets.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
vas:
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: 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: ./nncp/values.yaml
- name: service-values
src_file: 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: 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 openstackdataplanedeployments.dataplane.openstack.org
edpm-deployment
--for condition=Ready --timeout=60m
values:
- name: edpm-deployment-values
src_file: values.yaml
build_output: deployment.yaml
9 changes: 9 additions & 0 deletions dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Deployed Topology - NFV OVS-DPDK-SRIOV with 2 different nodesets

If you are looking for information on how to deploy the OVS-DPDK-SRIOV with
2 nodesets based DT, then please see the
[README](../../../examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/README.md) in
the examples directory.

This directory 'dt/nfv/nfv-ovs-dpdk-sriov-2nodesets' expands the one nodeset va
(../../../va/nfv/ovs-dpdk-sriov/) with a second nodeset
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
apiVersion: v1
data:
NodeRootPassword: _replaced_
kind: Secret
metadata:
name: baremetalset-password-secret-2
namespace: openstack
type: Opaque
104 changes: 104 additions & 0 deletions dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/edpm/nodeset2/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component

transformers:
# Set namespace to OpenStack on all namespaced objects without a namespace
- |-
apiVersion: builtin
kind: NamespaceTransformer
metadata:
name: _ignored_
namespace: openstack
setRoleBindingSubjects: none
unsetOnly: true
fieldSpecs:
- path: metadata/name
kind: Namespace
create: true
components:
- ../../../../../lib/dataplane/nodeset2

resources:
- baremetalset-password-secret.yaml
- nova_ovs_dpdk_sriov.yaml
- neutron_igmp.yaml

replacements:
- source:
kind: ConfigMap
name: edpm-nodeset2-values
fieldPath: data.root_password
targets:
- select:
kind: Secret
name: baremetalset-password-secret-2
fieldPaths:
- data.NodeRootPassword
options:
create: true

# Nova compute CPU pinning customization
- source:
kind: ConfigMap
name: edpm-nodeset2-values
fieldPath: data.nova.compute.conf
targets:
- select:
kind: ConfigMap
name: ovs-dpdk-sriov-cpu-pinning-nova-2
fieldPaths:
- data.25-cpu-pinning-nova\.conf
options:
create: true
# Nova compute PCI passthrough customization
- source:
kind: ConfigMap
name: edpm-nodeset2-values
fieldPath: data.nova.pci.conf
targets:
- select:
kind: ConfigMap
name: sriov-nova-2
fieldPaths:
- data.03-sriov-nova\.conf
options:
create: true
- source:
kind: ConfigMap
name: edpm-nodeset2-values
fieldPath: data.preProvisioned
targets:
- select:
kind: OpenStackDataPlaneNodeSet
name: openstack-edpm-2
fieldPaths:
- spec.preProvisioned
options:
create: true
- source:
kind: ConfigMap
name: edpm-nodeset2-values
fieldPath: data.baremetalSetTemplate
targets:
- select:
kind: OpenStackDataPlaneNodeSet
name: openstack-edpm-2
fieldPaths:
- spec.baremetalSetTemplate
options:
create: true
# Neutron IGMP configuration
- source:
kind: ConfigMap
name: edpm-nodeset2-values
fieldPath: data.neutron.igmp.conf
targets:
- select:
kind: ConfigMap
name: neutron-igmp-2
fieldPaths:
- data.25-igmp\.conf
options:
create: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: neutron-igmp-2
data:
25-igmp.conf: _replaced_
---
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneService
metadata:
name: neutron-ovn-igmp-2
spec:
label: neutron-ovn-igmp-2
edpmServiceType: neutron-ovn
caCerts: combined-ca-bundle
playbook: osp.edpm.neutron_ovn
dataSources:
- configMapRef:
name: neutron-igmp-2
- secretRef:
name: neutron-ovn-agent-neutron-config
tlsCerts:
default:
contents:
- dnsnames
- ips
issuer: osp-rootca-issuer-ovn
keyUsages:
- digital signature
- key encipherment
- client auth
networks:
- ctlplane
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: ovs-dpdk-sriov-cpu-pinning-nova-2
data:
25-cpu-pinning-nova.conf: _replaced_
---
apiVersion: v1
kind: ConfigMap
metadata:
name: sriov-nova-2
data:
03-sriov-nova.conf: _replaced_
---
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneService
metadata:
name: nova-custom-ovsdpdksriov-2
spec:
label: nova-custom-ovsdpdksriov-2
edpmServiceType: nova
dataSources:
- configMapRef:
name: ovs-dpdk-sriov-cpu-pinning-nova-2
- configMapRef:
name: sriov-nova-2
- secretRef:
name: nova-cell1-compute-config
- secretRef:
name: nova-migration-ssh-key
playbook: osp.edpm.nova
tlsCerts:
default:
contents:
- dnsnames
- ips
networks:
- ctlplane
issuer: osp-rootca-issuer-internal
caCerts: combined-ca-bundle
2 changes: 2 additions & 0 deletions examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nncp.yaml
control-plane.yaml
26 changes: 26 additions & 0 deletions examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Deployed Topology - NFV/OVS-DPDK-SRIOV with 2 nodesets

Deploys an OVS-DPDK-SRIOV environment 2 different nodesets. It is an extension
of the regular OVS-DPDK-SRIOV scenario, so all information in that scenario is
valid here too. Check [OpenStack OVS DPDK SRIOV](../../../va/nfv/ovs-dpdk-sriov/README.md)

## Purpose

This scenario is needed when compute nodes used to deploy Openstack dataplane
are different (different nics, cpu, memory, ...) so a different nodeset can
be created for each different compute node

This DT is based on OVS-DPDK-SRIOV VA and it has been added just the code
to configure the second nodeset, reusing all of the other config

## Stages

All stages must be executed in the order listed below. Everything is required unless otherwise indicated.
Stages are the same than the OVS-DPDK-SRIOV scenario, the only difference is that it will
be created 2 nodesets instead of just 1

1. [Install the OpenStack K8S operators and their dependencies](../../../common/)
2. [Configuring networking and deploy the OpenStack control plane](control-plane.md)
3. [Configure and deploy the data plane](dataplane.md)


55 changes: 55 additions & 0 deletions examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets/control-plane.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Configuring networking and deploy the OpenStack control plane

## Assumptions

- A storage class called `local-storage` should already exist.

## Initialize

Switch to the "openstack" namespace
```
oc project openstack
```
Change to the nfv/nfv-ovs-dpdk-sriov-2nodesets directory
```
cd examples/dt/nfv/nfv-ovs-dpdk-sriov-2nodesets
```
Edit the [nncp/values.yaml](nncp/values.yaml) and
[service-values.yaml](service-values.yaml) files to suit
your environment.
```
vi nncp/values.yaml
vi service-values.yaml
```

## Apply node network configuration

Generate the node network configuration
```
kustomize build nncp > nncp.yaml
```

Apply the NNCP CRs
```
oc apply -f nncp.yaml
```
Wait for NNCPs to be available
```
oc wait nncp -l osp/nncm-config-type=standard --for jsonpath='{.status.conditions[0].reason}'=SuccessfullyConfigured --timeout=300s
```

## Apply networking and control-plane configuration

Generate the control-plane and networking CRs.
```
kustomize build > control-plane.yaml
```
Apply the CRs
```
oc apply -f control-plane.yaml
```

Wait for control plane to be available
```
oc wait osctlplane controlplane --for condition=Ready --timeout=600s
```
Loading

0 comments on commit 1e3a71d

Please sign in to comment.