@sigfox/koa-k8s-probes

Koa middleware mounting customizable Kubernetes probes for readiness and liveness checks.

Usage no npm install needed!

<script type="module">
  import sigfoxKoaK8sProbes from 'https://cdn.skypack.dev/@sigfox/koa-k8s-probes';
</script>

README

koa-k8s-probes

Koa middleware mounting customizable probes for readiness and liveness checks, especially useful in a Kubernetes runtime context.

Features

Mount GET /liveness and /readiness routes to your Koa application. By default, these routes will always return a 200 HTTP status code.

You can customize each route check by setting the livenessProbe or readinessProbe attributes when mounting middleware. These custom checks would have to return a Promise. If resolved, a 200 HTTP status code will be returned, otherwise it will be a 503.

Install

npm install @sigfox/koa-k8s-probes

Usage

const k8sProbes = require('@sigfox/koa-k8s-probes');
const Koa = require('koa');

async function readinessProbe(ctx) {
  const { mongodbClient, redisClient, otherClient } = ctx.services;
  await Promise.all([
    mongodbClient.db.command({ ping: 1 }),
    redisClient.ping(),
    otherClient.someCheck()
  ]);
}

const app = new Koa().use(k8sProbes()); // always return 200 with default configuration
const app = new Koa().use(k8sProbes({ readinessProbe })); // customize readiness route and return 503 when promise is rejected

const server = app.listen();

Test

npm test

Licence

This project is licensed under the MIT License - see the LICENSE file for details.