K3s.Cluster
Cluster K3s utilizzato per distribuire i miei progetti e i siti dei clienti, con SZT come esempio di applicazione gestita in produzione.
Ogni applicazione viene descritta con manifest Kubernetes e aggiornata dal repository tramite GitOps. Lo stesso flusso viene usato per i miei progetti e per quelli dei clienti.
Rete nodi
WireGuard + Flannel
Ingress
Cloudflare + Traefik
Un cluster condiviso per i deployment
Il cluster ospita applicazioni containerizzate, database e servizi interni. I deployment sono separati per namespace e aggiornati senza intervenire manualmente sui nodi.
Architecture
3 nodi OCI ARM64
Datastore HA
K3s + etcd
Hardware e rete
Compute Topology
3x Nodi Control Plane (HA)
Tre istanze Oracle Cloud Infrastructure Ampere ARM64 eseguono insieme il control plane K3s con datastore etcd. I workload vengono distribuiti sugli stessi nodi del cluster.
WireGuard Mesh Network
Flannel Overlay VPN
Flannel gestisce la rete dei pod e usa WireGuard per cifrare il traffico tra i nodi. Il mesh collega le istanze senza esporre direttamente la rete interna dei servizi.
Edge Routing & Load Balancing
Cloudflare LB + Traefik
Cloudflare pubblica gli endpoint e distribuisce le richieste tra gli IP dei nodi. Traefik riceve il traffico in ingresso e lo inoltra ai servizi Kubernetes tramite Ingress.
Pipeline di build e deployment
Servizi e workload
Forgejo & Actions
ns / devops
Repository Git e runner per costruire le immagini Docker dei progetti e pubblicarle nel registry usato dal cluster.
ArgoCD
ns / devops
Legge i manifest Kubernetes dai repository e applica le modifiche al cluster quando viene aggiornato il codice di deployment.
Longhorn
ns / longhorn-system
Fornisce volumi persistenti per i servizi che devono conservare dati oltre il ciclo di vita del pod.
Authentik e metriche
ns / monitoring-iam
Authentik protegge le dashboard interne; Prometheus e Grafana raccolgono metriche dei nodi, dei container e dei servizi.