fix: add /healthz endpoint to prevent K8s crash loop
- Added dedicated /healthz route returning 200 OK - Skip API health check in hooks.server.ts for /healthz path - Updated K8s liveness/readiness probes to use /healthz instead of /login - The /login probe was returning 503 when the API was unreachable, causing Kubernetes to kill and restart the pod in a loop
This commit is contained in:
@@ -35,15 +35,17 @@ spec:
|
|||||||
- containerPort: 3000
|
- containerPort: 3000
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /login
|
path: /healthz
|
||||||
port: 3000
|
port: 3000
|
||||||
initialDelaySeconds: 5
|
initialDelaySeconds: 5
|
||||||
periodSeconds: 15
|
periodSeconds: 15
|
||||||
|
failureThreshold: 3
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /login
|
path: /healthz
|
||||||
port: 3000
|
port: 3000
|
||||||
initialDelaySeconds: 3
|
initialDelaySeconds: 3
|
||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
|
failureThreshold: 2
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
- name: github-container-registry
|
- name: github-container-registry
|
||||||
|
|||||||
@@ -101,6 +101,11 @@ function apiUnreachablePage(): Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const handle: Handle = async ({ event, resolve }) => {
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
// Let Kubernetes health probes pass without hitting the external API
|
||||||
|
if (event.url.pathname === "/healthz") {
|
||||||
|
return await resolve(event);
|
||||||
|
}
|
||||||
|
|
||||||
// Health-check the API before doing anything else.
|
// Health-check the API before doing anything else.
|
||||||
// /v1/teapot returns 418 when the API is alive.
|
// /v1/teapot returns 418 when the API is alive.
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import type { RequestHandler } from "./$types";
|
||||||
|
|
||||||
|
export const GET: RequestHandler = async () => {
|
||||||
|
return new Response(JSON.stringify({ status: "ok" }), {
|
||||||
|
status: 200,
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
});
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user