From 1c8c8f3d1b8fa3b2c780b5f48d5430d0c5ac8feb Mon Sep 17 00:00:00 2001 From: Zac Dover Date: Mon, 30 Jan 2023 17:37:19 +1000 Subject: [PATCH] doc/dev: backport 49908 to P (Upgrade Testing Docs) Backport https://github.com/ceph/ceph/pull/49908 to Pacific. Signed-off-by: Zac Dover --- .../tests-integration-tests.rst | 80 ++++++++++++++++++- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/doc/dev/developer_guide/tests-integration-tests.rst b/doc/dev/developer_guide/tests-integration-tests.rst index c8e6dbcd4e3b..3cd3a10c5bf7 100644 --- a/doc/dev/developer_guide/tests-integration-tests.rst +++ b/doc/dev/developer_guide/tests-integration-tests.rst @@ -129,8 +129,8 @@ all the integration tests, for all the Ceph components. verify that teuthology can run integration tests, with and without OpenStack `upgrade `_ - for various versions of Ceph, verify that upgrades can happen - without disrupting an ongoing workload + for various versions of Ceph, verify that upgrades can happen without + disrupting an ongoing workload (`Upgrade Testing`_) .. _`ceph-deploy man page`: ../../man/8/ceph-deploy @@ -452,6 +452,82 @@ A single test from the rbd/thrash suite can be run by adding the --suite rbd/thrash \ --filter 'rbd/thrash/{clusters/fixed-2.yaml clusters/openstack.yaml workloads/rbd_api_tests_copy_on_read.yaml}' +.. _upgrade-testing: + +Upgrade Testing +^^^^^^^^^^^^^^^ + +Using the upgrade suite we are able to verify that upgrades from earlier releases can complete +successfully without disrupting any ongoing workload. +Each Release branch upgrade directory includes 2-x upgrade testing. +Meaning, we are able to test the upgrade from 2 preceding releases to the current one. +The upgrade sequence is done in `parallel `_ +with other given workloads. + +For instance, the upgrade test directory from the Quincy release branch is as follows: + +.. code-block:: none + + ├── octopus-x + └── pacific-x + +It is possible to test upgrades from Octopus (2-x) or from Pacific (1-x) to Quincy (x). +A simple upgrade test consists the following order: + +.. code-block:: none + + ├── 0-start.yaml + ├── 1-tasks.yaml + ├── upgrade-sequence.yaml + └── workload + +After starting the cluster with the older release we begin running the given ``workload`` +and the ``upgrade-sequnce`` in parallel. + +.. code-block:: yaml + + - print: "**** done start parallel" + - parallel: + - workload + - upgrade-sequence + - print: "**** done end parallel" + +While the ``workload`` directory consists regular yaml files just as in any other suite, +the ``upgrade-sequnce`` is resposible for running the upgrade and awaitng its completion: + +.. code-block:: yaml + + - print: "**** done start upgrade, wait" + ... + mon.a: + - ceph orch upgrade start --image quay.ceph.io/ceph-ci/ceph:$sha1 + - while ceph orch upgrade status | jq '.in_progress' | grep true ; do ceph orch ps ; ceph versions ; sleep 30 ; done\ + ... + - print: "**** done end upgrade, wait..." + +It is also possible to upgrade in stages while running workloads in between those: + +.. code-block:: none + + ├── % + ├── 0-cluster + ├── 1-ceph-install + ├── 2-partial-upgrade + ├── 3-thrash + ├── 4-workload + ├── 5-finish-upgrade.yaml + ├── 6-quincy.yaml + └── 8-final-workload + +After starting a cluster we upgrade only 2/3 of the cluster +(``2-partial-upgrade``). The next stage is running thrash tests and given +workload tests. Later on, continuing to upgrade the rest of the cluster +(``5-finish-upgrade.yaml``). + +The last stage is requiring the updated release (``ceph require-osd-release +quincy``, ``ceph osd set-require-min-compat-client quincy``) and running the +``final-workload``. + Filtering tests by their description ------------------------------------ -- 2.47.3