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