Fully declarative Kubernetes configuration which includes multiple services and tooling
This repository has been archived on 2026-07-08. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Find a file
2025-05-04 02:40:04 +03:00
.github/workflows feat: add litellm 2025-04-22 04:38:18 +03:00
answers Format YAML files 2025-04-05 03:32:02 +00:00
argocd chore(deps): update helm release argo-cd to v7.9.0 2025-04-29 01:59:49 +00:00
cert-manager Format YAML files 2025-03-29 19:10:21 +00:00
cloudnative-pg cnpg: use ServerSideApply 2025-04-10 21:49:36 +03:00
dragonfly feat: switch to dragonfly-operator 2025-04-05 05:08:48 +03:00
forgejo Format and clean up YAML files for consistency and readability 2025-03-06 00:14:23 +03:00
gatus feat: add ai.kreato.dev 2025-04-10 02:23:41 +03:00
gha-runner add gha-runner 2024-11-23 20:25:25 +03:00
jellyfin jellyfin: make pvc 10Gi 2025-04-22 01:33:54 +03:00
litellm litellm-configmap: add allowed_fails and cooldown_time 2025-04-23 13:54:09 +03:00
longhorn Format YAML files 2025-04-06 17:25:38 +00:00
mastodon answers: mastodon: fix NetworkPolicy to allow CNPG to access to the databases 2025-04-05 06:31:28 +03:00
metallb metallb: switch to kustomize 2025-04-06 18:00:18 +03:00
nginx-kpkg feat(networkpolicy): add network policies for ArgoCD, Gatus, Jellyfin, Longhorn, and Nginx 2025-04-02 22:46:27 +03:00
open-webui Merge pull request #31 from kreatoo/renovate/ghcr.io-open-webui-open-webui-0.x 2025-04-14 20:10:38 +03:00
prometheus prometheus: add namespace.yaml that was missing 2025-03-30 00:39:35 +03:00
robusta chore(deps): update helm release robusta to v0.22.0 2025-04-14 11:54:42 +00:00
scripts init 2024-08-25 05:13:43 +03:00
traefik Update Cloudflare IP ranges 2025-04-01 12:35:26 +00:00
.gitignore .gitignore: add aider 2025-04-12 02:17:36 +03:00
.kube-linter.yaml ci: error out if there are issues (except kube-linter), update kube-linter excludes 2025-03-30 00:55:00 +03:00
.yamlfmt add .yamlfmt, litellm: use MAI-DS-R1 2025-04-22 14:11:06 +03:00
kustomization.yaml add litellm to kustomize 2025-04-22 14:03:49 +03:00
LICENSE Create LICENSE 2024-08-25 05:33:32 +03:00
README.md [skip ci] 2025-05-04 02:40:04 +03:00
renovate.json Add renovate.json 2025-04-13 18:31:00 +00:00

Important

The cluster has moved to bouquet2. This repository has been archived.

bouquet

Kreato's Kubernetes cluster

Load Balancer Uptime (7d) Load Balancer Uptime (24h) Load Balancer Uptime (1h)

Setup

Servers

  • tulip

    • Cloud: OCI (Oracle Cloud Infrastructure)
    • Region: Frankfurt
    • OS: AlmaLinux
    • Kubernetes distro: K0s
    • Role: Agent node
    • Machine: VM.Standard.A1.Flex (Ampere Altra) with 4 cores, 24GB RAM, 200GB storage
  • rose

    • Cloud: Hetzner Cloud
    • Region: Helsinki
    • OS: Fedora Rawhide
    • Kubernetes distro: K0s
    • Role: Control plane node
    • Machine: CAX31 (Ampere Altra) with 8 cores, 16GB RAM, 160GB storage
  • lily

    • Cloud: Hetzner Cloud
    • Region: Falkenstein
    • OS: Fedora Rawhide
    • Kubernetes distro: K0s
    • Role: Agent node
    • Machine: CX22 (Intel Xeon) with 2 cores, 4GB RAM, 40GB storage

Workload

graph TD;
    Ingress-->tulip
    Ingress-->lily
    Ingress-->rose
    tulip-->metallb
    lily-->metallb
    rose-->metallb
    metallb-->cloudflare["cloudflare (roundrobin)"]

Components

  • GitHub Actions - Deployment pipeline
  • Renovate - Dependency updates
  • ArgoCD - For GitOps, manages all the deployments (except itself and the CNI)
  • MetalLB - Load balancer, network policies
  • cert-manager - For managing certificates
  • Traefik - Ingress controller
  • CloudNativePG - Operator for PostgreSQL which powers most services
  • DragonflyDB Operator - Operator for DragonflyDB which powers most memory data stores in services
  • Answers - For my own Q&A platform (https://answers.kreato.dev)
  • Mastodon - For my own fediverse instance (https://m.kreato.dev)
  • Gatus - For health checks (https://status.kreato.dev)
  • LiteLLM - For load balancing and caching LLMs
  • AI - For my Open WebUI instance (https://ai.kreato.dev)
  • Nginx-kpkg - for hosting a kpkg repository (https://bin.kreato.dev)
  • k0s - K8s distribution
  • Robusta - For alarms and monitoring (optional)
  • Forgejo - For Git repositories (Disabled at the moment, optional)

Installation

The setup assumes you already have Kubernetes installed with a CNI (Tested with Calico, should work in any), Helm and MetalLB.

This setup uses Kustomize to manage the manifests. To install the setup, clone the repo and run the following commands:

kubectl kustomize --enable-helm | kubectl apply -f -

Please keep in mind that Robusta is not included in the setup by default as you need to generate values for it. You can generate a config here and then put it in the robusta/ folder. After that, you can run the command below to install Robusta:

kubectl kustomize --enable-helm robusta/ | kubectl apply --server-side --force-conflicts -f -

Credits