From f9ef5a58825881b0a6cf944c6a0ea4bc8f79d9e4 Mon Sep 17 00:00:00 2001 From: Mateusz Kowalski Date: Wed, 12 Aug 2026 17:07:28 +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 34393512dd..10cdf974f0 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 0cabef56e1..4a34aa5725 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.20 - createdAt: "2026-01-23T14:07:03Z" + createdAt: "2026-08-12T15:34:48Z" description: | Kubernetes NMState is a declaritive means of configuring NetworkManager. olm.skipRange: ">=4.3.0 <4.20.0" @@ -226,7 +226,6 @@ spec: httpGet: path: /healthz port: healthprobe - initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 @@ -239,7 +238,6 @@ spec: httpGet: path: /readyz port: healthprobe - initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 @@ -255,6 +253,13 @@ spec: capabilities: drop: - ALL + startupProbe: + failureThreshold: 18 + httpGet: + path: /readyz + port: healthprobe + initialDelaySeconds: 10 + periodSeconds: 10 terminationMessagePolicy: FallbackToLogsOnError priorityClassName: system-cluster-critical securityContext: