Update Kubernetes configs for playwright-service, api, and worker

Added new ConfigMap for playwright-service and adjusted existing references.
Applied imagePullPolicy: Always to ensure all images are updated promptly.
Updated README to include --no-cache for Docker build instructions.
This commit is contained in:
Jakob Stadlhuber 2024-07-24 18:54:16 +02:00
parent 497aa5d25e
commit be9e7f9edf
4 changed files with 34 additions and 3 deletions

View File

@ -0,0 +1,6 @@
import { Request, Response } from "express";
export async function livenessController(req: Request, res: Response) {
//TODO: add checks if the application is live and healthy like checking the redis connection
res.status(200).json({ status: "ok" });
}

View File

@ -0,0 +1,6 @@
import { Request, Response } from "express";
export async function readinessController(req: Request, res: Response) {
// TODO: add checks when the application is ready to serve traffic
res.status(200).json({ status: "ok" });
}

View File

@ -7,6 +7,8 @@ import { crawlJobStatusPreviewController } from "../../src/controllers/status";
import { searchController } from "../../src/controllers/search"; import { searchController } from "../../src/controllers/search";
import { crawlCancelController } from "../../src/controllers/crawl-cancel"; import { crawlCancelController } from "../../src/controllers/crawl-cancel";
import { keyAuthController } from "../../src/controllers/keyAuth"; import { keyAuthController } from "../../src/controllers/keyAuth";
import {livenessController} from "../controllers/liveness";
import {readinessController} from "../controllers/readiness";
export const v0Router = express.Router(); export const v0Router = express.Router();
@ -23,3 +25,6 @@ v0Router.get("/v0/keyAuth", keyAuthController);
// Search routes // Search routes
v0Router.post("/v0/search", searchController); v0Router.post("/v0/search", searchController);
// Health/Probe routes
v0Router.get("/v0/health/liveness", livenessController);
v0Router.get("/v0/health/readiness", readinessController);

View File

@ -5,7 +5,7 @@ the HTML content of a specified URL. It supports optional proxy settings and med
from os import environ from os import environ
from fastapi import FastAPI from fastapi import FastAPI, Response
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
from playwright.async_api import Browser, async_playwright from playwright.async_api import Browser, async_playwright
from pydantic import BaseModel from pydantic import BaseModel
@ -39,14 +39,28 @@ async def shutdown_event():
"""Event handler for application shutdown to close the browser.""" """Event handler for application shutdown to close the browser."""
await browser.close() await browser.close()
@app.get("/health/liveness")
def liveness_probe():
"""Endpoint for liveness probe."""
return JSONResponse(content={"status": "ok"}, status_code=200)
@app.get("/health/readiness")
async def readiness_probe():
"""Endpoint for readiness probe. Checks if the browser instance is ready."""
if browser:
return JSONResponse(content={"status": "ok"}, status_code=200)
return JSONResponse(content={"status": "Service Unavailable"}, status_code=503)
@app.post("/html") @app.post("/html")
async def root(body: UrlModel): async def root(body: UrlModel):
""" """
Endpoint to fetch and return HTML content of a given URL. Endpoint to fetch and return HTML content of a given URL.
Args: Args:
body (UrlModel): The URL model containing the target URL, wait time, and timeout. body (UrlModel): The URL model containing the target URL, wait time, and timeout.
Returns: Returns:
JSONResponse: The HTML content of the page. JSONResponse: The HTML content of the page.
""" """