[[!meta title="www.nico.schottelius.org now hosted in kubernetes"]] ## History I started this website in 2008, according to the [git log on the 2008-10-30](https://code.ungleich.ch/nico/www.nico.schottelius.org). Since then it has been based on [ikiwiki](https://ikiwiki.info), a sample word processor. This website has been hosted on many different physical and virtual servers since then. And now... ## Moving into kubernetes It is time for its next step. When you are reading this, the website is likely already being served by a tiny container in a larger kubernetes cluster. But why moving it in the first place? Isn't a static webserver running nginx good enough? ## The ungleich infrastructure The one or other of you knows that I work for [ungleich](https://ungleich.ch), a Swiss Open Source company with the focus on sustainability. The infrastructure at ungleich has been always evolving and one of the earliest credos was to run anything that is potentially being offered as a product ourselves. Thus any service you can get from ungleich, is also being run internally - anything from Matrix to Nextcloud to Mattermost to Netbox, you name it. ## VM workloads are getting old While there is still a significant amount of virtual machines running at ungleich, internally most (more than 80%) of the workload has been migrated to kubernetes a long time ago. The main advantage of kubernetes for ungleich is to be able to run many similar services (again such as matrix) and deploy them using [argocd](https://argo-cd.readthedocs.io/). While we are still using [cdist](http://cdi.st/) for configuration management and for configuring servers (both bare metal as well as VMs), deploying applications via kubernetes is now a well known pattern and effectively reduces the effort. This particular website is running on a virtual machine we internally call "staticweb", as it only hosts statically generated websites, no dynamic content at all. And it has been on our "to migrate" list for about 1.5 years. So it's time to move on... ## How to run a website in kubernetes There are so many different ways to run applications in kubernetes, today I want to show you a rather simple one. As I mentioned, this website is built using ikiwiki and backed by git. It actually uses a [Makefile](/Makefile) for a long time and since today also a [Dockerfile](/Dockerfile) to generate its own container. Makefiles are not always nice, but they have one very nice way of working: if one command fails, the makefile aborts. So we can use it essentially to: * build the container * upload the container * update the argocd manifest to refer to the latest container And each step is only executed if the previous one was successful. Instead of using a too fancy build pipeline that runs async in some amazing build cluster I am just executing make On my notebook and everything else is built & triggered and uploaded. If you can read this, my build was successful and this website is now running in kubernetes. [[!tag ikiwiki kubernetes]]