Skip to content

Commit

Permalink
OvS DPDK SR-IOV Nicpartition
Browse files Browse the repository at this point in the history
Adding VA2 initial set of value/configmaps for NFV
NIC partitioning deployments
  • Loading branch information
vcandapp committed May 20, 2024
1 parent 7aad6df commit 47995bb
Show file tree
Hide file tree
Showing 22 changed files with 1,244 additions and 0 deletions.
49 changes: 49 additions & 0 deletions automation/vars/ovs-dpdk-sriov-nicpartition.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
vas:
ovs-dpdk-sriov-nicpartiton:
stages:
- path: examples/va/nfv/ovs-dpdk-sriov-nicpartition/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/va/nfv/ovs-dpdk-sriov-nicpartition
wait_conditions:
- >-
oc -n openstack wait osctlplane controlplane --for condition=Ready
--timeout=30m
values:
- name: network-values
src_file: nncp/values.yaml
- name: service-values
src_file: service-values.yaml
build_output: control-plane.yaml

- path: examples/va/nfv/ovs-dpdk-sriov-nicpartition/edpm-pre-derive/nodeset
wait_conditions:
- >-
oc -n openstack wait
osdpns openstack-edpm --for condition=SetupReady
--timeout=30m
values:
- name: edpm-nodeset-values
src_file: values.yaml
build_output: nodeset-pre-derive.yaml

- path: examples/va/nfv/ovs-dpdk-sriov-nicpartition/edpm-pre-derive/deployment
wait_conditions:
- >-
oc -n openstack wait
osdpns openstack-edpm --for condition=Ready
--timeout=40m
values:
- name: edpm-deployment-values
src_file: values.yaml
build_output: deployment-pre-derive.yaml
2 changes: 2 additions & 0 deletions examples/va/nfv/ovs-dpdk-sriov-nicpartition/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nncp.yaml
control-plane.yaml
34 changes: 34 additions & 0 deletions examples/va/nfv/ovs-dpdk-sriov-nicpartition/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# OpenStack OVS DPDK SRIOV Nicpartition

**Based on OpenStack K8S operators from the "main" branch of the [OpenStack Operator repo](https://github.com/openstack-k8s-operators/openstack-operator/tree/12c57baeca4ae33dd30a7707d330eb094309b4cd) on Jan 31st, 2024**

This is a collection of CR templates that represent a validated Red Hat OpenStack Services on OpenShift deployment that has the following characteristics:

- 3 master/worker combo-node OpenShift cluster
- 3-replica Galera database
- RabbitMQ
- OVN networking
- Network isolation over a single NIC
- 2 compute nodes
- OvS DPDK & SRIOV using ml2 OVN

## Considerations

1. These CRs are validated for the overall functionality of the OSP cloud deployed, but they nonetheless require customization for the particular environment in which they are utilized. In this sense they are _templates_ meant to be consumed and tweaked to fit the specific constraints of the hardware available.

2. The CRs are applied against an OpenShift cluster in _stages_. That is, there is an ordering in which each grouping of CRs is fed to the cluster. It is _not_ a case of simply taking all CRs from all stages and applying them all at once.

3. In stages 1 and 2 [kustomize](https://kustomize.io/) is used to generate the CRs dynamically. The `*-values.yaml` file(s) must be updated to fit your environment. kustomize version 5 or newer required.

4.In stage 3 [kustomize](https://kustomize.io/) is used to generate the dataplane CRs dynamically. The edpm/values.yaml file must be updated to fit your environment. kustomize version 5 or newer required.

5.In stage 4 [kustomize](https://kustomize.io/) is used to generate the POST dataplane CRs dynamically.

## Stages

All stages must be executed in the order listed below. Everything is required unless otherwise indicated.

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 initial data plane to prepare for derive devicespec installation](dataplane-pre-derive.md)
4. [Copy the nova derived spec and finish deploying the data plane srvices](dataplane-post-derive.md)
55 changes: 55 additions & 0 deletions examples/va/nfv/ovs-dpdk-sriov-nicpartition/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/ovs-dpdk-sriov-nicpartition directory
```
cd architecture/examples/va/nfv/ovs-dpdk-sriov-nicpartition
```
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
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Configuring and deploying the dataplane

## Assumptions

- The [control plane](control-plane.md) has been created and successfully deployed

## Initialize

Switch to the "openstack" namespace
```
oc project openstack
```
Change to the nfv/ovs-dpdk-sriov-nicpartiton/edpm directory
```
cd architecture/examples/va/nfv/ovs-dpdk-sriov-nicpartiton/edpm
```
Edit the [nodeset/values.yaml](nodeset/values.yaml) and [deployment/values.yaml](deployment/values.yaml) files to suit
your environment.
```
vi nodeset/values.yaml
vi deployment/values.yaml
```
Generate the dataplane nodeset CR.
```
kustomize build nodeset > dataplane-nodeset.yaml
```
Generate the dataplane deployment CR.
```
kustomize build deployment > dataplane-deployment.yaml
```

## Create CRs
Create the nodeset CR
```
oc apply -f dataplane-nodeset.yaml
```
Wait for dataplane nodeset setup to finish
```
oc wait osdpns openstack-edpm --for condition=SetupReady --timeout=600s
```

Start the deployment
```
oc apply -f dataplane-deployment.yaml
```

Wait for dataplane deployment to finish
```
oc wait osdpns openstack-edpm --for condition=Ready --timeout=40m
```
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dataplane-nodeset.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

components:
- ../../../../../../va/nfv/ovs-dpdk-sriov-nicpartition/edpm-pre-derive/deployment
# - https://github.com/openstack-k8s-operators/architecture/va/nfv/ovs-dpdk-sriov-nicpartition/edpm-pre-derive/deployment?ref=main
## It's possible to replace ../../../../../../va/nfv/ovs-dpdk-sriov-nicpartition/edpm-pre-derive/deployment/ with a git checkout URL
## as per: https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md

resources:
- values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# yamllint disable rule:line-length
# local-config: referenced, but not emitted by kustomize
---
apiVersion: v1
kind: ConfigMap
metadata:
name: edpm-deployment-values
annotations:
config.kubernetes.io/local-config: "true"
data:
deployment:
name: edpm-deployment-pre-derive
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

components:
- ../../../../../../va/nfv/ovs-dpdk-sriov-nicpartition/edpm-pre-derive/nodeset
# - https://github.com/openstack-k8s-operators/architecture/va/nfv/ovs-dpdk-sriov-nicpartiton/edpm-pre-derive/nodeset?ref=main
## It's possible to replace ../../../../../../va/nfv/ovs-dpdk-sriov-nicpartition/edpm-pre-derive/nodeset/ with a git checkout URL
## as per: https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md

resources:
- values.yaml
Loading

0 comments on commit 47995bb

Please sign in to comment.