Skip to content

Commit

Permalink
Merge pull request #316 from mnietoji/nfvhci
Browse files Browse the repository at this point in the history
HCI+NFV architecture

Based on nfv ovs-dpdk-sriov together with hci
Pre-ceph stage: deploy nfv ovs-dpdk-sriov
post-ceph stage: ceph on top of ovs-dpdk-sriov deployment

Reviewed-by: Andrew Bays <[email protected]>
Reviewed-by: mnietoji
Reviewed-by: Jaganathan Palanisamy <[email protected]>
Reviewed-by: John Fulton <[email protected]>
  • Loading branch information
softwarefactory-project-zuul[bot] authored Aug 14, 2024
2 parents de3eca1 + a8c10a3 commit f28499f
Show file tree
Hide file tree
Showing 35 changed files with 1,887 additions and 0 deletions.
77 changes: 77 additions & 0 deletions automation/vars/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -220,3 +220,80 @@ vas:
- name: edpm-deployment-values
src_file: values.yaml
build_output: deployment.yaml

nfv-ovs-dpdk-sriov-hci:
stages:
- path: examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/control-plane/nncp
wait_conditions:
- >-
oc -n openstack wait nncp
-l osp/nncm-config-type=standard
--for jsonpath='{.status.conditions[0].reason}'=SuccessfullyConfigured
--timeout=5m
values:
- name: network-values
src_file: values.yaml
build_output: nncp.yaml

- path: examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/control-plane
wait_conditions:
- >-
oc -n openstack wait osctlplane controlplane --for condition=Ready
--timeout=60m
values:
- name: service-values
src_file: service-values.yaml
- name: network-values
src_file: nncp/values.yaml
build_output: ../control-plane.yaml

- path: examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/edpm-pre-ceph/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-pre-ceph.yaml

- path: examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/edpm-pre-ceph/deployment
wait_conditions:
- >-
oc -n openstack wait
osdpns openstack-edpm --for condition=Ready
--timeout=60m
values:
- name: edpm-deployment-values
src_file: values.yaml
build_output: deployment-pre-ceph.yaml
post_stage_run:
- name: Deploy Ceph
type: playbook
source: "../../playbooks/ceph.yml"
inventory: "${HOME}/ci-framework-data/artifacts/zuul_inventory.yml"

- path: examples/dt/nfv/nfv-ovs-dpdk-sriov-hci
wait_conditions:
- >-
oc -n openstack wait
osdpns openstack-edpm --for condition=SetupReady
--timeout=60m
values:
- name: service-values
src_file: service-values.yaml
- name: edpm-nodeset-values-post-ceph
src_file: values.yaml
build_output: nodeset-post-ceph.yaml

- path: examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/deployment
wait_conditions:
- >-
oc -n openstack wait
osdpns openstack-edpm --for condition=Ready
--timeout=60m
values:
- name: edpm-deployment-values-post-ceph
src_file: values.yaml
build_output: deployment-post-ceph.yaml
11 changes: 11 additions & 0 deletions dt/nfv/nfv-ovs-dpdk-sriov-hci/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# DT: OvS DPDK & SRIOV HCI

If you are looking for information on how to deploy the OvS DPDK & SRIOV HCI DT, then
please see the
[OvS DPDK & SRIOV HCI README in the examples directory](../../../examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/README.md).

This directory, `architecture/dt/nfv/nfv-ovs-dpdk-sriov-hci/`, exists so that the
[kustomization.yaml](../../../examples/dt/nfv/nfv-ovs-dpdk-sriov-hci/kustomization.yaml)
in the examples directory for the OvS DPDK & SRIOV HCI DT, reference it by path as a
component. Its contents are likely uninteresting unless you want to
understand how kustomize was implemented in this repository.
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
---
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/networking/metallb
- ../../../../lib/networking/netconfig
- ../../../../lib/networking/nad
- ../../../../lib/control-plane

# Add storagemgmt network template, as it is needed for CephHCI
patches:
- target:
version: v1beta1
kind: NetConfig
name: netconfig
patch: |-
- op: add
path: /spec/networks/-
value:
dnsDomain: _replaced_
name: storagemgmt
subnets:
- _replaced_
mtu: 1500
resources:
- policy.yaml

replacements:
# NetConfig dnsDomain specific to this VA
- source:
kind: ConfigMap
name: network-values
fieldPath: data.storagemgmt.dnsDomain
targets:
- select:
kind: NetConfig
fieldPaths:
- spec.networks.[name=storagemgmt].dnsDomain
# NetConfig MTU specific to this VA
- source:
kind: ConfigMap
name: network-values
fieldPath: data.storagemgmt.mtu
targets:
- select:
kind: NetConfig
fieldPaths:
- spec.networks.[name=storagemgmt].mtu
# NetConfig subnets specific to this VA
- source:
kind: ConfigMap
name: network-values
fieldPath: data.storagemgmt.subnets
targets:
- select:
kind: NetConfig
fieldPaths:
- spec.networks.[name=storagemgmt].subnets
# Neutron control plane OvS DPDK & SRIOV customization
- source:
kind: ConfigMap
name: service-values
fieldPath: data.neutron.customServiceConfig
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.neutron.template.customServiceConfig
options:
create: true
# OVN control plane OvS DPDK customization
- source:
kind: ConfigMap
name: service-values
fieldPath: data.ovn.ovnController.nicMappings
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.ovn.template.ovnController.nicMappings
options:
create: true
- source:
kind: ConfigMap
name: service-values
fieldPath: data.telemetry.enabled
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.telemetry.enabled
options:
create: true
- source:
kind: ConfigMap
name: service-values
fieldPath: data.telemetry.template.ceilometer.enabled
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.telemetry.template.ceilometer.enabled
options:
create: true
- source:
kind: ConfigMap
name: service-values
fieldPath: data.extraMounts
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.extraMounts
options:
create: true
- source:
kind: ConfigMap
name: service-values
fieldPath: data.nova.schedulerServiceTemplate.customServiceConfig
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.nova.template.schedulerServiceTemplate.customServiceConfig
options:
create: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
apiVersion: builtin
kind: NamespaceTransformer
metadata:
name: _ignored_
namespace: openstack
setRoleBindingSubjects: none
unsetOnly: true
fieldSpecs:
- path: metadata/name
kind: Namespace
create: true
19 changes: 19 additions & 0 deletions dt/nfv/nfv-ovs-dpdk-sriov-hci/control-plane-pre-ceph/policy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: neutron-policy
data:
policy.yaml: |
"create_port:binding:profile": "rule:admin_or_network_owner"
"get_port:binding:profile": "rule:admin_or_network_owner"
"update_port:binding:profile": "rule:admin_or_network_owner"
"create_network:provider:network_type": "rule:regular_user"
"get_network:provider:network_type": "rule:regular_user"
"update_network:provider:network_type": "rule:regular_user"
"create_network:provider:physical_network": "rule:regular_user"
"get_network:provider:physical_network": "rule:regular_user"
"update_network:provider:physical_network": "rule:regular_user"
"create_network:provider:segmentation_id": "rule:regular_user"
"get_network:provider:segmentation_id": "rule:regular_user"
"update_network:provider:segmentation_id": "rule:regular_user"
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
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/deployment
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
apiVersion: v1
data:
ceph.client.openstack.keyring: _replaced_
ceph.conf: _replaced_
kind: Secret
metadata:
name: ceph-conf-files
namespace: openstack
type: Opaque
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneNodeSet
metadata:
name: openstack-edpm
spec:
nodeTemplate:
extraMounts:
- extraVolType: Ceph
mounts:
- mountPath: /etc/ceph
name: ceph
readOnly: true
volumes:
- name: ceph
secret:
secretName: ceph-conf-files
Loading

0 comments on commit f28499f

Please sign in to comment.