Add blog about k8s
This commit is contained in:
parent
7b591fca73
commit
51a7fb2f7e
3 changed files with 93 additions and 2 deletions
|
@ -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
|
||||
|
|
9
Makefile
9
Makefile
|
@ -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=
|
||||
|
|
84
blog/2024-10-11-moving-into-k8s.mdwn
Normal file
84
blog/2024-10-11-moving-into-k8s.mdwn
Normal 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]]
|
Loading…
Reference in a new issue