Skip to content

Commit

Permalink
[DRAFT] uni06zeta draft
Browse files Browse the repository at this point in the history
  • Loading branch information
afazekas committed Apr 10, 2024
1 parent 2733a76 commit a342334
Show file tree
Hide file tree
Showing 17 changed files with 1,007 additions and 0 deletions.
74 changes: 74 additions & 0 deletions automation/vars/uni06zeta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
vas:
uni06zeta:
stages:
- path: examples/dt/uni06zeta/control-plane/nncp
validations:
- >-
oc -n openstack wait nncp
-l osp/nncm-config-type=standard
--for jsonpath='{.status.conditions[0].reason}'=SuccessfullyConfigured
--timeout=60s
- >-
oc label node master-0 openstack.org/cinder-lvm=''
- >-
ssh hypervisor sudo ip link add link osp_trunk name vlan218 type vlan id 218
- >-
ssh hypervisor sudo ip addr add 172.38.0.1/24 dev vlan218
- >-
ssh hypervisor sudo ip link set dev vlan218 up
- >-
ssh hypervisor sudo iptables -A POSTROUTING -s 172.38.0.0/24 ! -d 172.38.0.0/24 -j MASQUERADE -t nat

Check warning on line 26 in automation/vars/uni06zeta.yaml

View workflow job for this annotation

GitHub Actions / yaml-lint

26:101 [line-length] line too long (112 > 100 characters)
values:
- name: network-values
src_file: values.yaml
build_output: nncp.yaml

- path: examples/dt/uni06zeta/control-plane
validations:
- >-
oc -n openstack wait openstackcontrolplane
controlplane
--for condition=Ready
--timeout=600s
- >-
oc rsh -n openstack openstackclient openstack container create
volumebackups
- >-
oc rsh -n openstack openstackclient openstack credential create
--type ec2 --project admin admin
'{"access": "401e5f2c73eb45d3b0256dc8dbe65cf5",
"secret": "6032b0bbcced409d955568be27382c44"}'
- >-
mkdir -p /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/ci_gen_kustomize_values/templates/common/edpm-values

Check warning on line 52 in automation/vars/uni06zeta.yaml

View workflow job for this annotation

GitHub Actions / yaml-lint

52:101 [line-length] line too long (142 > 100 characters)
- >-
cp /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/ci_gen_kustomize_values/templates/hci/edpm-values/values.yaml.j2

Check warning on line 55 in automation/vars/uni06zeta.yaml

View workflow job for this annotation

GitHub Actions / yaml-lint

55:101 [line-length] line too long (148 > 100 characters)
/home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/ci_gen_kustomize_values/templates/common/edpm-values/
values:
- name: network-values
- name: service-values
src_file: service-values.yaml
build_output: control-plane.yaml

- path: examples/dt/uni06zeta
validations:
- >-
oc -n openstack wait openstackdataplanedeployment
edpm-deployment
--for condition=Ready
--timeout=1200s
values:
- name: edpm-values
src_file: values.yaml
build_output: edpm.yaml
11 changes: 11 additions & 0 deletions dt/uni06zeta/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Deployed Topology - Zeta

If you are looking for information on how to deploy the alpha based DT, then
please the [README](../../examples/dt/uni06zeta/README.md) in the examples
directory.

This directory `dt/uni06zeta/`, exists so that the
[kustomization.yaml](../../examples/dt/uni06zeta/kustomization.yaml) in
the examples directory of uni06zeta topology, reference it by path as a
component. It's contents are likely uninteresting unless you want to understand
how kustomize was implemented in this repository.
20 changes: 20 additions & 0 deletions dt/uni06zeta/edpm/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component

transformers:
- |-
apiVersion: builtin
kind: NamespaceTransformer
metadata:
name: _ignored_
namespace: openstack
setRoleBindingSubjects: none
unsetOnly: true
fieldSpecs:
- path: metadata/name
kind: Namespace
create: true
components:
- ../../../lib/dataplane
155 changes: 155 additions & 0 deletions dt/uni06zeta/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component

transformers:
- |-
apiVersion: builtin
kind: NamespaceTransformer
metadata:
name: _ignored_
namespace: openstack
setRoleBindingSubjects: none
unsetOnly: true
fieldSpecs:
- path: metadata/name
kind: Namespace
create: true
components:
- ../../lib/networking
- ../../lib/control-plane

replacements:
- source:
kind: ConfigMap
name: service-values
fieldPath: data.cinderVolumes.lvm-nvme-tcp.replicas
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.cinder.template.cinderVolumes.lvm-nvme-tcp.replicas
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.cinderVolumes.lvm-nvme-tcp.nodeSelector.openstack\.org/cinder-lvm
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.cinder.template.cinderVolumes.lvm-nvme-tcp.nodeSelector.openstack\.org/cinder-lvm
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.cinderVolumes.lvm-nvme-tcp.customServiceConfig
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.cinder.template.cinderVolumes.lvm-nvme-tcp.customServiceConfig
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.cinderBackup.customServiceConfig
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.cinder.template.cinderBackup.customServiceConfig
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.cinderBackup.replicas
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.cinder.template.cinderBackup.replicas
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.glance.default.replicas
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.glance.template.glanceAPIs.default.replicas
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.glance.customServiceConfig
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.glance.template.customServiceConfig
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.glance.default.replicas
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.glance.template.glanceAPIs.default.replicas
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.swift.enabled
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.swift.enabled
options:
create: true

# TODO: octavia
- source:
kind: ConfigMap
name: service-values
fieldPath: data.ovn.ovnController.availability-zones
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.ovn.template.ovnController.external-ids.availability-zones
options:
create: true

- source:
kind: ConfigMap
name: service-values
fieldPath: data.neutron.customServiceConfig
targets:
- select:
kind: OpenStackControlPlane
fieldPaths:
- spec.neutron.template.customServiceConfig
options:
create: true
12 changes: 12 additions & 0 deletions dt/uni06zeta/namespace.yaml
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
1 change: 1 addition & 0 deletions examples/dt/uni06zeta/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
data-plane.yaml
102 changes: 102 additions & 0 deletions examples/dt/uni06zeta/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Deployed Topology - Zeta

This document contains a list of integration test suites that would be
executed against the below specified topology of Red Hat OpenStack Services
on OpenShift. It also contains a collection of custom resources (CRs) for
deploying the test environment.

## Purpose

Focused on components with a bit of heterogenous configuration (please see below).

## Environment

### Nodes


## Node topology
| Node role | bm/vm | amount |
| ------------------------------------------------ | ----- | ------ |
| Openshift master/worker combo-node cluster | vm | 3 |
| Compute nodes | vm | 2 |
| HCI Ceph (TBD, see below) | vm | - |

### Networks

| Name | Type | Interface |
| ---- | ---- | --------- |
| Provisioning | untagged | nic1 |
| Machine | untagged | nic2 |
| RH OSP | trunk | nic3 |

#### Networks in RH OSP

| Name | Type |
| ---- | ---- |
| ctlplane | untagged |
| internalapi | VLAN tagged |
| Storage | VLAN tagged |
| Tenant | VLAN tagged |

### Services, enabled features and configurations

| Service | configuration | Lock-in coverage? |
| ---------------- | ------------------------- | ------------------ |
| Cinder | nvemof-tcp / lvm | Must have |
| Cinder Backup | Swift/S3/zstd | Must have |
| Glance | Swift | Must have |
| Swift | (default) | Must have |
| Octavia | (ovn) | Must have |
| Horizon | N/A | Must have |
| Barbican | (default) | Must have |
| Neutron | OVN/no-dvr/provider_vlans | Must have |

#### Support services

The following table lists services which are not the main focus of the testing
(which may be covered by additional scenarios), but are required for the DT to
work properly and can be deployed with any/default configuration.

| Service | Reason |
| ---------------- |--------------------------- |
| Barbican | needed by other services |
| Neutron | needed by other services |
| Nova | needed by scenario testing |
| Swift | needed by scenario testing |
| Keystone | needed by all services |

### Additional configuration

- Always-on, default services and features: TLSe
- Logical volume with the name cinder-volumes exists on a OpenShift node.
- The S3 backend for cinder-backup requires a valid S3 implementation, which could be provided by HCI Ceph services or by Swift, if Swift can be deployed first.
cinder-backup expected to compress the backups.

#### Cinder backend - LVM

It is assumed that worker nodes or the master nodes have extra disks(or loopack device)
and there exists a logical volume group with the name *cinder-volumes*. If not, a
for example a `MachineConfig` can be used to create one.

The LVM backend for Cinder is a special case as the storage data is on the
OpenShift node and has no external storage systems. The target ips are not managed by
the operators, recommended to create dedicated label for each target serving node
and configure the storage ips of each cinder-volume instance with LVM backend.


## Testing tree

| Test framework | When to run | Special configuration |
| ---------------- | -------------------- | ----------------------|
| relevant volume tests | tempest stage | |
| relevant image tests | tempest stage | |
| relevant object-storage tests | tempest stage | |
| relevant networking tests | tempest stage | full CentOS/RHEL image |
| horizon integration | own stage (post-tempest)| |


## Workflow

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

0 comments on commit a342334

Please sign in to comment.