Hosting platform (2026)
Uitgevoerde taken
- Automatiseren VM deployment met OpenTofu
- Automatiseren VM deployment met Gitlab CI/CD pipelines
- Hosten applicaties op Kubernetes cluster
- Hosten applicaties met ArgoCD
Project
Om meer te leren over automatisering en Kubernetes heb ik op mijn homeserver een hostingplatform gebouwd. Dit platform maakte gebruik van de CI/CD pipeline in Gitlab om automatisch een Talos cluster op te bouwen. Dit wil zeggen dat wanneer een nieuwe configuratie gepushed wordt naar Gitlab, er automatisch een proces werd gestart waardoor veranderingen in de configuratie werden doorgevoerd. Deze veranderingen konden bijvoorbeeld zijn dat er Virtuele Machines (VM's) toegevoegd moeten worden, er meer RAM of meer CPU's toegevoegd moeten worden aan deze VM's ... De werking van het platform was als volgt:
- Gitlab repository met CI/CD pipeline
- Om te beginnen had ik een Gitlab repository aangemaakt. Deze diende om de code op te slaan, aan versiebeheer te doen, en gebruik te maken van de Gitlab CI/CD pipelines. Wanneer een nieuwe update van de configuratie werd doorgepushed naar de Gitlab repository, begon de pipeline te lopen.
- Opentofu en Gitlab runner
- OpenTofu is een opensource project, gemaakt om infrastructuur (VM's, containers, permissies ...) op te stellen als code. Dit zorgt ervoor dat implementaties in cloud systemen of hypervisors geautomatiseerd kunnen worden. De Gitlab pipeline die ik had opgesteld startte OpenTofu in een container op een aparte VM. Deze VM had toegang tot mijn Proxmox omgeving. Hierdoor kon deze automatisch VM's op mijn proxmox omgeving opbouwen en beheren. Als de container werd opgestart, begon deze automatisch een Kubernetes cluster op mijn Proxmox omgeving te implementeren en configureren.
- Talos OS
- Het OS dat ik gebruikte voor mijn kubernetes cluster VM's was Talos. Deze OS is speciaal ontwikkeld voor Kubernetes en kan enkel bestuurd worden door middel van API's. Rechtstreekse toegang via bijvoorbeeld ssh of een console is niet mogelijk. Dit zorgt voor een veel kleinder aanvalsoppervlak. Talos is ook een "immutable" OS. Kort gezegd betekent dit dat er geen veranderingen kunnen gebeuren in de kern van het OS, wat de aanvalsoppervlak ook weer verder verkleint.
- ArgoCD
- ArgoCD is een applicatie gemaakt om andere applicaties via GitOps te implementeren in de Kubernetes cluster. ArgoCD werd automatisch geinstalleerd door OpenTofu bij het opbouwen van de Kubernetes cluster. Hierdoor kon via een nieuwe Gitlab repositorie die werd gekoppeld aan ArgoCD, makkelijk applicaties worden opgestart en beheerd. Dit met een duidelijke User Interface die voorzien wordt door ArgoCD.