K3s.Cluster

Cluster K3s utilizzato per distribuire i miei progetti e i siti dei clienti, con SZT come esempio di applicazione gestita in produzione.

K3s v1.28+ Multi-MasterOracle ARM64 (OCI)Flannel + WireGuard MeshCloudflare DNS LB (Round-Robin)Traefik IngressLonghorn Distributed StorageAuthentik OIDCPrometheus + GrafanaArgoCD (GitOps)
Kubernetes
Deployment dei progetti

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.

WireGuard

Rete nodi

WireGuard + Flannel

Cloudflare

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

Step 01CI - Source Control

Forgejo Git Engine

Il codice applicativo e i manifest Kubernetes dei progetti, inclusi quelli dei clienti, sono versionati su repository Forgejo.

Step 02CI - Container Build

Forgejo Actions Runner

Un push avvia i runner Forgejo Actions, che eseguono i comandi del progetto, costruiscono l'immagine Docker e la pubblicano nel registry.

Step 03CD - GitOps Pull

ArgoCD Orchestrator

ArgoCD confronta i manifest del repository con lo stato del cluster e applica il deployment dell'applicazione, come nel caso di SZT.

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.

Argo

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.