Repo holding code and Kubernetes configuration for website.
ryanschnabel.com is hosted on a K3 Kubernetes cluster on Raspberry Pi 4s.
Website content was built using Hugo. Using the vncnt-hugo theme.
Any changes to the ryanschnabel-com
folder on the main
branch triggers a github actions workflow that will build the Hugo content and copy onto an NGINX
image via the Dockerfile
at that folder's directory level.
Once done, and the image is pushed to the Docker Hub repo, github actions will update the deployment.yaml
tag to match the new build's image. Triggering a Flux reconciliation
and deploying the image onto the kubernetes cluster.
A similar pattern is followed for admin-bff
, admin
, and api
Kubernetes cluster has Flux deployed onto it. Reconciling any changes made to the clusters
folder.
Go app that acts as a "backend for frontent" for my admin console html/javascript client, and my backend api
.
html/javascript frontend client, built with Hugo. Injecting my custom html and javascript that invoke the admin-bff
, and the backend api
Bacekden Go app that has endpoints and helper methods to assist in admin functions, slack integration, and interactions with the cluster.
Hugo resources used to build landing page.
Using Grafana, Prometheus, Alertmanager, and Loki for log and metric aggregation, as well as displaying that data. Dashboard currently deployed to monitoring.ryanschnabel.com
Exposure to outside traffic is handled using Cloudflare Tunnels. Ingress Controller is Traefik. Using the ingressRoute resource (example)
DNS and SSL certificate management handled by Cloudflare