Skip to content

alfredtm/kuberless

Repository files navigation

Kuberless

Self-hosted multi-tenant serverless platform on Kubernetes. Push a container image, get a URL.

Built as a learning project — no backup strategy, no monitoring, error handling that's optimistic at best. Complete enough to deploy and poke at. Read the blog post for context.

Components

  • operator/ — watches Tenant and App CRDs; creates namespaces, Knative Services, CiliumNetworkPolicies, ResourceQuotas, Capsule Tenants, DomainMappings
  • apiserver/ — REST API (Go + chi); auth, tenant/app/env/domain CRUD, syncs to CRDs and PostgreSQL
  • cli/ — CLI client (Go + Cobra)
  • frontend/ — Next.js dashboard

Prerequisites

  • Kubernetes cluster with Cilium >= 1.15 as CNI
  • just task runner
  • cert-manager, Knative Serving, Capsule, and PostgreSQL — installed separately via just deploy-prereqs

Install

just deploy-prereqs
just deploy-kuberless HOST=kuberless.example.com ADMIN_PASSWORD=yourpassword

Or with helm directly:

helm install kuberless deploy/helm/kuberless \
  -n kuberless-system --create-namespace \
  -f my-values.yaml

The JWT signing secret is auto-generated on first install and preserved across upgrades.

just deploy-upgrade
just deploy-teardown        # removes kuberless, keeps prereqs
just deploy-teardown-all    # removes everything

OpenShift

just openshift-deploy
just openshift-teardown

Local development (kind)

just kind-dev       # one-shot: cluster + prereqs + images + deploy
just kind-redeploy  # rebuild and restart after code changes
just kind-teardown

kubectl port-forward -n kuberless-system svc/kuberless-apiserver 8080:8080
kubectl port-forward -n kuberless-system svc/kuberless-frontend  3000:3000
just build-all  # Go binaries → bin/
just test       # go test with envtest
just lint

CLI

kuberless login
kuberless tenant create my-org --plan starter
kuberless deploy ghcr.io/myorg/myapp:latest --name myapp --port 8080
kuberless apps list
kuberless logs myapp --follow
kuberless env set myapp KEY=value
kuberless domains add myapp api.example.com
kuberless apps pause myapp

License

Apache 2.0

About

Self-hosted multi-tenant serverless platform on Kubernetes

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors