Skip to content

Commit 424a81b

Browse files
committed
Add Octavia support for SKMO multi-region deployment
Add Octavia load balancer service to both central (regionOne) and leaf (regionTwo) control planes with full kustomize integration: - Add octavia service configuration to both region service-values - Add OVN bridge mapping (octavia: octbr) for amphora connectivity - Add kustomize replacements for octavia and OVN nicMappings - Add automation hooks to wait for amphora image upload and configure br-octavia network infrastructure on master nodes Assisted-by: Claude Opus 4.6
1 parent 5cafc8f commit 424a81b

11 files changed

Lines changed: 402 additions & 2 deletions

File tree

automation/vars/multi-namespace-skmo.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ vas:
9797
- name: service-values
9898
src_file: service-values.yaml
9999
- name: network-values
100-
src_file: ../../multi-namespace/control-plane/networking/nncp/values.yaml
100+
src_file: networking/nncp/values.yaml
101101
build_output: ../control-plane.yaml
102102
post_stage_run:
103103
# Run after the OSCP is deployed to update the CA bundle secret and
@@ -178,7 +178,7 @@ vas:
178178
- name: service-values
179179
src_file: service-values.yaml
180180
- name: network-values2
181-
src_file: ../../multi-namespace/control-plane2/networking/nncp/values.yaml
181+
src_file: networking/nncp/values.yaml
182182
build_output: ../control-plane2.yaml
183183
post_stage_run:
184184
- name: 01 Update central CA bundle with leaf region CAs and wait for reconciliation
@@ -220,6 +220,14 @@ vas:
220220
type: playbook
221221
source: "federation-post-deploy.yml"
222222
inventory: "${HOME}/ci-framework-data/artifacts/zuul_inventory.yml"
223+
- name: 07 Wait for Octavia amphora image upload in both regions
224+
type: playbook
225+
source: "skmo/upload-octavia-amphora-images.yaml"
226+
inventory: "${HOME}/ci-framework-data/artifacts/zuul_inventory.yml"
227+
- name: 08 Configure Octavia network infrastructure on master nodes
228+
type: playbook
229+
source: "skmo/configure-octavia-network.yaml"
230+
inventory: "${HOME}/ci-framework-data/artifacts/zuul_inventory.yml"
223231

224232
- name: edpm-nodeset # stage 7
225233
path: examples/va/multi-namespace/edpm/nodeset

examples/va/multi-namespace-skmo/control-plane/kustomization.yaml

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,24 @@
22
apiVersion: kustomize.config.k8s.io/v1alpha1
33
kind: Component
44

5+
secretGenerator:
6+
- name: octavia-ca-passphrase
7+
literals:
8+
- server-ca-passphrase=12345678
9+
options:
10+
disableNameSuffixHash: true
11+
512
components:
613
- ../../multi-namespace/control-plane
714

15+
resources:
16+
- networking/octavia-netattach.yaml
17+
818
patches:
19+
- target:
20+
kind: ConfigMap
21+
name: network-values
22+
path: networking/nncp/values.yaml
923
- target:
1024
kind: ConfigMap
1125
name: service-values
@@ -100,3 +114,107 @@ replacements:
100114
- spec.cinder.template.cinderVolumes.lvm-iscsi.customServiceConfig
101115
options:
102116
create: true
117+
118+
# Octavia service configuration
119+
- source:
120+
kind: ConfigMap
121+
name: service-values
122+
fieldPath: data.octavia.enabled
123+
targets:
124+
- select:
125+
kind: OpenStackControlPlane
126+
fieldPaths:
127+
- spec.octavia.enabled
128+
options:
129+
create: true
130+
- source:
131+
kind: ConfigMap
132+
name: service-values
133+
fieldPath: data.octavia.amphoraImageContainerImage
134+
targets:
135+
- select:
136+
kind: OpenStackControlPlane
137+
fieldPaths:
138+
- spec.octavia.template.amphoraImageContainerImage
139+
options:
140+
create: true
141+
- source:
142+
kind: ConfigMap
143+
name: service-values
144+
fieldPath: data.octavia.apacheContainerImage
145+
targets:
146+
- select:
147+
kind: OpenStackControlPlane
148+
fieldPaths:
149+
- spec.octavia.template.apacheContainerImage
150+
options:
151+
create: true
152+
- source:
153+
kind: ConfigMap
154+
name: service-values
155+
fieldPath: data.octavia.octaviaAPI.networkAttachments
156+
targets:
157+
- select:
158+
kind: OpenStackControlPlane
159+
fieldPaths:
160+
- spec.octavia.template.octaviaAPI.networkAttachments
161+
options:
162+
create: true
163+
- source:
164+
kind: ConfigMap
165+
name: service-values
166+
fieldPath: data.octavia.octaviaHousekeeping.networkAttachments
167+
targets:
168+
- select:
169+
kind: OpenStackControlPlane
170+
fieldPaths:
171+
- spec.octavia.template.octaviaHousekeeping.networkAttachments
172+
options:
173+
create: true
174+
- source:
175+
kind: ConfigMap
176+
name: service-values
177+
fieldPath: data.octavia.octaviaHealthManager.networkAttachments
178+
targets:
179+
- select:
180+
kind: OpenStackControlPlane
181+
fieldPaths:
182+
- spec.octavia.template.octaviaHealthManager.networkAttachments
183+
options:
184+
create: true
185+
- source:
186+
kind: ConfigMap
187+
name: service-values
188+
fieldPath: data.octavia.octaviaWorker.networkAttachments
189+
targets:
190+
- select:
191+
kind: OpenStackControlPlane
192+
fieldPaths:
193+
- spec.octavia.template.octaviaWorker.networkAttachments
194+
options:
195+
create: true
196+
197+
# Octavia network configuration
198+
- source:
199+
kind: ConfigMap
200+
name: network-values
201+
fieldPath: data.octavia.net-attach-def
202+
targets:
203+
- select:
204+
kind: NetworkAttachmentDefinition
205+
name: octavia
206+
fieldPaths:
207+
- spec.config
208+
209+
# OVN nicMappings configuration
210+
- source:
211+
kind: ConfigMap
212+
name: service-values
213+
fieldPath: data.ovn.ovnController.nicMappings.octavia
214+
targets:
215+
- select:
216+
kind: OpenStackControlPlane
217+
fieldPaths:
218+
- spec.ovn.template.ovnController.nicMappings.octavia
219+
options:
220+
create: true
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1beta1
3+
kind: Kustomization
4+
5+
resources:
6+
- values.yaml
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# local-config: referenced, but not emitted by kustomize
2+
# SKMO-specific patch: adds octavia network to base multi-namespace networking
3+
---
4+
apiVersion: v1
5+
kind: ConfigMap
6+
metadata:
7+
name: network-values
8+
annotations:
9+
config.kubernetes.io/local-config: "true"
10+
data:
11+
octavia:
12+
dnsDomain: octavia.example.com
13+
mtu: 1500
14+
vlan: 23
15+
base_iface: enp6s0
16+
net-attach-def: |
17+
{
18+
"cniVersion": "0.3.1",
19+
"name": "octavia",
20+
"type": "bridge",
21+
"bridge": "octbr",
22+
"ipam": {
23+
"type": "whereabouts",
24+
"range": "172.23.0.0/24",
25+
"range_start": "172.23.0.30",
26+
"range_end": "172.23.0.70",
27+
"routes": [
28+
{
29+
"dst": "172.24.0.0/16",
30+
"gw": "172.23.0.150"
31+
}
32+
]
33+
}
34+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
apiVersion: k8s.cni.cncf.io/v1
3+
kind: NetworkAttachmentDefinition
4+
metadata:
5+
name: octavia
6+
labels:
7+
osp/net: octavia
8+
osp/net-attach-def-type: standard
9+
spec:
10+
config: |
11+
_replaced_

examples/va/multi-namespace-skmo/control-plane/service-values.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,38 @@ data:
3636
target_ip_address = 172.18.0.10
3737
swift:
3838
enabled: true
39+
glance:
40+
customServiceConfig: |
41+
[DEFAULT]
42+
enabled_backends = default_backend:swift
43+
[glance_store]
44+
default_backend = default_backend
45+
[default_backend]
46+
swift_store_create_container_on_put = True
47+
swift_store_auth_version = 3
48+
swift_store_auth_address = {{ .KeystoneInternalURL }}
49+
swift_store_endpoint_type = internalURL
50+
swift_store_user = service:glance
51+
swift_store_key = {{ .ServicePassword }}
52+
swift_store_region = regionOne
53+
ovn:
54+
ovnController:
55+
nicMappings:
56+
datacentre: enp9s0
57+
octavia: octbr
58+
octavia:
59+
enabled: true
60+
amphoraImageContainerImage: quay.io/gthiemonge/octavia-amphora-image
61+
apacheContainerImage: registry.redhat.io/ubi9/httpd-24:latest
62+
octaviaAPI:
63+
networkAttachments:
64+
- internalapi
65+
octaviaHousekeeping:
66+
networkAttachments:
67+
- octavia
68+
octaviaHealthManager:
69+
networkAttachments:
70+
- octavia
71+
octaviaWorker:
72+
networkAttachments:
73+
- octavia

examples/va/multi-namespace-skmo/control-plane2/kustomization.yaml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,25 @@
22
apiVersion: kustomize.config.k8s.io/v1alpha1
33
kind: Component
44

5+
secretGenerator:
6+
- name: octavia-ca-passphrase
7+
literals:
8+
- server-ca-passphrase=12345678
9+
options:
10+
disableNameSuffixHash: true
11+
512
components:
613
- ../../multi-namespace/control-plane2
714

815
resources:
916
- skmo-values.yaml
17+
- networking/octavia-netattach.yaml
1018

1119
patches:
20+
- target:
21+
kind: ConfigMap
22+
name: network-values
23+
path: networking/nncp/values.yaml
1224
- target:
1325
kind: ConfigMap
1426
name: service-values
@@ -203,3 +215,107 @@ replacements:
203215
- spec.cinder.template.cinderVolumes.lvm-iscsi.customServiceConfig
204216
options:
205217
create: true
218+
219+
# Octavia service configuration
220+
- source:
221+
kind: ConfigMap
222+
name: service-values
223+
fieldPath: data.octavia.enabled
224+
targets:
225+
- select:
226+
kind: OpenStackControlPlane
227+
fieldPaths:
228+
- spec.octavia.enabled
229+
options:
230+
create: true
231+
- source:
232+
kind: ConfigMap
233+
name: service-values
234+
fieldPath: data.octavia.amphoraImageContainerImage
235+
targets:
236+
- select:
237+
kind: OpenStackControlPlane
238+
fieldPaths:
239+
- spec.octavia.template.amphoraImageContainerImage
240+
options:
241+
create: true
242+
- source:
243+
kind: ConfigMap
244+
name: service-values
245+
fieldPath: data.octavia.apacheContainerImage
246+
targets:
247+
- select:
248+
kind: OpenStackControlPlane
249+
fieldPaths:
250+
- spec.octavia.template.apacheContainerImage
251+
options:
252+
create: true
253+
- source:
254+
kind: ConfigMap
255+
name: service-values
256+
fieldPath: data.octavia.octaviaAPI.networkAttachments
257+
targets:
258+
- select:
259+
kind: OpenStackControlPlane
260+
fieldPaths:
261+
- spec.octavia.template.octaviaAPI.networkAttachments
262+
options:
263+
create: true
264+
- source:
265+
kind: ConfigMap
266+
name: service-values
267+
fieldPath: data.octavia.octaviaHousekeeping.networkAttachments
268+
targets:
269+
- select:
270+
kind: OpenStackControlPlane
271+
fieldPaths:
272+
- spec.octavia.template.octaviaHousekeeping.networkAttachments
273+
options:
274+
create: true
275+
- source:
276+
kind: ConfigMap
277+
name: service-values
278+
fieldPath: data.octavia.octaviaHealthManager.networkAttachments
279+
targets:
280+
- select:
281+
kind: OpenStackControlPlane
282+
fieldPaths:
283+
- spec.octavia.template.octaviaHealthManager.networkAttachments
284+
options:
285+
create: true
286+
- source:
287+
kind: ConfigMap
288+
name: service-values
289+
fieldPath: data.octavia.octaviaWorker.networkAttachments
290+
targets:
291+
- select:
292+
kind: OpenStackControlPlane
293+
fieldPaths:
294+
- spec.octavia.template.octaviaWorker.networkAttachments
295+
options:
296+
create: true
297+
298+
# Octavia network configuration
299+
- source:
300+
kind: ConfigMap
301+
name: network-values
302+
fieldPath: data.octavia.net-attach-def
303+
targets:
304+
- select:
305+
kind: NetworkAttachmentDefinition
306+
name: octavia
307+
fieldPaths:
308+
- spec.config
309+
310+
# OVN nicMappings configuration
311+
- source:
312+
kind: ConfigMap
313+
name: service-values
314+
fieldPath: data.ovn.ovnController.nicMappings.octavia
315+
targets:
316+
- select:
317+
kind: OpenStackControlPlane
318+
fieldPaths:
319+
- spec.ovn.template.ovnController.nicMappings.octavia
320+
options:
321+
create: true
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1beta1
3+
kind: Kustomization
4+
5+
resources:
6+
- values.yaml

0 commit comments

Comments
 (0)