MicroK8s Playground

Motivation

This repository is a playground for me to experiment with Kubernetes and its ecosystem. It is a full stack application with a Spring Boot backend, a SvelteKit frontend, and a Keycloak server for authentication.

Features

  • GraphQL API
  • SSO Authentication
  • SSL Encryption using Let's Encrypt and cert-manager
  • WebSocket based live chat

Backend

Deployed at api.k8splay.xyz

  • Reactive Spring Boot with WebFlux and Kotlin
  • Persistence with R2DBC and MongoDB
  • Authentication and Authorization using Keycloak and oAuth2
  • GraphiQL available at /graphiql

Frontend

Deployed at k8splay.xyz

  • SvelteKit
  • ShadCN and TailwindCSS for styling
  • Houdini GraphQL client for SSR
  • Authenticated routes
  • All pages support SSR with in-cluster backend requests

Keycloak

Deployed at accounts.k8splay.xyz

  • Optimized Docker image
  • Persistence with PostgreSQL
  • Custom theme

DevOps

Deployed at <PR>.test.k8splay.xyz. Please replace <PR> with the PR number, e.g. pr-1.test.k8splay.xyz. The API is deployed at api.<PR>.test.k8splay.xyz.
The deployment is automatically deleted when the PR is closed.

Implemented using GitHub Actions:

  • Automated prod deployment
  • Automated test deployments on pull requests
  • Automated linting and testing