Aller au contenu principal

Mini Cloud Platform β€” Bare-Metal Infrastructure

Private datacenter-equivalent infrastructure β€” built from scratch with MAAS, k3s, ArgoCD, and GitOps.


What This Project Is​

This documentation covers a complete bare-metal infrastructure built locally using MAAS (Metal as a Service), provisioning a 5-node cluster ready for Kubernetes and production workloads.

Equivalent to: AWS EC2 + VPC + Auto Provisioning β€” but local.

Infrastructure at a Glance​

NodeIPRoleHardware
set-hog10.0.0.2Control PlaneThinkPad T15 Gen 1
fast-skunk10.0.0.4WorkerThinkPad T490
fast-heron10.0.0.7WorkerThinkPad T490
star-kitten10.0.0.8WorkerThinkPad T490
swift-mac10.0.0.10WorkerMacBook Pro 13" 2012

MAAS Controller: Ubuntu + dual NIC (WiFi β†’ internet, Ethernet β†’ 10.0.0.1)


Complete Roadmap​

Each phase builds directly on the previous one β€” nothing requires something that hasn't been set up yet.

PhaseTopicKey TechnologyStatus
0MAAS + bare-metal provisioning (4Γ— ThinkPad via PXE + 1Γ— MacBook Pro via USB)MAAS, PXE, cloud-initβœ… Done
1Kubernetes clusterk3sβœ… Done
2kubectl local accesskubeconfigβœ… Done
3Remote access from anywhereTailscale, Cloudflare Tunnel, Homerβœ… Done
4Load balancer IPs on bare-metalMetalLBβœ… Done
5Persistent storageLonghorn, NFSβœ… Done
6Expose apps to the networkF5 NGINX Ingressβœ… Done
7Private container registryHarbor + Trivyβœ… Done
8Cluster monitoringPrometheus, Grafanaβœ… Done
9First real workloadpodinfo, HPA, ServiceMonitorβœ… Done
10Infrastructure automationAnsibleβœ… Done
11Infrastructure as CodeOpenTofu (MAAS) β€” Crossplane deferredβœ… Done
12GitOps deploymentArgoCD (App-of-Apps)βœ… Done
13CI/CD pipelinesGitHub Actions + ghcr.io + ArgoCD image promotionβœ… Done
14Backup & disaster recoveryVelero + MinIO on controller + hourly k3s SQLite pullβœ… Done
15TLS / cert-manager (internal PKI) β€” Vault + RBAC deferredcert-manager, self-signed root CAβœ… Done
16Harbor as Sovereign Registry β€” 4 proxy-cache projects, mirror+fallback, supply-chain control point. Original n8n/Temporal/Airflow plan deferred.Harbor proxy cacheβœ… Done
17Event-driven autoscaling β€” KEDA + NATS JetStream HA, scale-to-zero verified end-to-endKEDA, NATSβœ… Done
18Backstage minimal IDP β€” catalog-only, off-the-shelf image, Vault/plugins/templates deferredBackstageβœ… Done
19Self-hosted AI β€” Ollama (CPU, llama3.2:3b, ~13 TPS) + Open WebUI chat. MLflow + Kubeflow deferred.Ollama, Open WebUIβœ… Done
20Reliability & chaos engineering β€” 3 validation experiments on podinfo: PodChaos (0 ms downtime under 5 pod kills), NetworkChaos (200 ms latency injection + clean recovery), StressChaos (contained cgroup OOM, 0 node-mate restarts). NodeChaos / dashboard Ingress / automated GameDays deferred.Chaos Meshβœ… Done
21Logs (Loki single-binary, Promtail DaemonSet, Grafana datasource) + Alertmanager 3-tier routing tree + in-cluster webhook receiver + custom PodinfoAvailabilityLost rule. End-to-end alert validated via Chaos Mesh kill-both-replicas β†’ webhook receives FIRING JSON. Jaeger / distributed tracing deferred β€” no multi-service topology to trace.Loki, Promtail, Alertmanagerβœ… Done
22eBPF networking β€” migration runbook authored, execution deferred to fresh-cluster rebuild. cilium CLI installed on controller; dry-run helm values captured. Senior scope-reduction call: 111 live pods + 22 phases of validated infrastructure on top of Flannel make hot CNI swap not worth it at our cluster scale.Cilium, Hubbleβœ… Done
23Enterprise SSO β€” Authentik as IdP; 11/13 apps on SSO. 5 via native OIDC (ArgoCD, Grafana, Harbor, MinIO, Open WebUI), 5 via forward-auth Outpost (Homer, podinfo, platform-demo, whoami, NATS). Backstage + MAAS deferred.Authentik, OIDC, forward-authβœ… Done
24Backstage custom image β€” org-owned build (bcec03f); Authentik OIDC SSO; Kubernetes, ArgoCD, TechDocs, Grafana plugins; published to Harbor.Backstage, crane, Harbor, Authentikβœ… Done
25Public access via Cloudflare Tunnel β€” *.devandre.sbs live (10/10 apps, no Tailscale). Authentik OIDC issuers migrated to auth.devandre.sbs. Forward-auth extended to devandre.sbs cookie domain. originServerName per cloudflared rule to fix TLS SNI on IP origin. UFW host firewall on controller. All smoke tests green.Cloudflare Tunnel, cloudflared, Authentik forward-auth, UFWβœ… Done
26Secrets management β€” Vault 2.0.2 with Raft on Longhorn. KV v2 (5 platform credentials + demo secret). Kubernetes auth backend. Agent Injector verified on platform-demo (2/2 pods, /vault/secrets/config injected). ArgoCD proxy fix (MAAS Squid) as bonus fix.HashiCorp Vault, Raft, Vault Agent Injectorβœ… Done
27Policy as code β€” OPA/Gatekeeper 3.22.2 admission controller. 3 enforced policies: block :latest tags, no privileged containers, require resource limits. Audit cycle confirmed 0 violations across all platform namespaces. All 3 rejection demos verified live.OPA, Gatekeeper, Regoβœ… Done
28Runtime threat detection β€” Falco 0.44.1 DaemonSet (3/3 nodes) via modern_ebpf driver (BPF CO-RE, kernel 6.8, no headers). 2 live detections: Contact K8S API Server From Container (Vault pod, MITRE T1565) + Read sensitive file untrusted (cat /etc/shadow). Two install gotchas: Squid proxy for falcoctl + inotify exhaustion on control-plane.Falco, eBPF, BPF CO-REβœ… Done
29CIS Kubernetes Benchmark β€” kube-bench v0.9.4 scored against k3s-cis-1.8. Control-plane: 49 PASS / 6 FAIL / 55 WARN. All 6 FAILs are k3s false positives (kube-bench scans kubelet CLI args; k3s configures these through config file + auto-provisioned certs). Verified: anonymous-auth disabled (401), read-only-port closed. Gatekeeper + Vault already satisfy 4 of the WARN items.kube-bench, CIS Benchmarkβœ… Done
30Supply chain security β€” Cosign keyless signing (GitHub OIDC β†’ Sigstore Fulcio CA, no key management) + syft CycloneDX SBOM generation integrated into platform-demo GHA CI. Signatures and SBOM attached as OCI referrers on ghcr.io. Gatekeeper K8sAllowedRegistries policy (warn): 116 violations audited across Helm workloads; platform-demo compliant (Harbor proxy prefix). Full chain: GHAS β†’ Cosign/SBOM β†’ Harbor Trivy β†’ Gatekeeper β†’ Falco.Cosign, syft, Sigstore, OCI referrersβœ… Done
56Multi-environment namespaces β€” namespace-based isolation ({team}-{env} convention) for insurance and collab teams across dev/staging/prod. ArgoCD ApplicationSet matrix generator creates 6 apps automatically. Per-env ResourceQuota (dev: 500m/1Gi, staging: 1/2Gi, prod: none) + LimitRange defaults. 15 Cloudflare Tunnel routes for env-prefixed public subdomains. CI pipeline yq bug fixed (Deployment-only targeting) + Harbor push via crane.ArgoCD ApplicationSet, Kustomize, ResourceQuota, LimitRangeβœ… Done
57Nextcloud 33 + Authentik OIDC β€” on-cluster document collaboration; user_oidc 8.10.1 auto-provisions users from Authentik; available at cloud.devandre.sbs.Nextcloud, user_oidc, Authentikβœ… Done
58Vault GitOps migration + CoreDNS completions β€” Vault adopted into ArgoCD app-of-apps (multi-source Helm); all 12 *.devandre.sbs hostnames resolve in-cluster via CoreDNS coredns-custom ConfigMap.ArgoCD multi-source, CoreDNSβœ… Done
59External Secrets Operator + Vault KV β€” ESO 0.10.7, ClusterSecretStore vault-backend (Kubernetes auth), 9 ExternalSecrets (all platform credentials pulled from Vault KV v2 into cluster Secrets).ESO, Vault KV v2βœ… Done
60Cert observability β€” cert-manager ServiceMonitor scraped by Prometheus, Grafana dashboard 20842, 3 PrometheusRule alerts (expiring within 14 d warning, 3 d critical, not-ready).cert-manager, Prometheus, Grafanaβœ… Done
62IAM hardening β€” k3s OIDC flags on API server, kubelogin installed (int128/kubelogin), minicloud-oidc kubeconfig for daily use, ClusterRoleBindings per Authentik group (Direction IT β†’ cluster-admin, CybersΓ©curitΓ©/Audit β†’ view), anonymous-auth disabled.kubelogin, OIDC, RBACβœ… Done
63Cluster hardening β€” SSH hardened on all 4 nodes (PasswordAuthentication no, PermitRootLogin no), UFW default-deny on all nodes, k3s audit policy + AES-CBC-256 secrets encryption at rest, k3s upgraded to v1.36.1.UFW, k3s audit, encryption-at-restβœ… Done
64Namespace isolation β€” default-deny NetworkPolicy ingress on all 23 platform namespaces, ResourceQuota + LimitRange on 8 namespaces, flannel VTEP fix (10.42.0.0/24 in webhook allowlists).NetworkPolicy, ResourceQuota, flannelβœ… Done
65Vault auto-unseal via AWS KMS β€” KMS key vault-auto-unseal (eu-west-1), IAM user vault-kms-unseal scoped to kms:Encrypt/Decrypt/DescribeKey, seal migration verified (delete pod β†’ 1/1 Ready in ~30 s, zero human input).Vault, AWS KMSβœ… Done
66Ollama local-path migration β€” both Ollama instances (fast-heron + star-kitten) pinned via nodeSelector, PVCs migrated Longhorn β†’ local-path NVMe (model weights are re-downloadable). 4 models: phi3-financial, phi3.5, llama3.2:3b, llama3.2:1b.Ollama, local-path, nodeSelectorβœ… Done
67Pod security hardening β€” PSA warn:restricted on all 23 namespaces, enforce:restricted on homer/podinfo/collab/insurance, 9 Gatekeeper admission policies in deny mode with 0 violations (no-root, no-privileged, approved-registry, resource-limits, TLS-only ingress, no-LB-in-dev, no-hostPath, no-latest-tag, no-privilege-escalation).PSA, Gatekeeper, Regoβœ… Done
AI GatewayEnterprise LLM gateway β€” LiteLLM 1.90.3 proxy with 7 cloud providers (Groq, OpenAI, Gemini, DeepSeek, Mistral, Anthropic Claude, HuggingFace featherless-ai) + 2 local Ollama nodes. Cloud fallback chain (Ollama β†’ Groq β†’ DeepSeek). Circuit breaker (3 failures β†’ 60 s cooldown). 3-tier dept key governance β€” 15 virtual keys with $5/$30/$100 monthly budget caps and 50k/100k/200k TPM limits. Valkey exact-match prompt cache (10 min TTL). Presidio PII/DLP pre-call guardrail. detect_secrets credential scanner. Langfuse tracing on every call. Grafana cost dashboard (8 SQL panels against LiteLLM PostgreSQL).LiteLLM, Ollama, Valkey, Presidio, Langfuseβœ… Done
LLM ObservabilityLangfuse 3.201.1 β€” traces every LiteLLM call with token counts, cost, model, department metadata, and latency. ClickHouse columnar store + Valkey + PostgreSQL + MinIO (S3 blobs). Authentik OIDC SSO; pre-provisioned org minicloud-platform + project ai-gateway via init env vars.Langfuse, ClickHouse, Valkeyβœ… Done
Security gapsFull security hardening β€” supply chain (Cosign + SBOM on both CIs, Dependabot on 4 repos, GPG-signed commits + branch protection on main), ingress & edge (HSTS globally, rate limiting, Authentik forward-auth on Prometheus/Alertmanager/Polaris), ArgoCD hardening (admin disabled, AppProject with explicit source/destination/resource whitelist). Regression check #19: 42 PASS / 0 FAIL / 0 WARN.Cosign, GPG, AppProject, NGINXβœ… Done
Observability gapsFull observability β€” Falco Sidekick β†’ Alertmanager pipeline (failed logins, new cluster-admin, privileged pod alerts), Polaris workload quality scorer at polaris.10.0.0.200.nip.io, DB backup scripts (pg_dump β†’ MinIO nightly), Vault raft snapshots (nightly), backup DR PrometheusRules (VeleroBackupFailed, MinioDiskFull), DR runbook (7 scenarios).Falco Sidekick, Polaris, Alertmanagerβœ… Done
Monitoring auditFull k8s monitoring gap analysis β€” PodStuckPending + ContainerOOMKilled PrometheusRules, 9-panel Workload Health Grafana dashboard, Alertmanager SMTP receiver (Phase 78 Stalwart), socat DaemonSet proxy for scheduler + controller-manager (hostNetwork: true on set-hog). Kine/SQLite discovery: cluster has no embedded etcd β€” kine_sql_* metrics already flow via kps-apiserver. Verdict: 6/6 data sources βœ… Β· 9/9 important metrics βœ… Β· 3/3 tools βœ…PrometheusRule, Grafana ConfigMap, socat, kube-state-metricsβœ… Done
App monitoringApplication-level RED metrics (Rate Β· Errors Β· Duration) β€” platform-demo + minicloud-plane instrumented with prometheus/client_golang, ServiceMonitors wired per overlay, NGINX Ingress PodMonitor + enableLatencyMetrics, CI bump-gitops via gh pr merge --admin. Three blocking fixes: wrong Prometheus service name in AnalysisTemplate (kube-prometheus-stack-prometheus β†’ kps-prometheus), NetworkPolicy blocking Argo Rollouts β†’ Prometheus, kubectl-argo-rollouts plugin missing. Canary AnalysisRuns now pass.prometheus/client_golang, ServiceMonitor, PodMonitor, Argo Rolloutsβœ… Done
68–69minicloud-plane β€” Go microservice: Plane CE API client + webhookβ†’NATS bridge + Backstage plugin (EntityPlaneIssuesContent)Go, NATS JetStream, Plane CE, Backstage pluginβœ… Done
70Backstage Software Templates β€” go-service golden-path scaffold (service + gitops + catalog auto-generated, CI skeleton, PR workflow)Backstage scaffolder, Nunjucksβœ… Done
71Backstage TechDocs β€” MkDocs local builder + publisher, mkdocs-techdocs-core, docs scaffolded into every new serviceTechDocs, MkDocsβœ… Done
73Argo Rollouts β€” canary deployment for platform-demo (50 % β†’ Prometheus AnalysisTemplate β†’ 100 %)Argo Rollouts v1.9, canary, Prometheusβœ… Done
74VPA updateMode:Auto β€” backstage, langfuse-web, litellm; ClickHouse + Prometheus stay OffVPA Fairwinds v4, vertical autoscalingβœ… Done
75Stakater Reloader + ArgoCD controller memory fix (OOMKill at 1 Gi / 183 restarts)Reloader v1.4, ArgoCD 2 Gi controllerβœ… Done
76Matrix Synapse + Element Web β€” federated instant messaging, Authentik OIDC SSO, 9 installation gotchas resolvedMatrix Synapse v1.156, Element Web v1.11βœ… Done
77Jitsi Meet β€” self-hosted video conferencing, JVB hostNetwork on star-kitten, Authentik forward-authJitsi Meet v2.21, JVB, WebRTCβœ… Done
78Stalwart Mail Server β€” SMTP/IMAP/IMAPS, JMAP management API, Alertmanager STARTTLS integration, Onboard Employee templateStalwart v0.16.13, JMAPβœ… Done
79ERPNext / Frappe HR β€” HR source of truth, Authentik OIDC SSO, employee-created webhook triggers Backstage scaffolderERPNext v16.28, Frappe, MariaDBβœ… Done
80Amazon SES outbound relay β€” STARTTLS relay via Stalwart, SPF / DKIM / DMARC, production access submittedAmazon SES eu-west-1, SMTP relayβœ… Done
β€”Data LayerKafka/Redpanda, ClickHouse, dbt, Superset, OpenMetadataπŸ”œ

Current Stack (Live)​

── INFRASTRUCTURE ──────────────────────────────────────────────────
MAAS β†’ bare-metal provisioning (4 ThinkPads, PXE)
k3s v1.36.2+k3s1 β†’ Kubernetes cluster (1 control-plane + 4 workers, upgraded via system-upgrade-controller)
MetalLB β†’ load balancer IPs (10.0.0.200)
Longhorn β†’ distributed block storage
local-path β†’ NVMe-backed storage (Ollama model weights)
Harbor β†’ private container registry (Trivy scanning)

── AUTOMATION & DELIVERY ───────────────────────────────────────────
Ansible β†’ infrastructure automation
OpenTofu β†’ IaC for MAAS resources
ArgoCD β†’ GitOps app-of-apps (AppProject with explicit whitelist)
GitHub Actions→ CI/CD (cosign-signed, GPG-signed bump commits)
ESO β†’ External Secrets Operator (9 ExternalSecrets ← Vault)

── PLATFORM SERVICES ───────────────────────────────────────────────
Velero + MinIO β†’ backup & disaster recovery (daily + k3s snapshots)
Vault β†’ secrets management (AWS KMS auto-unseal, Raft)
KEDA β†’ event-driven autoscaling (NATS JetStream)
NATS β†’ message broker (JetStream HA)
Backstage β†’ developer portal (Authentik OIDC, TechDocs, Software Templates, K8s + ArgoCD + Grafana plugins)
Argo Rollouts β†’ canary progressive delivery (platform-demo, analysis via Prometheus)
VPA β†’ vertical pod autoscaler (Auto mode: backstage, litellm, langfuse-web)
Reloader β†’ zero-downtime ConfigMap/Secret hot-reload (homer, backstage, litellm, searxng)
Plane CE β†’ project management (plane.devandre.sbs)
minicloud-plane β†’ Go Level 4 API: Plane ↔ NATS ↔ Backstage integration
ERPNext v16 β†’ HR source of truth + employee onboarding webhook (erp.devandre.sbs)

── COLLABORATION ────────────────────────────────────────────────────
Stalwart v0.16 β†’ self-hosted mail (SMTP/IMAP, Amazon SES relay, JMAP API)
Matrix Synapse→ federated chat server (Authentik OIDC, PostgreSQL, Redis)
Element Web β†’ Matrix client (element.devandre.sbs)
Jitsi Meet β†’ video conferencing (JVB hostNetwork on star-kitten, Tailscale-only ICE)
Nextcloud β†’ file collaboration + OnlyOffice .docx editing (Authentik SSO)

── OBSERVABILITY ───────────────────────────────────────────────────
Prometheus β†’ metrics (kube-prometheus-stack)
Grafana β†’ dashboards (LiteLLM cost dashboard, cert expiry, backup DR)
Loki + Promtail β†’ logs
Alertmanager β†’ 3-tier alert routing + Falco Sidekick webhook
Chaos Mesh β†’ reliability testing
Falco β†’ runtime threat detection (eBPF, modern_ebpf driver)
Falco Sidekick→ Falco → Alertmanager pipeline
Polaris β†’ workload quality scorer
Langfuse β†’ LLM observability (ClickHouse + Valkey, traces every AI call)
Tailscale β†’ remote access VPN
Cloudflare Tunnel β†’ public access (*.devandre.sbs, no Tailscale)

── SECURITY LAYER ──────────────────────────────────────────────────
Authentik β†’ SSO / OIDC (16 dept groups, 16 demo personas, MFA enforced)
OPA/Gatekeeper→ 9 admission policies, deny mode, 0 violations
cert-manager β†’ internal PKI + cert observability PrometheusRules
Cosign + syft β†’ keyless image signing + CycloneDX SBOM in CI
ESO + Vault KV→ all platform secrets in Vault (no plaintext in git)
NetworkPolicy β†’ default-deny ingress/egress on all 23 namespaces
PSA β†’ enforce:restricted on 8 namespaces
GPG commits β†’ signed commits + branch protection on critical repos
UFW β†’ host firewall on controller + all cluster nodes
HSTS + rate-limit β†’ global HSTS, 20r/s public, 5r/s auth (NGINX ConfigMap)

── AI / ML ─────────────────────────────────────────────────────────
LiteLLM β†’ OpenAI-compatible gateway (7 cloud providers + 2 local Ollama)
Ollama β†’ local LLMs on NVMe (phi3-financial, llama3.2:3b/1b, phi3.5)
Valkey β†’ exact-match prompt cache (10 min TTL, ~80ms cache hit)
Presidio β†’ PII/DLP pre-call guardrail (anonymizes before cloud APIs)
detect_secrets→ credential scanner on all prompts
Open WebUI β†’ chat interface (Authentik OIDC, CA bundle init container)
Langfuse β†’ per-call traces with cost, model, department, latency

── DATA LAYER (future) ──────────────────────────────────────────────
Redpanda β†’ event streaming (Kafka-compatible)
ClickHouse β†’ columnar analytics warehouse
dbt β†’ SQL transformation layer
Superset β†’ self-hosted BI dashboards
OpenMetadata β†’ data catalog, lineage, governance

CV / LinkedIn Summary​

  • Designed and deployed a 5-node bare-metal Kubernetes platform (4Γ— Lenovo ThinkPad + 1Γ— MacBook Pro 2012, 36 cores / 68 GiB RAM / 2.3 TB) using MAAS (Metal as a Service), PXE provisioning for ThinkPads, and USB install for Apple hardware incompatible with standard PXE
  • Achieved ~$15,000–$17,000 / year in cloud cost avoidance by running equivalent capacity on owned hardware at ~$20–35/mo electricity, versus $1,300–$1,430/mo for compute-optimized cloud equivalents (AWS 9Γ— c6i.xlarge / Azure F32s_v2 + F4s_v2 / GCP N2 Custom 36 vCPU β€” On-Demand pricing, US regions)
  • Implemented full GitOps delivery pipeline: ArgoCD app-of-apps, GitHub Actions CI/CD, Cosign keyless image signing, CycloneDX SBOM, GPG-signed commits, and branch protection on critical repos
  • Built enterprise AI gateway (LiteLLM 1.90.3) routing across 7 cloud providers and 2 local Ollama nodes β€” with cloud fallback chain, circuit breaker (3 failures β†’ 60 s cooldown), 3-tier department budget governance ($5/$30/$100 / 30 d), Valkey prompt cache, and Grafana cost dashboard backed by PostgreSQL SQL
  • Deployed PII/DLP and credential guardrails: Microsoft Presidio anonymizes prompts before any cloud API receives them; detect_secrets blocks credential leakage at inference time
  • Implemented Langfuse LLM observability (ClickHouse + Valkey + PostgreSQL) tracing every AI Gateway call with token counts, cost, model, and department metadata
  • Enforced 9 OPA/Gatekeeper admission control policies in deny mode with 0 violations: no-root containers, no-privileged pods, approved registry only, resource limits required, TLS-only ingress, no LoadBalancer in dev, no hostPath, no latest tag, no privilege escalation
  • Applied defence-in-depth: default-deny NetworkPolicy on all 23 namespaces, PSA enforce:restricted on 8 namespaces, AES-CBC-256 secrets encryption at rest, k3s audit logs, SSH hardening + UFW default-deny on all 5 cluster nodes, HSTS globally, rate limiting, and Authentik forward-auth on internal dashboards
  • Achieved zero-touch Vault auto-unseal via AWS KMS (scoped IAM policy, seal migration verified β€” pod deletion β†’ 1/1 Ready in ~30 s with no human input)
  • Deployed External Secrets Operator with Vault KV v2 backend (9 ExternalSecrets β€” all platform credentials pulled from Vault; no plaintext secrets in git)
  • Implemented full backup & DR: Velero + MinIO (daily cluster backup), nightly DB dumps (pg_dump β†’ MinIO), Vault raft snapshots, PrometheusRule alerts (VeleroBackupFailed, MinioDiskFull), and validated restore test
  • Built Authentik-based department RBAC: 16 groups, 16 demo personas with group-based policy bindings across ArgoCD, Grafana, Harbor, Open WebUI, and Nextcloud; MFA enforced on all accounts
  • Established full platform health suite: regression check script covering cluster, security, observability, AI Gateway, and backups β€” Regression check #40: 22 PASS / 0 FAIL / 0 WARN (all drifts resolved)
  • Implemented remote access via Tailscale VPN and Cloudflare Tunnel (*.devandre.sbs public edge, no Tailscale required)
  • Applied chaos engineering with Chaos Mesh: PodChaos (0 ms downtime under 5 simultaneous kills), NetworkChaos (200 ms latency injection + clean recovery), StressChaos (contained cgroup OOM)