Skip to content

Commit 2cf84cc

Browse files
Merge pull request #586 from masco/bm-ocp
Add DT for the perfscale machines This PR is adding support to deploy the RHOSO on baremetal based OCP deployment. It is tuned for performance lab machines. Reviewed-by: Andrew Bays <[email protected]> Reviewed-by: Masco Kaliyamoorthy Reviewed-by: John Fulton <[email protected]>
2 parents fbe1af9 + f5b83cd commit 2cf84cc

28 files changed

+1258
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1alpha1
3+
kind: Component
4+
5+
transformers:
6+
# Set namespace to OpenStack on all namespaced objects without a namespace
7+
- |-
8+
apiVersion: builtin
9+
kind: NamespaceTransformer
10+
metadata:
11+
name: _ignored_
12+
namespace: openstack
13+
setRoleBindingSubjects: none
14+
unsetOnly: true
15+
fieldSpecs:
16+
- path: metadata/name
17+
kind: Namespace
18+
create: true
19+
20+
components:
21+
- ../../../../../lib/dataplane/deployment
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1alpha1
3+
kind: Component
4+
5+
transformers:
6+
# Set namespace to OpenStack on all namespaced objects without a namespace
7+
- |-
8+
apiVersion: builtin
9+
kind: NamespaceTransformer
10+
metadata:
11+
name: _ignored_
12+
namespace: openstack
13+
setRoleBindingSubjects: none
14+
unsetOnly: true
15+
fieldSpecs:
16+
- path: metadata/name
17+
kind: Namespace
18+
create: true
19+
20+
components:
21+
- ../../../../../lib/dataplane/nodeset
22+
23+
patches:
24+
- target:
25+
kind: Secret
26+
name: dataplane-ansible-ssh-private-key-secret
27+
patch: |
28+
- op: remove
29+
path: /data/authorized_keys
30+
31+
replacements:
32+
- source:
33+
kind: ConfigMap
34+
name: edpm-nodeset-values
35+
fieldPath: data.root_password
36+
targets:
37+
- select:
38+
kind: Secret
39+
name: baremetalset-password-secret
40+
fieldPaths:
41+
- data.NodeRootPassword
42+
options:
43+
create: true
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1alpha1
3+
kind: Component
4+
5+
transformers:
6+
# Set namespace to OpenStack on all namespaced objects without a namespace
7+
- |-
8+
apiVersion: builtin
9+
kind: NamespaceTransformer
10+
metadata:
11+
name: _ignored_
12+
namespace: openstack
13+
setRoleBindingSubjects: none
14+
unsetOnly: true
15+
fieldSpecs:
16+
- path: metadata/name
17+
kind: Namespace
18+
create: true
19+
20+
components:
21+
- ../../../lib/control-plane
22+
23+
replacements:
24+
- source:
25+
kind: ConfigMap
26+
name: service-values
27+
fieldPath: data.ovn.ovnController
28+
targets:
29+
- select:
30+
kind: OpenStackControlPlane
31+
fieldPaths:
32+
- spec.ovn.template.ovnController
33+
- source:
34+
kind: ConfigMap
35+
name: service-values
36+
fieldPath: data.glance.customServiceConfig
37+
targets:
38+
- select:
39+
kind: OpenStackControlPlane
40+
fieldPaths:
41+
- spec.glance.template.customServiceConfig
42+
options:
43+
create: true
44+
- source:
45+
kind: ConfigMap
46+
name: service-values
47+
fieldPath: data.glance.default.replicas
48+
targets:
49+
- select:
50+
kind: OpenStackControlPlane
51+
fieldPaths:
52+
- spec.glance.template.glanceAPIs.default.replicas
53+
options:
54+
create: true
55+
- source:
56+
kind: ConfigMap
57+
name: service-values
58+
fieldPath: data.swift.enabled
59+
targets:
60+
- select:
61+
kind: OpenStackControlPlane
62+
fieldPaths:
63+
- spec.swift.enabled
64+
options:
65+
create: true
66+
- source:
67+
kind: ConfigMap
68+
name: service-values
69+
fieldPath: data.telemetry.enabled
70+
targets:
71+
- select:
72+
kind: OpenStackControlPlane
73+
fieldPaths:
74+
- spec.telemetry.enabled
75+
options:
76+
create: true
77+
- source:
78+
kind: ConfigMap
79+
name: service-values
80+
fieldPath: data.telemetry.template.ceilometer.enabled
81+
targets:
82+
- select:
83+
kind: OpenStackControlPlane
84+
fieldPaths:
85+
- spec.telemetry.template.ceilometer.enabled
86+
options:
87+
create: true
88+
- source:
89+
kind: ConfigMap
90+
name: service-values
91+
fieldPath: data.nova.schedulerServiceTemplate.customServiceConfig
92+
targets:
93+
- select:
94+
kind: OpenStackControlPlane
95+
fieldPaths:
96+
- spec.nova.template.schedulerServiceTemplate.customServiceConfig
97+
options:
98+
create: true
99+
100+
# Add external interface and loadbalancer addresses
101+
- source:
102+
kind: ConfigMap
103+
name: network-values
104+
fieldPath: data.external.iface
105+
targets:
106+
- select:
107+
group: metallb.io
108+
kind: L2Advertisement
109+
name: external
110+
fieldPaths:
111+
- spec.interfaces.0
112+
- source:
113+
kind: ConfigMap
114+
name: network-values
115+
fieldPath: data.external.lb_addresses
116+
targets:
117+
- select:
118+
kind: IPAddressPool
119+
name: external
120+
fieldPaths:
121+
- spec.addresses
122+
123+
- source:
124+
kind: ConfigMap
125+
name: network-values
126+
fieldPath: data.external.net-attach-def
127+
targets:
128+
- select:
129+
kind: NetworkAttachmentDefinition
130+
name: external
131+
fieldPaths:
132+
- spec.config
133+
134+
# Replace ctlplane interfacename instead of bridge name.
135+
- source:
136+
kind: ConfigMap
137+
name: network-values
138+
fieldPath: data.ctlplane.iface
139+
targets:
140+
- select:
141+
kind: L2Advertisement
142+
name: ctlplane
143+
fieldPaths:
144+
- spec.interfaces.0
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
apiVersion: builtin
3+
kind: NamespaceTransformer
4+
metadata:
5+
name: _ignored_
6+
namespace: openstack
7+
setRoleBindingSubjects: none
8+
unsetOnly: true
9+
fieldSpecs:
10+
- path: metadata/name
11+
kind: Namespace
12+
create: true
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
apiVersion: metallb.io/v1beta1
3+
kind: L2Advertisement
4+
metadata:
5+
name: external
6+
namespace: metallb-system
7+
spec:
8+
ipAddressPools:
9+
- external
10+
interfaces:
11+
- _replaced_
12+
13+
---
14+
apiVersion: metallb.io/v1beta1
15+
kind: IPAddressPool
16+
metadata:
17+
namespace: metallb-system
18+
name: external
19+
labels:
20+
osp/lb-addresses-type: standard
21+
22+
---
23+
apiVersion: k8s.cni.cncf.io/v1
24+
kind: NetworkAttachmentDefinition
25+
metadata:
26+
name: external
27+
labels:
28+
osp/net: external
29+
osp/net-attach-def-type: standard
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1alpha1
3+
kind: Component
4+
5+
resources:
6+
- externalapi.yaml
7+
8+
transformers:
9+
# Set namespace to OpenStack on all namespaced objects without a namespace
10+
- |-
11+
apiVersion: builtin
12+
kind: NamespaceTransformer
13+
metadata:
14+
name: _ignored_
15+
namespace: openstack
16+
setRoleBindingSubjects: none
17+
unsetOnly: true
18+
fieldSpecs:
19+
- path: metadata/name
20+
kind: Namespace
21+
create: true
22+
23+
components:
24+
- ../../../../lib/networking/metallb
25+
- ../../../../lib/networking/netconfig
26+
- ../../../../lib/networking/nad
27+
28+
patches:
29+
- target:
30+
kind: NetworkAttachmentDefinition
31+
name: datacentre
32+
patch: |-
33+
apiVersion: k8s.cni.cncf.io/v1
34+
kind: NetworkAttachmentDefinition
35+
metadata:
36+
name: datacentre
37+
$patch: delete
38+
39+
replacements:
40+
# Add external interface and loadbalancer addresses
41+
- source:
42+
kind: ConfigMap
43+
name: network-values
44+
fieldPath: data.external.iface
45+
targets:
46+
- select:
47+
group: metallb.io
48+
kind: L2Advertisement
49+
name: external
50+
fieldPaths:
51+
- spec.interfaces.0
52+
- source:
53+
kind: ConfigMap
54+
name: network-values
55+
fieldPath: data.external.lb_addresses
56+
targets:
57+
- select:
58+
kind: IPAddressPool
59+
name: external
60+
fieldPaths:
61+
- spec.addresses
62+
63+
- source:
64+
kind: ConfigMap
65+
name: network-values
66+
fieldPath: data.external.net-attach-def
67+
targets:
68+
- select:
69+
kind: NetworkAttachmentDefinition
70+
name: external
71+
fieldPaths:
72+
- spec.config
73+
74+
# Replace ctlplane interfacename instead of bridge name.
75+
- source:
76+
kind: ConfigMap
77+
name: network-values
78+
fieldPath: data.ctlplane.iface
79+
targets:
80+
- select:
81+
kind: L2Advertisement
82+
name: ctlplane
83+
fieldPaths:
84+
- spec.interfaces.0

examples/dt/perfscale/scalelab/.gitignore

Whitespace-only changes.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# OpenStack Scalelab Baremetal
2+
3+
This is a collection of CR templates that represent a validated Red Hat OpenStack Services on OpenShift deployment that has the following characteristics:
4+
5+
- 3 master/worker combo-node OpenShift cluster on Baremetal
6+
- 3-replica Galera database
7+
- RabbitMQ
8+
- OVN networking
9+
- Network isolation over three NIC
10+
- this example only uses two compute nodes in one node set, though it is assumed the number will be scaled
11+
- Swift enabled and used as Glance backend
12+
13+
## Considerations
14+
15+
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.
16+
17+
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.
18+
19+
3. In stage 1 [kustomize](https://kustomize.io/) is used to generate the lvm related CRs dynamically. The `lvm-cluster/values.yaml` file must be updated to fit your environment. kustomize version 5 or newer required.
20+
21+
4. In stages 2 and 3 [kustomize](https://kustomize.io/) is used to generate the control plane CRs dynamically. The `*-values.yaml` file(s) must be updated to fit your environment. kustomize version 5 or newer required.
22+
23+
5. In stage 4 [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.
24+
25+
## Stages
26+
27+
All stages must be executed in the order listed below. Everything is required unless otherwise indicated.
28+
29+
1. [Create lvm cluster and subscription on worker nodes](lvm-cluster.md)
30+
1. [Install the OpenStack K8S operators and their dependencies](../../../common/)
31+
2. [Configuring networking and deploy the OpenStack control plane](control-plane.md)
32+
3. [Configure and deploy the dataplane](dataplane.md)

0 commit comments

Comments
 (0)