Add blog about k8s

This commit is contained in:
Nico Schottelius 2024-10-12 00:00:55 +09:00
parent 7b591fca73
commit 51a7fb2f7e
3 changed files with 93 additions and 2 deletions

View file

@ -1,6 +1,6 @@
FROM alpine:3.20
RUN apk add --no-cache ikiwiki
RUN apk add --no-cache ikiwiki git
COPY . /build
WORKDIR /build
RUN ikiwiki --rebuild --setup ikiwiki.setup

View file

@ -5,15 +5,22 @@ BROWSER=conkeror
IKIWIKI=ikiwiki
VERSION=$(shell git describe --always)
ARGOCD_HOME=$HOME/vcs/k8s-config/cluster/p10/apps/templates/
ARGOCD_YAML=nicoweb.yaml
ARGOCD_APP=$ARGOCD_HOME/$ARGOCD_YAML
all: container
pub:
git push --mirror
all:
setup:
$(IKIWIKI) --refresh --setup ikiwiki.setup
container:
docker build -t harbor.k8s.ungleich.ch/nico/www.nico.schottelius.org:$(VERSION) .
docker push harbor.k8s.ungleich.ch/nico/www.nico.schottelius.org:$(VERSION)
sed -i "s,harbor.k8s.ungleich.ch/nico/www.nico.schottelius.org:.*,harbor.k8s.ungleich.ch/nico/www.nico.schottelius.org:$(VERSION)" $(ARGOCD_APP)
cd $(ARGOCD_HOME) && git add $(ARGOCD_YAML) && git commit -m "Update www.nico.schottelius.org to $(VERSION)" && git push
lall:
$(IKIWIKI) --refresh --setup ikiwiki.setup --set destdir=../dst --set srcdir=. --set git_wrapper= --set git_wrappermode= --set gitorigin_branch= --set gitmaster_branch=

View file

@ -0,0 +1,84 @@
[[!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.
[[!tag ikiwiki kubernetes]]