RSS Amplifier

Brian Sunter · Dec 16, 2025

Yuptime

0
Sign in to vote or save

Brian Sunter

Overview

Yuptime is an uptime-monitoring controller where every monitor is a Kubernetes CRD. There’s no database; state lives on each CRD’s status subresource, and every check runs as its own short-lived Job pod, so a misbehaving probe can’t take down the controller. That makes the whole thing GitOps-native: declare your monitors as YAML in a repo, sync with Flux or Argo CD, done.

Features

  • All configuration is YAML in Git; works cleanly with Flux, Argo CD, or any GitOps flow
  • No database: state lives on CRD status subresources
  • Each check runs in an isolated Kubernetes Job pod
  • Prometheus metrics for monitoring and alerting
  • Native Alertmanager integration
  • Maintenance-window CRDs suppress alerts during planned work

Monitor Types

Network

  • HTTP: check status code and response body
  • TCP: port reachability
  • DNS: resolve and validate records
  • Ping: ICMP reachability
  • WebSocket: connect and exchange a frame

Application

  • Push: heartbeat endpoint for cron jobs and batch processes
  • Steam: game-server availability
  • Kubernetes: pod and service health inside the cluster

Architecture

Standard Kubernetes operator pattern:

  • Reconcilers for Monitor, MonitorSet, and MaintenanceWindow
  • A job manager that schedules and runs checks
  • A validation layer that rejects malformed CRDs before they hit the reconciler

Configuration

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 on Bun
  • Kubernetes client for CRD management
  • Custom reconciler framework
  • CloudWatch integration for metrics export

Read the original on briansunter.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.