Skip to content

Commit 8ce3ed0

Browse files
committed
Add docs describing the package update process
1 parent 076407e commit 8ce3ed0

File tree

2 files changed

+203
-0
lines changed

2 files changed

+203
-0
lines changed

doc/source/contributor/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ This guide is for contributors of the StackHPC Kayobe configuration project.
1010
documentation
1111
release-notes
1212
environments/index
13+
package-updates
Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
=============================
2+
Package and Container Updates
3+
=============================
4+
5+
Preparations
6+
============
7+
8+
1. Before building images, you should check for any outstanding PRs into the “base branch“. Below are the links for the Wallaby branches.
9+
10+
kayobe-config: https://github.com/stackhpc/stackhpc-kayobe-config/pulls?q=is%3Apr+is%3Aopen+base%3Astackhpc%2Fwallaby
11+
12+
kolla: https://github.com/stackhpc/kolla/pulls?q=is%3Apr+is%3Aopen+base%3Astackhpc%2Fwallaby
13+
14+
kolla-ansible: https://github.com/stackhpc/kolla-ansible/pulls?q=is%3Apr+is%3Aopen+base%3Astackhpc%2Fwallaby
15+
16+
You should also check any referenced source trees in etc/kayobe/kolla.yml.
17+
18+
e.g: https://github.com/stackhpc/stackhpc-kayobe-config/blob/stackhpc/wallaby/etc/kayobe/kolla.yml#L112-L158
19+
20+
2. Follow the workflows documented `here <https://stackhpc.github.io/stackhpc-release-train/usage/content-howto/#update-package-repositories>`_. Sync the package repositories. Then, for each release: update the Kayobe package repository versions, build and push Kolla container images, open a draft PR with the updated container image tags. The rest of this document describes the stage "Test".
21+
22+
Testing
23+
=======
24+
25+
The following steps describe the process to test the new package and container repositories. See the subsections beneath for further explanations.
26+
27+
1. Build two multinode environments for OVS and OVN, both on the "base branch".
28+
29+
2. Run tests on current package versions as a baseline.
30+
31+
3. Upgrade host packages.
32+
33+
4. Upgrade containers.
34+
35+
5. Run tests again with the new packages.
36+
37+
6. Request reviews for your proposed PR to bring in the new packages.
38+
39+
7. Promote these packages before merging the PR, but after the CI checks have passed.
40+
41+
8. Upgrade OpenStack to the next release.
42+
43+
9. Repeat steps 2 and 4-7. (Step 3 is skipped as the host packages will be shared across these releases.)
44+
45+
10. Repeat 8 and 9 for any further releases.
46+
47+
Creating the multinode environments
48+
-----------------------------------
49+
50+
There is a comprehensive guide to setting up a multinode environment with Terraform, found here: https://github.com/stackhpc/terraform-kayobe-multinode. There are some things to note:
51+
52+
* OVN is enabled by default, you should override it under ``etc/kayobe/environments/ci-multinode/kolla.yml kolla_enable_ovn: false`` for the OVS multinode environment.
53+
54+
* Remember to set different vxlan_vnis for each.
55+
56+
* Before running deploy-openstack.sh, run distro sync on each host to ensure you are using the same snapshots as in the release train.
57+
58+
* The tempest tests run automatically at the end of deploy-openstack.sh. If you have the time, it is worth fixing any failing tests you can so that there is greater coverage for the package updates. (Also remember to propose these fixes in the relevant repos where applicable.)
59+
60+
Upgrading host packages
61+
-----------------------
62+
63+
Bump the snapshot versions in /etc/yum/repos.d with
64+
65+
.. code-block:: console
66+
67+
kayobe overcloud host configure -t dnf -kt none
68+
69+
Install new packages:
70+
71+
.. code-block:: console
72+
73+
kayobe overcloud host package update --packages "*"
74+
75+
Perform a rolling reboot of hosts:
76+
77+
.. code-block:: console
78+
79+
export ANSIBLE_SERIAL=1
80+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/reboot.yml --limit controllers
81+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/reboot.yml --limit compute[0]
82+
83+
# Test live migration
84+
openstack server create --image cirros --flavor m1.tiny --network external --hypervisor-hostname wallaby-pkg-refresh-ovs-compute-02.novalocal --os-compute-api-version 2.74 server1
85+
openstack server migrate --live-migration server1
86+
watch openstack server show server1
87+
88+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/reboot.yml --limit compute[1]
89+
90+
# Try and migrate back
91+
openstack server migrate --live-migration server1
92+
watch openstack server show server1
93+
94+
Upgrading containers within a release
95+
-------------------------------------
96+
97+
Deploy the services, once the new tags are set in the kayobe_config:
98+
99+
.. code-block:: console
100+
101+
kayobe overcloud service deploy
102+
103+
Upgrading OpenStack to the next release in a multinode environment
104+
------------------------------------------------------------------
105+
106+
As this is not a full production system, only a reduced number of steps need to be followed to upgrade to a new release. Below describes these steps, with Wallaby as the base branch:
107+
108+
.. code-block:: console
109+
110+
cd <base_path>/src/kayobe-config/
111+
git fetch
112+
git checkout -b xena_uber_merge
113+
git merge origin/stackhpc/xena
114+
115+
source <base_path>/venvs/kayobe/bin/activate
116+
cd <base_patch>/src/kayobe
117+
git checkout stackhpc/xena
118+
git fetch
119+
pip install -U ~/src/kayobe
120+
121+
kayobe control host upgrade
122+
kayobe overcloud host upgrade
123+
124+
kayobe overcloud container image pull
125+
126+
---Optional
127+
kayobe overcloud service configuration save --output-dir config/wallaby
128+
kayobe overcloud service configuration generate --node-config-dir /tmp/kolla-xena-config
129+
kayobe overcloud service configuration save --output-dir config/xena --node-config-dir /tmp/kolla-xena-config
130+
kayobe overcloud host command run --command 'rm -rf /tmp/kolla-xena-config' --become
131+
---
132+
133+
kayobe overcloud service upgrade
134+
135+
Tests
136+
-----
137+
138+
Tempest
139+
#######
140+
141+
Run tempest, you can then perform the other tests while it runs. Once complete, check if any tests are failing.
142+
143+
As of February 2023, only one test was expected to fail. This may no longer be the case, so any additional failures are worth exploring.
144+
145+
.. code-block:: console
146+
147+
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port
148+
149+
Poke around horizon
150+
###################
151+
152+
Perform some basic operations such as spawning VMs or attaching/detaching volumes and check that each page works correctly.
153+
154+
Monitoring
155+
##########
156+
157+
Check for any ERROR log messages in Kibana.
158+
159+
Check that the Grafana dashboards are all populated with data.
160+
161+
Check that there are no active alerts.
162+
163+
Check that there are no flapping alerts.
164+
165+
Octavia (OVN only)
166+
##################
167+
168+
You will need to add an Ubuntu image and create a keypair.
169+
170+
.. code-block:: console
171+
172+
wget http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
173+
174+
openstack image create \
175+
--progress \
176+
--container-format bare \
177+
--disk-format qcow2 \
178+
--file focal-server-cloudimg-amd64.img \
179+
Ubuntu-20.04
180+
181+
openstack keypair create --private-key ~/.ssh/os-admin os-admin
182+
183+
Then run Octavia test script:
184+
185+
https://gist.github.com/MoteHue/ee5990bddea0677f54d8bb93d307aa71#file-octavia_test-sh
186+
187+
188+
Attempt to build OFED against the latest kernel
189+
###############################################
190+
191+
Note that this only needs to be performed once.
192+
193+
.. code-block:: console
194+
195+
kayobe seed host configure -t dnf -kt none
196+
kayobe seed host package update --packages "*"
197+
198+
Then run the OFED test script:
199+
200+
https://gist.github.com/cityofships/b4883ee19f75d14534f04115892b8465
201+
202+

0 commit comments

Comments
 (0)