Legacy Migration
Before — Bare Metal LAMP
Apache 2.4 — web server + mod_rewrite
WordPress 6.x — PHP application
MySQL 8.0 — database (local socket)
Let's Encrypt — SSL (certbot)
Single VPS — no HA, manual updates
Wazuh agent — security monitoring
Single point of failure. Manual deployments. No rollback. No resource isolation. Shared kernel with all other services.
After — Kubernetes
namespace: wordpress6
Deployment: wordpress (2 pods, rolling update)
Deployment: mysql (ClusterIP, internal only)
Service: LoadBalancer → MetalLB 10.99.101.205
OVH nginx → WireGuard → MetalLB → pod
Wazuh SIEM — cluster-wide via DaemonSet
HA-capable. Rolling deployments. Resource limits. Pod restart policies. Namespace isolation. Declarative config in Git.
Cluster Nodes & API
Polling cluster API…
Namespaces, Deployments & Pods
Fetching workloads…
Network Topology
Internet
HTTPS :443 → mfa2fa.com
OVH VPS — nginx reverse proxy
TLS termination · security headers · Let's Encrypt
▲ Proxying
WireGuard Tunnel
wg0 · encrypted · OVH → homelab LAN
▲ Active
MetalLB — Layer 2 load balancer
pool: 10.99.101.200–230 · wordpress6: 10.99.101.205 · dashboard: 10.99.101.206
Loading…
Kubernetes — 3-node homelab cluster
kubeadm · ContainerD · Flannel CNI · Wazuh SIEM
kube1
10.99.0.30
kube2
10.99.0.31
kube3
10.99.0.32
Exposed Services via MetalLB