Skip to content

Commit 6d32cd2

Browse files
committed
CNV-17781: EUS-to-EUS update info for OCP virt
1 parent b4b0ac5 commit 6d32cd2

File tree

3 files changed

+197
-5
lines changed

3 files changed

+197
-5
lines changed

modules/virt-about-eus-updates.adoc

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * virt/upgrading-virt.adoc
4+
5+
:_content-type: CONCEPT
6+
[id="virt-about-eus-updates_{context}"]
7+
= About EUS-to-EUS updates
8+
9+
Every even-numbered minor version of {product-title}, including 4.10 and 4.12, is an Extended Update Support (EUS) version. However, because Kubernetes design mandates serial minor version updates, you cannot directly update from one EUS version to the next. You must first update to the odd-numbered minor version before you can proceed to the target EUS version.
10+
11+
When performing an EUS-to-EUS update, you must:
12+
13+
* Pause worker nodes' machine config pools before you start an EUS-to-EUS update so that the workers are not rebooted twice.
14+
15+
* Disable automatic workload updates before you begin the update process. This is to prevent {VirtProductName} from migrating or evicting your virtual machines (VMs) until you update to your target EUS version.
16+
17+
[NOTE]
18+
====
19+
By default, {VirtProductName} automatically updates workloads, such as the `virt-launcher` pod, when you update the {VirtProductName} Operator. You can configure this behavior in the `spec.workloadUpdateStrategy` stanza of the `HyperConverged` custom resource.
20+
====
21+
22+
// link to EUS to EUS docs in assembly due to module limitations
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * virt/upgrading-virt.adoc
4+
5+
:_content-type: PROCEDURE
6+
[id="virt-preventing-workload-updates-during-eus-update_{context}"]
7+
= Preventing workload updates during an EUS-to-EUS update
8+
9+
Before you begin to update from one Extended Update Support (EUS) version to the next, you must manually disable automatic workload updates.
10+
11+
.Prerequisites
12+
13+
* You are running an EUS version of {product-title} and want to update to the next EUS version. You have not yet updated to the odd-numbered version in between.
14+
15+
* You read "Preparing to perform an EUS-to-EUS update" and learned the caveats and requirements that pertain to your {product-title} cluster.
16+
17+
* You paused the worker nodes' machine config pools as directed by the {product-title} documentation.
18+
19+
.Procedure
20+
21+
. Back up the current `workloadUpdateMethods` configuration by running the following command:
22+
+
23+
[source,terminal]
24+
----
25+
$ WORKLOAD_UPDATE_METHODS=$(oc get kv kubevirt-kubevirt-hyperconverged -n openshift-cnv -o jsonpath='{.spec.workloadUpdateStrategy.workloadUpdateMethods}')
26+
----
27+
28+
. Turn off all workload update methods by running the following command:
29+
+
30+
[source,terminal]
31+
----
32+
$ oc patch hco kubevirt-hyperconverged -n openshift-cnv --type json -p '[{"op":"replace","path":"/spec/workloadUpdateStrategy/workloadUpdateMethods", "value":[]}]'
33+
----
34+
+
35+
.Example output
36+
[source,terminal]
37+
----
38+
hyperconverged.hco.kubevirt.io/kubevirt-hyperconverged patched
39+
----
40+
41+
. Ensure that the `HyperConverged` Operator is `Upgradeable` before you continue. Enter the following command and monitor the output:
42+
+
43+
[source,terminal]
44+
----
45+
$ kubectl get hco kubevirt-hyperconverged -n openshift-cnv -o json | jq ".status.conditions"
46+
----
47+
+
48+
.Example output
49+
[%collapsible]
50+
====
51+
[source,json]
52+
----
53+
[
54+
{
55+
"lastTransitionTime": "2022-12-09T16:29:11Z",
56+
"message": "Reconcile completed successfully",
57+
"observedGeneration": 3,
58+
"reason": "ReconcileCompleted",
59+
"status": "True",
60+
"type": "ReconcileComplete"
61+
},
62+
{
63+
"lastTransitionTime": "2022-12-09T20:30:10Z",
64+
"message": "Reconcile completed successfully",
65+
"observedGeneration": 3,
66+
"reason": "ReconcileCompleted",
67+
"status": "True",
68+
"type": "Available"
69+
},
70+
{
71+
"lastTransitionTime": "2022-12-09T20:30:10Z",
72+
"message": "Reconcile completed successfully",
73+
"observedGeneration": 3,
74+
"reason": "ReconcileCompleted",
75+
"status": "False",
76+
"type": "Progressing"
77+
},
78+
{
79+
"lastTransitionTime": "2022-12-09T16:39:11Z",
80+
"message": "Reconcile completed successfully",
81+
"observedGeneration": 3,
82+
"reason": "ReconcileCompleted",
83+
"status": "False",
84+
"type": "Degraded"
85+
},
86+
{
87+
"lastTransitionTime": "2022-12-09T20:30:10Z",
88+
"message": "Reconcile completed successfully",
89+
"observedGeneration": 3,
90+
"reason": "ReconcileCompleted",
91+
"status": "True",
92+
"type": "Upgradeable" <1>
93+
}
94+
]
95+
----
96+
====
97+
<1> The {VirtProductName} Operator has the `Upgradeable` status.
98+
99+
. Manually update your cluster from the source EUS version to the next minor version of {product-title}:
100+
+
101+
[source,terminal]
102+
+
103+
----
104+
$ oc adm upgrade
105+
----
106+
+
107+
.Verification
108+
* Check the current version by running the following command:
109+
+
110+
[source,terminal]
111+
----
112+
$ oc get clusterversion
113+
----
114+
+
115+
[NOTE]
116+
====
117+
Updating {product-title} to the next version is a prerequisite for updating {VirtProductName}. For more details, refer to the "Updating clusters" section of the {product-title} documentation.
118+
====
119+
120+
. If you use the recommended *Automatic* approval strategy, which is enabled by default, {VirtProductName} automatically updates to the corresponding version after you update {product-title}. Monitor the {VirtProductName} update by running the following command:
121+
+
122+
[source,terminal]
123+
----
124+
$ oc get csv -n openshift-cnv
125+
----
126+
+
127+
[NOTE]
128+
====
129+
If you used the *Manual* approval strategy, you must approve the update in the web console. For more details, refer to the "Manually approving a pending Operator update" section.
130+
====
131+
132+
. After you confirm that {VirtProductName} successfully updated to the non-EUS version, wait until the `HyperConverged` Operator has the `Upgradeable` status before you perform the next update. Enter the following command and monitor the output:
133+
+
134+
[source,terminal]
135+
----
136+
$ kubectl get hco kubevirt-hyperconverged -n openshift-cnv -o json | jq ".status.conditions"
137+
----
138+
139+
. Update {product-title} and {VirtProductName} to the target EUS version, monitoring as in the preceding steps to ensure that the updates succeed.
140+
141+
. Restore the workload update methods configuration that you backed up:
142+
+
143+
[source,terminal]
144+
----
145+
$ oc patch hco kubevirt-hyperconverged -n openshift-cnv --type json -p "[{\"op\":\"add\",\"path\":\"/spec/workloadUpdateStrategy/workloadUpdateMethods\", \"value\":$WORKLOAD_UPDATE_METHODS}]"
146+
----
147+
+
148+
.Example output
149+
[source,terminal]
150+
----
151+
hyperconverged.hco.kubevirt.io/kubevirt-hyperconverged patched
152+
----
153+
+
154+
.Verification
155+
156+
* Check the status of VM migration by running the following command:
157+
+
158+
[source,terminal]
159+
----
160+
$ oc get vmim -A
161+
----
162+
163+
.Next steps
164+
165+
* You can now unpause the worker nodes' machine config pools.

virt/upgrading-virt.adoc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@ You must perform one of the following tasks before updating to {VirtProductName}
2020

2121
include::modules/virt-about-upgrading-virt.adoc[leveloffset=+1]
2222

23-
[id="configuring-workload-updates_upgrading-virt"]
24-
== Configuring automatic workload updates
25-
2623
include::modules/virt-about-workload-updates.adoc[leveloffset=+2]
2724

28-
include::modules/virt-configuring-workload-update-methods.adoc[leveloffset=+2]
25+
include::modules/virt-about-eus-updates.adoc[leveloffset=+2]
26+
27+
Learn more about xref:../updating/preparing-eus-eus-upgrade.adoc#preparing-eus-eus-upgrade[preparing to perform an EUS-to-EUS update].
28+
29+
include::modules/virt-preventing-workload-updates-during-eus-update.adoc[leveloffset=+1]
30+
31+
include::modules/virt-configuring-workload-update-methods.adoc[leveloffset=+1]
2932

3033
[id="approving-operator-upgrades_upgrading-virt"]
3134
== Approving pending Operator updates
@@ -41,13 +44,15 @@ include::modules/virt-viewing-outdated-workloads.adoc[leveloffset=+2]
4144

4245
[NOTE]
4346
====
44-
xref:../virt/upgrading-virt.adoc#configuring-workload-updates_upgrading-virt[Configure workload updates] to ensure that VMIs update automatically.
47+
Configure workload updates to ensure that VMIs update automatically.
4548
====
4649

4750
[id="additional-resources_upgrading-virt"]
4851
[role="_additional-resources"]
4952
== Additional resources
5053

54+
* xref:../updating/preparing-eus-eus-upgrade.adoc#preparing-eus-eus-upgrade[Preparing to perform an EUS-to-EUS update]
55+
5156
* xref:../operators/understanding/olm-what-operators-are.adoc#olm-what-operators-are[What are Operators?]
5257

5358
* xref:../operators/understanding/olm/olm-understanding-olm.adoc#olm-understanding-olm[Operator Lifecycle Manager concepts and resources]

0 commit comments

Comments
 (0)