البنية التحتية، مكتوبةً.
ملاحظات دوّنتها أثناء بناء عنقود مستضاف ذاتياً وإعادة بنائه مرّات. هي أدلّة تشغيل لا مقالات — كُتبت لتُتَّبع أمام الطرفية، بما فيها التفاصيل التي لا تتبيّن أهمّيتها إلّا بعد أن تصطدم بها.
هذه الأدلّة محفوظة بالإنجليزية. فالأوامر وملفّات الإعداد واحدة في كلّ اللغات، وتوزيعها على ثلاث نسخ لا يضيف إلّا احتمال تخلّف إحداها عن التحديث.
A Kubernetes cluster on bare-metal VMs, with kubeadm
From a fresh Ubuntu VM to a working single control-plane cluster: static networking, containerd, the kernel modules nobody mentions until it fails, kubeadm init, Flannel, Helm and the dashboard.
kubeadmcontainerdFlannelHelmUbuntuA highly available control plane behind HAProxy
Three control-plane nodes behind one TCP load balancer, so losing a node loses nothing. The whole trick is that the API server is fronted at layer 4, not layer 7.
HAProxyHAkube-apiserverTCPDeploying a NestJS API to Kubernetes with Ingress, TLS and MetalLB
A multi-stage image, a Deployment and Service, then the three pieces that turn a NodePort into something you would actually put a domain in front of: NGINX Ingress, cert-manager and MetalLB.
NestJSIngresscert-managerMetalLBHelmPublishing a Next.js app through a Cloudflare Tunnel
Serving a self-hosted app on a real domain without opening a single inbound port — and the resolver quirk that made it look broken when it was not.
CloudflarecloudflaredNext.jssystemd