Vai al contenuto

Infrastruttura

Componenti di piattaforma in infrastructure/, deployati prima delle applicazioni.

Componenti

MetalLB

Load balancer Layer 2 per bare-metal.

  • Pool IP: 192.168.178.10192.168.178.40
  • Modalità: L2 Advertisement su interfaccia eth0
  • Namespace: metallb

Traefik

Ingress controller e API Gateway.

  • Chart: traefik v37.3.0
  • Repliche: 2 (alta disponibilità)
  • Protocollo: Gateway API (nativo, no Ingress legacy)
  • Porte: 80 (web) → redirect HTTPS, 443 (websecure) con TLS
  • Middleware globale: redirect HTTP→HTTPS automatico
  • TLS: wildcard cert via cert-manager

cert-manager

Gestione automatica certificati TLS.

  • Issuer: Let's Encrypt (production)
  • Challenge: DNS-01 via Cloudflare API
  • Certificato: wildcard *.${DOMAIN}
  • Secret Cloudflare: cifrato con SOPS

NFS-CSI Driver

Storage provisioner per volumi persistenti.

  • Server NFS: 192.168.178.162 (Proxmox host)
  • StorageClass: nfs-flash (SSD), nfs-spacex (HDD)
  • Reclaim Policy: Retain (nessun dato cancellato automaticamente)
  • SubDir template: ${namespace}/${pvc-name}

Gateway API CRDs

Custom Resource Definitions per Gateway API (HTTPRoute, Gateway, GatewayClass), gestite separatamente dal chart Traefik per evitare conflitti di upgrade.

kube-system

Patch al namespace di sistema (es. metrics-server).

Notifications (Flux → Telegram)

Alert Flux CD inviati su Telegram quando un deploy fallisce.

  • Provider: Telegram Bot
  • Severity: solo error (no rumore da eventi normali)
  • Sorgenti monitorate: GitRepository, Kustomization, HelmRepository, HelmRelease

Ordine di deploy

graph LR
    CRDs[crds] --> MetalLB[metallb]
    CRDs --> CertManager[cert-manager]
    CRDs --> NFS[nfs-csi]
    MetalLB --> Traefik[traefik]
    CertManager --> Traefik
    NFS --> Apps[apps...]
    Traefik --> Apps

L'ordine è garantito dal dependsOn nella Kustomization Flux.