Liveness Probe
curl --request GET \
--url {scheme}://{host}:{port}/healthzimport requests
url = "{scheme}://{host}:{port}/healthz"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('{scheme}://{host}:{port}/healthz', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "62437",
CURLOPT_URL => "{scheme}://{host}:{port}/healthz",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{scheme}://{host}:{port}/healthz"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("{scheme}://{host}:{port}/healthz")
.asString();require 'uri'
require 'net/http'
url = URI("{scheme}://{host}:{port}/healthz")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "ok",
"timestamp": "2026-03-19T15:00:00Z"
}
Health
Health Endpoints
Liveness and readiness endpoints of the operator’s REST API server (port 8090, no authentication)
GET
/
healthz
Liveness Probe
curl --request GET \
--url {scheme}://{host}:{port}/healthzimport requests
url = "{scheme}://{host}:{port}/healthz"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('{scheme}://{host}:{port}/healthz', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "62437",
CURLOPT_URL => "{scheme}://{host}:{port}/healthz",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{scheme}://{host}:{port}/healthz"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("{scheme}://{host}:{port}/healthz")
.asString();require 'uri'
require 'net/http'
url = URI("{scheme}://{host}:{port}/healthz")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "ok",
"timestamp": "2026-03-19T15:00:00Z"
}
Both endpoints live at the root of the REST API server —
Always returns
Lists Issues through the Kubernetes API (limit 1, 5-second timeout). Returns
http://<operator-host>:8090/healthz and /readyz, not under /api/v1 — and need no API key. They report on the REST API server itself.
These are not the endpoints Kubernetes probes. The operator Deployment’s liveness and readiness probes use the controller-runtime endpoints
/healthz and /readyz on the health port 8081 (chart value health.port), which only check that the manager process is alive. Use the 8090 endpoints below for external monitoring of the API.Liveness Check
GET /healthz
200 OK while the REST API server is serving. No authentication required.
{
"status": "ok",
"timestamp": "2026-03-19T15:00:00Z"
}
Readiness Check
GET /readyz
200 OK when that succeeds and 503 Service Unavailable with the error text in status when it fails (API server unreachable, missing RBAC, CRD not installed).
{
"status": "ready",
"timestamp": "2026-03-19T15:00:00Z"
}
{
"status": "not ready: context deadline exceeded",
"timestamp": "2026-03-19T15:00:00Z"
}