From 09ed74432c055ac6724e4f19eccf26cdc323ab5e Mon Sep 17 00:00:00 2001 From: Mateusz Kowalski Date: Wed, 12 Aug 2026 17:06:53 +0200 Subject: [PATCH] OCPBUGS-94072: operator: add startupProbe to nmstate-operator deployment The previous fix for OCPBUGS-94072 added startupProbes only to the nmstate-webhook and kube-rbac-proxy (metrics) containers. The nmstate-operator container itself still only gets ~40s to bind its health probe endpoint (initialDelaySeconds=10, periodSeconds=10, failureThreshold=3) before the liveness probe kills it. In the affected environment the operator takes 50-75s to start listening on :8081, so it enters a permanent CrashLoopBackOff and OLM marks the CSV Failed/NeedsReinstall. Because the deployment is CSV-managed, manual probe edits are reverted by OLM. Apply the same pattern as the operands: startupProbe with failureThreshold=18 (up to 3 minutes to initialize), then regular readiness/liveness probes without initialDelaySeconds. Assisted-By: Claude Fable 5 Signed-off-by: Mateusz Kowalski --- ...rnetes-nmstate-operator.clusterserviceversion.yaml | 9 +++++++-- deploy/operator/operator.yaml | 9 +++++++-- ...rnetes-nmstate-operator.clusterserviceversion.yaml | 11 ++++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml b/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml index 20b0e61f3d..123dd7c86f 100644 --- a/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml +++ b/bundle/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml @@ -276,12 +276,18 @@ spec: value: quay.io/openshift/origin-kube-rbac-proxy:4.10.0 image: quay.io/nmstate/kubernetes-nmstate-operator:latest imagePullPolicy: IfNotPresent + startupProbe: + httpGet: + path: /readyz + port: healthprobe + initialDelaySeconds: 10 + periodSeconds: 10 + failureThreshold: 18 livenessProbe: failureThreshold: 3 httpGet: path: /healthz port: healthprobe - initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 @@ -294,7 +300,6 @@ spec: httpGet: path: /readyz port: healthprobe - initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 diff --git a/deploy/operator/operator.yaml b/deploy/operator/operator.yaml index 6dae67746c..e5a872bba3 100644 --- a/deploy/operator/operator.yaml +++ b/deploy/operator/operator.yaml @@ -60,12 +60,18 @@ spec: capabilities: drop: - ALL - readinessProbe: + startupProbe: httpGet: path: /readyz port: healthprobe initialDelaySeconds: 10 periodSeconds: 10 + failureThreshold: 18 + readinessProbe: + httpGet: + path: /readyz + port: healthprobe + periodSeconds: 10 timeoutSeconds: 1 successThreshold: 1 failureThreshold: 3 @@ -73,7 +79,6 @@ spec: httpGet: path: /healthz port: healthprobe - initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 1 successThreshold: 1 diff --git a/manifests/stable/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml b/manifests/stable/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml index 307b99874d..d768f0382c 100644 --- a/manifests/stable/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml +++ b/manifests/stable/manifests/kubernetes-nmstate-operator.clusterserviceversion.yaml @@ -17,7 +17,7 @@ metadata: categories: OpenShift Optional certified: "false" containerImage: quay.io/openshift/origin-kubernetes-nmstate-operator:4.21 - createdAt: "2025-11-25T05:35:50Z" + createdAt: "2026-08-12T15:34:39Z" description: | Kubernetes NMState is a declaritive means of configuring NetworkManager. olm.skipRange: ">=4.3.0 <4.21.0" @@ -230,7 +230,6 @@ spec: httpGet: path: /healthz port: healthprobe - initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 @@ -243,7 +242,6 @@ spec: httpGet: path: /readyz port: healthprobe - initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 @@ -259,6 +257,13 @@ spec: capabilities: drop: - ALL + startupProbe: + failureThreshold: 18 + httpGet: + path: /readyz + port: healthprobe + initialDelaySeconds: 10 + periodSeconds: 10 terminationMessagePolicy: FallbackToLogsOnError priorityClassName: system-cluster-critical securityContext: