From e6f1f9b7b34df32ce3babe3982eefca0a33094c3 Mon Sep 17 00:00:00 2001 From: Sebastian Widmer Date: Fri, 21 Feb 2025 18:02:18 +0100 Subject: [PATCH] Decision: Upgrade Controller Custom Health Checks --- ...pgrade-controller-custom-healthchecks.adoc | 45 +++++++++++++++++++ docs/modules/ROOT/partials/nav.adoc | 1 + 2 files changed, 46 insertions(+) create mode 100644 docs/modules/ROOT/pages/explanations/decisions/upgrade-controller-custom-healthchecks.adoc diff --git a/docs/modules/ROOT/pages/explanations/decisions/upgrade-controller-custom-healthchecks.adoc b/docs/modules/ROOT/pages/explanations/decisions/upgrade-controller-custom-healthchecks.adoc new file mode 100644 index 00000000..fcffaaa3 --- /dev/null +++ b/docs/modules/ROOT/pages/explanations/decisions/upgrade-controller-custom-healthchecks.adoc @@ -0,0 +1,45 @@ += Upgrade Controller Custom Health Checks + +== Problem + +Currently, our OpenShift upgrade controller doesn't support custom health checks. +Only checking the ClusterVersion CRD is supported, which is not sufficient for all use cases. + +The current health check implementation can only fail jobs, but not skip them. +We might want to skip jobs in some cases, for example, if there are maintenance blocking PDBs in place. + +=== Goals + +* We have a method of implementing custom health checks for the upgrade controller +* We can skip jobs based on the health check results +* We can differentiate between failing and skipping health checks + +=== Non-Goals + +* TODO + +== Proposals + +=== 1a. Extend `UpgradeJobHooks`; track pod exit codes for skipping upgrades + +=== 1b. Extend `UpgradeJobHooks`; upgrade controller exposes API for skipping upgrades + +=== 1c. Extend `UpgradeJobHooks`, upgrade controller adds CRD for skipping upgrades + +=== 1d. Extend `UpgradeJobHooks`, upgrade controller adds subresource for skipping upgrades + +=== 2. Implement a new health check mechanism in the `UpgradeJob` CRD + +=== 3. Implement a new health check mechanism analogous to the `UpgradeJobHook` CRD + +== Decision + +TODO + +== Rationale + +TODO + +== References + +* TODO diff --git a/docs/modules/ROOT/partials/nav.adoc b/docs/modules/ROOT/partials/nav.adoc index e4a17a52..687102e0 100644 --- a/docs/modules/ROOT/partials/nav.adoc +++ b/docs/modules/ROOT/partials/nav.adoc @@ -265,3 +265,4 @@ ** xref:oc4:ROOT:explanations/decisions/cloudscale-cilium-egressip.adoc[] ** xref:oc4:ROOT:explanations/decisions/gitlab-access-tokens.adoc[] ** xref:oc4:ROOT:explanations/decisions/prometheusrule-controller.adoc[] +** xref:oc4:ROOT:explanations/decisions/upgrade-controller-custom-healthchecks.adoc[]