Go to file
Nils Blomgren 343de77810
Some checks failed
Build and Deploy / Deploy to server (push) Has been skipped
Build and Deploy / Build and push image (push) Failing after 6m0s
blazor.web.js issues
2026-06-08 16:48:36 +02:00
2026-06-07 14:54:16 +02:00
2026-06-08 16:48:36 +02:00
2026-06-08 16:48:36 +02:00
2026-05-21 16:57:50 +02:00
2026-06-07 21:09:37 +02:00
2026-06-08 16:48:36 +02:00
2026-06-08 16:48:36 +02:00
2026-06-08 16:48:36 +02:00
2026-06-08 16:48:36 +02:00
2026-06-08 16:48:36 +02:00
2026-04-30 07:45:32 +00:00
2026-06-08 16:48:36 +02:00

EntKube

A multi-tenant platform for managing shared Kubernetes applications and infrastructure services.

Vision

EntKube provides a unified developer portal for provisioning, configuring, and monitoring shared services running on Kubernetes — such as MinIO, CloudNativePG, Keycloak, and more. Teams get self-service access to the infrastructure they need without managing the underlying clusters directly.

Key Features

  • Shared Application Management — Deploy, configure, and lifecycle-manage shared services (MinIO, CNPG, Keycloak, etc.) across clusters.
  • Multi-Tenant SaaS — Isolated tenants with role-based access, resource quotas, and per-team service instances.
  • Kubernetes Cluster Management — Register, monitor, and operate multiple clusters from a single control plane.
  • Infrastructure Monitoring & Observability — Health dashboards, alerts, and resource usage metrics for managed services.
  • Developer Portal — Self-service UI for teams to request and manage their service instances.
  • CI/CD Pipeline Integration — Trigger deployments, view pipeline status, and promote releases across environments.

Tech Stack

Layer Technology
Frontend Blazor (.NET 10) — Server + WebAssembly
Backend ASP.NET Core 10
Auth ASP.NET Core Identity with passkey support
Database SQLite (dev) / PostgreSQL (prod)
ORM Entity Framework Core 10

Getting Started

cd EntKube/EntKube
dotnet run

The app launches at https://localhost:7001 (see Properties/launchSettings.json).

Project Structure

EntKube/
├── EntKube/          # Server-side Blazor host, Identity, data layer
└── EntKube.Client/   # WebAssembly client project

Docker

Build and push

Apple Silicon (M-series) Mac: servers are typically linux/amd64. Use docker buildx to cross-compile and push in one step — the --push flag is required because multi-platform images cannot be loaded into the local Docker daemon.

# One-time setup
docker buildx create --use --name multiarch

# Build for amd64 and push directly to the registry
docker buildx build --platform linux/amd64 \
  -t entit.azurecr.io/entkube:latest \
  --push .

# Tag a versioned release
docker buildx build --platform linux/amd64 \
  -t entit.azurecr.io/entkube:latest \
  -t entit.azurecr.io/entkube:1.0.0 \
  --push .

Replace entit.azurecr.io/entkube with your actual registry and image path.

Run with Docker Compose

Copy .env.example to .env and fill in the required values, then authenticate with the registry and start the stack:

# Authenticate with the container registry (once per machine / token expiry)
docker login entit.azurecr.io -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD

docker compose up -d

The app will be available at http://localhost:8080.

Data safetydocker compose down does not delete the database volume. Only docker compose down -v removes volumes.

Required configuration

Variable Description
DOMAIN Public domain pointing at the server (e.g. entkube.example.com).
ACME_EMAIL Email for Let's Encrypt account and expiry notices.
Vault__RootKey 32-byte base64 key for secret encryption. Generate with openssl rand -base64 32.
POSTGRES_PASSWORD Password for the Postgres database (set in .env).

TLS / HTTPS

Caddy is the reverse proxy and handles TLS automatically. On first start it obtains a Let's Encrypt certificate for DOMAIN and renews it automatically before it expires. Ports 80 and 443 must be open and your DNS must point at the server before starting the stack.

License

See LICENSE.

Description
No description provided
Readme MIT 4.5 MiB
Languages
C# 59.6%
HTML 39.9%
CSS 0.3%
JavaScript 0.2%