Skip to content

Commit 5c016da

Browse files
Merge pull request #944 from klgill/refine-multicell-docs
refining multi-cell docs
2 parents 8edc80e + ff1b610 commit 5c016da

5 files changed

+114
-126
lines changed

docs_user/modules/proc_adopting-compute-services-to-the-data-plane.adoc

Lines changed: 71 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ $ RENAMED_CELLS="cell1 cell2 $DEFAULT_CELL_NAME"
9494
$ declare -A COMPUTES_CELL1
9595
$ export COMPUTES_CELL1=( <2>
9696
["standalone.localdomain"]="192.168.122.100" <3>
97-
# ... <4>
97+
# <compute1> <4>
98+
# <compute2>
99+
# <compute3>
98100
)
99101
$ declare -A COMPUTES_CELL2
100102
$ export COMPUTES_CELL2=(
@@ -107,7 +109,7 @@ $ export COMPUTES_CELL3=(
107109
# ...
108110
109111
$ declare -A COMPUTES_API_CELL1
110-
$ export COMPUTES_API_CELL1=( <2>
112+
$ export COMPUTES_API_CELL1=( <6>
111113
["standalone.localdomain"]="172.17.0.100"
112114
# ...
113115
)
@@ -117,30 +119,34 @@ $ NODESETS=""
117119
$ for CELL in $(echo $RENAMED_CELLS); do
118120
ref="COMPUTES_$(echo ${CELL}|tr '[:lower:]' '[:upper:]')"
119121
eval names=\${!${ref}[@]}
120-
[ -z "$names" ] && continue <6>
121-
NODESETS="'openstack-${CELL}', $NODESETS"
122+
[ -z "$names" ] && continue
123+
NODESETS="'openstack-${CELL}', $NODESETS" <7>
122124
done
123125
$ NODESETS="[${NODESETS%,*}]"
124126
----
125127
+
126-
<1> The source cloud `default` cell takes a new `DEFAULT_CELL_NAME` on the destined cloud after adoption.
127-
In a multi-cell adoption scenario, you may either retain its original name `default`, or create as `cell<X>`, by providing the incremented index of the last cell in the source cloud (which is, by adding a 1 to it).
128-
<2> For each cell, adjust <["standalone.localdomain"]="x.x.x.x">, and complete `COMPUTES_CELL<X>` and `COMPUTES_API_CELL<X>` data with the names and IP addresses of the {compute_service} nodes connected to the `ctlplane` and `internalapi` networks. Do not specify a real FQDN defined for each network, always use the same host name for each of its connected networks. Providing IP addresses and names of the hosts on remaining networks of the source cloud should be covered the similar way. Or you can adjust the generated files manually as shown below.
129-
<3> If your deployment has a custom DNS Domain, put it in for FQDN of the nodes. The given values will be used in the dataplane node sets' `spec.nodes.<NODE NAME>.hostName`.
130-
<4> Assign all {compute_service} nodes from the source cloud `cell1` cell into `COMPUTES_*CELL1`, and so on.
131-
<5> Assign all {compute_service} nodes from the source cloud `default` cell into `openstack-<X>`,
132-
where `<X>` is the `DEFAULT_CELL_NAME` environment variable value (here, it equals 'cell3').
133-
<6> Cells not containing compute nodes will be omitted as no node sets for it should be created.
134-
135-
** When you have deployed the source cloud with only a 'default' cell, and want to rename it during adoption, you should define that instead:
128+
<1> The source cloud `default` cell acquires a new `DEFAULT_CELL_NAME` on the destination cloud after adoption.
129+
In a multi-cell adoption scenario, you can retain the original name, `default`, or create a new cell default name by providing the incremented index of the last cell in the source cloud. For example, if the incremented index of the last cell is `cell5`, the new cell default name is `cell6`.
130+
<2> For each cell, update the `<["standalone.localdomain"]="x.x.x.x">` value and the and `COMPUTES_CELL<X>` value with the names and IP addresses of the {compute_service} nodes that are connected to the `ctlplane` and `internalapi` networks. Do not specify a real FQDN defined for each network. Always use the same hostname for each connected network of a Compute node. Provide the IP addresses and the names of the hosts on the remaining networks of the source cloud as needed. Or you can manually adjust the files that you generate in step 9 of this procedure.
131+
<3> If your deployment has a custom DNS domain, specify it in the FQDN value of the nodes. This value is used in the data plane node set `spec.nodes.<NODE NAME>.hostName`.
132+
<4> Assign all {compute_service} nodes from the source cloud `cell1` cell into `COMPUTES_CELL1`, and so on. Replace `<compute1>`, `<compute2>`, and `<compute3>` with the names of your {compute_service} nodes.
133+
<5> Assign all {compute_service} nodes from the source cloud `default` cell into `COMPUTES_CELL<X>` and `COMPUTES_API_CELL<X>``, where `<X>` is the `DEFAULT_CELL_NAME` environment variable value. In this example, the `DEFAULT_CELL_NAME` environment variable value equals `cell3`.
134+
<6> For each cell, update the `<["standalone.localdomain"]="192.168.122.100">` value and the `COMPUTES_API_CELL` value with the names and IP addresses of the {compute_service} nodes that are connected to the `ctlplane` and `internalapi` networks. Do not specify a real FQDN defined for each network. Use the same host name for each of its connected networks. Provide the IP addresses and the names of the hosts on the remaining networks of the source cloud as needed. Or you can manually adjust the files that you generate in step 9 of this procedure.
135+
<7> Cells that do not contain Compute nodes are omitted from this template because no node sets are created for the cells.
136136
+
137+
[NOTE]
138+
====
139+
If you deployed the source cloud with a `default` cell, and want to rename it during adoption, define the new name that you want to use, as shown in the following example:
137140
----
138141
$ DEFAULT_CELL_NAME="cell1"
139142
$ RENAMED_CELLS="cell1"
140143
----
141-
+
144+
====
145+
142146
[NOTE]
147+
====
143148
Do not set a value for the `CEPH_FSID` parameter if the local storage back end is configured by the {compute_service} for libvirt. The storage back end must match the source cloud storage back end. You cannot change the storage back end during adoption.
149+
====
144150

145151
.Procedure
146152

@@ -186,9 +192,8 @@ oc get secret nova-migration-ssh-key || oc create secret generic nova-migration-
186192
rm -f id*
187193
cd -
188194
----
189-
+
190195

191-
. If TLS Everywhere is enabled, set LIBVIRT_PASSWORD to match the existing {OpenStackShort} deployment password:
196+
. If TLS Everywhere is enabled, set `LIBVIRT_PASSWORD` to match the existing {OpenStackShort} deployment password:
192197
+
193198
----
194199
declare -A TRIPLEO_PASSWORDS
@@ -211,7 +216,7 @@ data:
211216
EOF
212217
----
213218

214-
. Create a configuration map which should become common for all cells. To configure a local storage back end for libvirt:
219+
. Create a configuration map to use for all cells to configure a local storage back end for libvirt:
215220
+
216221
----
217222
$ oc apply -f - <<EOF
@@ -226,15 +231,13 @@ data: <1>
226231
EOF
227232
----
228233
+
229-
<1> The `data` resources in the `ConfigMap` provides configuration files for all cells.
230-
<2> There is a requirement to index the <*.conf> files from '03' to '99', based on its precedence.
231-
Whereis a <99-*.conf> takes top precedence. Indexes below '03' are reserved for internal use.
232-
234+
<1> The `data` resources in the `ConfigMap` provide the configuration files for all the cells.
235+
<2> There is a requirement to index the `<*.conf>` files from '03' to '99', based on precedence. A `<99-*.conf>` file takes the highest precedence, while indexes below '03' are reserved for internal use.
236+
+
233237
[NOTE]
234-
You should never delete, nor overwrite, the cell1's default `nova-extra-config` configuration map assigned to its default dataplane service 'nova'.
235-
Adopting a live cloud might require other configurations to carry over for Nova EDPM services stored in that configuration map, without overwriting or losing them.
238+
If you adopt a live cloud, you might be required to carry over additional configurations for the default `nova` data plane services that are stored in the cell1 default `nova-extra-config` configuration map. Do not delete or overwrite the existing configuration in the `cell1` default `nova-extra-config` configuration map that is assigned to `nova`. Overwriting the configuration can break the data place services that rely on specific contents of the `nova-extra-config` configuration map.
236239

237-
. To configure a Ceph back end for libvirt:
240+
. Configure a {Ceph} back end for libvirt:
238241
+
239242
----
240243
$ oc apply -f - <<EOF
@@ -258,14 +261,12 @@ data:
258261
rbd_secret_uuid=$CEPH_FSID
259262
EOF
260263
----
261-
+
262264

263-
. Create dataplane services for Nova cells to enable pre-upgrade workarounds,
264-
and to configure the {compute_service} services for a picked storage back end:
265+
. Create the data plane services for {compute_service} cells to enable pre-upgrade workarounds, and to configure the Compute services for your chosen storage back end:
265266
+
266267
----
267268
for CELL in $(echo $RENAMED_CELLS); do
268-
oc apply -f - <<EOF
269+
$ oc apply -f - <<EOF
269270
---
270271
apiVersion: dataplane.openstack.org/v1beta1
271272
kind: OpenStackDataPlaneService
@@ -289,7 +290,6 @@ EOF
289290
done
290291
----
291292
+
292-
293293
* If TLS Everywhere is enabled, append the following content to the `OpenStackDataPlaneService` CR:
294294
+
295295
----
@@ -305,29 +305,22 @@ EOF
305305
edpmServiceType: nova
306306
----
307307
+
308-
<1> To enable a local metadata services for a cell<N>, append a `spec.dataSources.secretRef` to reference
309-
an additional auto-generated `nova-cell<N>-metadata-neutron-config` secret. According to xref:adopting-the-compute-service_{context}[Adopting the Compute service] guide, you should also set
310-
`spec.nova.template.cellTemplates.cell<N>.metadataServiceTemplate.enable` in the `OpenStackControlPlane/openstack` CR. You may either configure a single top level metadata, or you should define a per cell metadata for each cell.
311-
<2> The secret `nova-cell<N>-compute-config` auto-generates for each `cell<N>`.
312-
<3> You must append the `nova-cell<N>-compute-config` and `nova-migration-ssh-key` references for each custom `OpenStackDataPlaneService` CR that is related to the {compute_service}.
313-
314-
[NOTE]
315-
For simplicity, we share the same `nova-migration-ssh-key` key across cells. You should use different keys for different cells.
316-
317-
* For simple configuration overrides, we do not need a custom dataplane service. However, to reconfigure the cell `cell1` in general,
318-
the safest option would be always creating a custom service, and a dedicated configuration map for it.
319-
320-
[NOTE]
321-
The cell `cell1` is already managed with the default `OpenStackDataPlaneService` called `nova`
322-
and its `nova-extra-config` configuration map. Do not change the default dataplane service 'nova' definition.
323-
The changes will be lost, when the {rhos_long} operator becomes updated with OLM.
324-
325-
* When a cell spans multiple node sets, you might want to name the custom `OpenStackDataPlaneService` resources like
326-
`nova-cell1-nfv` and `nova-cell1-enterprise`. Then the auto-generated configmaps would be named
327-
`nova-cell1-nfv-extra-config` and `nova-cell1-enterprise-extra-config`.
328-
308+
<1> To enable a local metadata service for cell<X>, append a `spec.dataSources.secretRef` to reference an additional auto-generated `nova-cell<X>-metadata-neutron-config` secret. You should also set
309+
`spec.nova.template.cellTemplates.cell<X>.metadataServiceTemplate.enable` in the `OpenStackControlPlane/openstack` CR, as described in xref:adopting-the-compute-service_{context}[Adopting the Compute service]. You can configure a single top-level metadata, or define the metadata per cell.
310+
<2> The secret `nova-cell<X>-compute-config` auto-generates for each `cell<X>`.
311+
<3> You must append the `nova-cell<X>-compute-config` and `nova-migration-ssh-key` references for each custom `OpenStackDataPlaneService` CR that is related to the {compute_service}.
312+
+
329313
[NOTE]
330-
Different configurations for nodes in multiple node sets of the same cell are also supported, albeit not covered in this guide.
314+
====
315+
When creating your data plane services for {compute_service} cells, review the following considerations:
316+
317+
* In this example, the same `nova-migration-ssh-key` key is shared across cells. However, you should use different keys for different cells.
318+
* For simple configuration overrides, you do not need a custom data plane service. However, to reconfigure the cell, `cell1`,
319+
the safest option is to create a custom service and a dedicated configuration map for it.
320+
* The cell, `cell1`, is already managed with the default `OpenStackDataPlaneService` CR called `nova` and its `nova-extra-config` configuration map. Do not change the default data plane service `nova` definition. The changes are lost when the {rhos_acro} operator is updated with OLM.
321+
* When a cell spans multiple node sets, give the custom `OpenStackDataPlaneService` resources a name that relates to the node set, for example, `nova-cell1-nfv` and `nova-cell1-enterprise`. The auto-generated configuration maps are then named `nova-cell1-nfv-extra-config` and `nova-cell1-enterprise-extra-config`.
322+
* Different configurations for nodes in multiple node sets of the same cell are also supported, but are not covered in this guide.
323+
====
331324

332325
ifeval::["{build}" == "downstream"]
333326
. Create a secret for the subscription manager:
@@ -353,11 +346,11 @@ endif::[]
353346
+
354347

355348
[NOTE]
356-
The `subscription-manager` secret does not need to be referenced in `OpenStackDataPlaneService`'s `spec.dataSources` data.
357-
It is already passed in via a node-specific `OpenStackDataPlaneNodeSet` data in `spec.nodeTemplate.ansible.ansibleVarsFrom`.
349+
You do not need to reference the `subscription-manager` secret in the `dataSources` field of the `OpenStackDataPlaneService` CR.
350+
The secret is already passed in with a node-specific `OpenStackDataPlaneNodeSet` CR in the `ansibleVarsFrom` property in the `nodeTemplate` field.
358351

359352

360-
. Create the dataplane node sets definitions for each cell:
353+
. Create the data plane node set definitions for each cell:
361354
+
362355
----
363356
$ declare -A names
@@ -568,41 +561,42 @@ EOF
568561
done
569562
----
570563
+
571-
<1> If your deployment has a custom DNS Domain, modify the `spec:nodes:[NODE NAME]:hostName` to use fqdn for the node.
572-
<2> The networks composition must match the source cloud configuration to avoid dataplane connectivity downtime. The ctlplane network must come first. The above commands only retain IP addresses for the hosts on `ctlplane` and `internalapi` networks. Complete it the same way for other networks, or update the resulted files manually.
573-
<3> Use node sets names, like `openstack-cell1`, `openstack-cell2`. Only create node sets for cells containing compute nodes.
574-
<4> If TLS Everywhere is enabled, change `spec.tlsEnabled` to `true`.
575-
<5> If not adopting the telemetry services, omit it from the services list.
576-
<6> The bridge name and other OVN and Neutron specific values must match the source cloud configuration to avoid dataplane connectivity downtime.
564+
<1> If your deployment has a custom DNS Domain, specify the FQDN for the node.
565+
<2> The network composition must match the source cloud configuration to avoid data plane connectivity downtime. The `ctlplane` network must come first. The commands only retain IP addresses for the hosts on the `ctlplane` and `internalapi` networks. Repeat this step for other isolated networks, or update the resulting files manually.
566+
<3> Use node sets names, such as `openstack-cell1`, `openstack-cell2`. Only create node sets for cells that contain Compute nodes.
567+
<4> If TLS Everywhere is enabled, change `tlsEnabled` to `true`.
568+
<5> If you are not adopting telemetry services, omit it from the services list.
569+
<6> The bridge name and other OVN and {networking_service}-specific values must match the source cloud configuration to avoid data plane connectivity downtime.
577570
<7> Replace `<bridge_mappings>` with the value of the bridge mappings in your configuration, for example, `"datacentre:br-ctlplane"`.
578-
<8> If you need to configure hugepages, adjust `<size>`. To configure multi-sized hugepages, create more items in the list. Note that the mount points must match the source cloud configuration.
579-
580-
* Ensure that you use the same `ovn-controller` settings in the `OpenStackDataPlaneNodeSet` CR that you used in the {compute_service} nodes before adoption. This configuration is stored in the `external_ids` column in the `Open_vSwitch` table in the Open vSwitch database:
571+
<8> To configure huge pages, replace `<size>` with the size of the page. To configure multi-sized huge pages, create more items in the list. Note that the mount points must match the source cloud configuration.
581572
+
573+
[NOTE]
574+
====
575+
Ensure that you use the same `ovn-controller` settings in the `OpenStackDataPlaneNodeSet` CR that you used in the {compute_service} nodes before adoption. This configuration is stored in the `external_ids` column in the `Open_vSwitch` table in the Open vSwitch database:
576+
582577
----
583578
$ ovs-vsctl list Open .
584579
...
585580
external_ids : {hostname=standalone.localdomain, ovn-bridge=br-int, ovn-bridge-mappings=<bridge_mappings>, ovn-chassis-mac-mappings="datacentre:1e:0a:bb:e6:7c:ad", ovn-encap-ip="172.19.0.100", ovn-encap-tos="0", ovn-encap-type=geneve, ovn-match-northd-version=False, ovn-monitor-all=True, ovn-ofctrl-wait-before-clear="8000", ovn-openflow-probe-interval="60", ovn-remote="tcp:ovsdbserver-sb.openstack.svc:6642", ovn-remote-probe-interval="60000", rundir="/var/run/openvswitch", system-id="2eec68e6-aa21-4c95-a868-31aeafc11736"}
586581
...
587582
----
588-
+
589-
Replace `<bridge_mappings>` with the value of the bridge mappings in your configuration, for example, `"datacentre:br-ctlplane"`
583+
====
590584

591-
. Deploy the `OpenStackDataPlaneNodeSet` CRs for each Nova compute cell
585+
. Deploy the `OpenStackDataPlaneNodeSet` CRs for each Compute cell:
592586
+
593587
----
594588
$ for CELL in $(echo $RENAMED_CELLS); do
595589
test -f nodeset-${CELL}.yaml || continue
596-
oc apply -f nodeset-${CELL}.yaml
590+
$ oc apply -f nodeset-${CELL}.yaml
597591
done
598592
----
599593

600-
. If you use a Ceph back end for {block_storage_first_ref}, prepare the adopted data plane workloads:
594+
. If you use a {Ceph} back end for {block_storage_first_ref}, prepare the adopted data plane workloads:
601595
+
602596
----
603597
$ for CELL in $(echo $RENAMED_CELLS); do
604598
test -f nodeset-${CELL}.yaml || continue
605-
oc patch osdpns/openstack-$CELL --type=merge --patch "
599+
$ oc patch osdpns/openstack-$CELL --type=merge --patch "
606600
spec:
607601
services:
608602
ifeval::["{build}" == "downstream"]
@@ -640,14 +634,14 @@ done
640634
----
641635
+
642636
[NOTE]
643-
Ensure that you use the same list of services from the original `OpenStackDataPlaneNodeSet` CR, except for the inserted `ceph-client` and `ceph-hci-pre` services.
637+
Ensure that you use the same list of services from the original `OpenStackDataPlaneNodeSet` CR, except for the `ceph-client` and `ceph-hci-pre` services.
644638

645639
. Optional: Enable `neutron-sriov-nic-agent` in the `OpenStackDataPlaneNodeSet` CR:
646640
+
647641
----
648642
$ for CELL in $(echo $RENAMED_CELLS); do
649643
test -f nodeset-${CELL}.yaml || continue
650-
oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[
644+
$ oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[
651645
{
652646
"op": "add",
653647
"path": "/spec/services/-",
@@ -673,7 +667,7 @@ $ for CELL in $(echo $RENAMED_CELLS); do
673667
----
674668
$ for CELL in $(echo $RENAMED_CELLS); do
675669
test -f nodeset-${CELL}.yaml || continue
676-
oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[
670+
$ oc patch openstackdataplanenodeset openstack-$CELL --type='json' --patch='[
677671
{
678672
"op": "add",
679673
"path": "/spec/services/-",
@@ -729,7 +723,7 @@ EOF
729723
+
730724

731725
[NOTE]
732-
If you created different migration SSH keys for different OpenStackDataPlaneService CRs, you should also define a separate `OpenStackDataPlaneDeployment` CR for each nodeset (or nodesets) representing a cell.
726+
If you created different migration SSH keys for different `OpenStackDataPlaneService` CRs, you should also define a separate `OpenStackDataPlaneDeployment` CR for each node set or node sets that represent a cell.
733727

734728
.. When the validation is finished, confirm that the status of the Ansible EE pods is `Completed`:
735729
+
@@ -824,7 +818,7 @@ $ oc logs -l app=openstackansibleee -f --max-log-requests 20
824818
+
825819
----
826820
$ for CELL in $(echo $RENAMED_CELLS); do
827-
oc wait --for condition=Ready osdpns/openstack-$CELL --timeout=30m
821+
$ oc wait --for condition=Ready osdpns/openstack-$CELL --timeout=30m
828822
done
829823
----
830824

@@ -843,8 +837,8 @@ $ oc exec openstackclient -- openstack network agent list
843837

844838
[NOTE]
845839
====
846-
After removing all services on {OpenStackPreviousInstaller} cell controllers, you may decomission those.
847-
To become new cell compute nodes, you should re-provision decomissioned controllers as new EDPM hosts and add them into node sets of corresponding (or new) cells.
840+
After you remove all the services from the {OpenStackPreviousInstaller} cell controllers, you can decomission the cell controllers.
841+
To create new cell Compute nodes, you re-provision the decomissioned controllers as new data plane hosts and add them to the node sets of corresponding or new cells.
848842
====
849843

850844
.Next steps

0 commit comments

Comments
 (0)