Skip to main content
Brian Sunter

Yuptime

A Kubernetes-native uptime monitoring controller with CRDs for HTTP, TCP, DNS, WebSocket, and other monitor types.

TypeScript Kubernetes Uptime Monitoring CRD Controller
Cover image for Yuptime

Overview

Yuptime is a Kubernetes-native uptime monitoring solution where all configuration lives in CRDs. It’s GitOps-native, database-free, and runs each health check in isolated Kubernetes Job pods for security and reliability.

Features

  • GitOps-Native - All configuration lives in Git as YAML manifests, works with Flux, Argo CD, and any GitOps workflow
  • Database-Free - No databases to manage; state lives in CRD status subresources
  • Isolated Execution - Each health check runs in its own Kubernetes Job pod
  • Prometheus Metrics - Built-in metrics export for monitoring and alerting
  • Alertmanager Integration - Native integration with Prometheus Alertmanager
  • Smart Suppressions - Intelligent alert suppression during maintenance windows

Monitor Types

Network Monitors

  • HTTP - Monitor web endpoints with status code and response validation
  • TCP - Check port availability and connection health
  • DNS - Verify DNS resolution and record correctness
  • Ping - ICMP-based host availability checks
  • WebSocket - Monitor WebSocket connections

Application Monitors

  • Push - Heartbeat-style monitoring for cron jobs and batch processes
  • Steam - Monitor Steam game server availability
  • Kubernetes - Check pod and service health within the cluster

Architecture

The controller follows Kubernetes operator patterns:

  • Reconcilers - Handle Monitor, MonitorSet, and MaintenanceWindow resources
  • Job Manager - Schedules and executes monitoring checks
  • Validation Layer - Ensures CRD specifications are valid before processing

Configuration

Monitors are defined as Kubernetes resources:

yaml
apiVersion: yuptime.io/v1
kind: Monitor
metadata:
  name: api-health
spec:
  type: http
  enabled: true
  schedule:
    intervalSeconds: 60
    timeoutSeconds: 30
  target:
    http:
      url: https://api.example.com/health

Technology Stack

  • TypeScript with Bun runtime
  • Kubernetes client for CRD management
  • Custom reconciler framework
  • CloudWatch integration for metrics