Compare commits

...

4 commits

Author SHA1 Message Date
Nico Schottelius
5c11a0b724 disable git pull & push
will fail inside the container anyway:
2024-10-12 00:04:02 +09:00
Nico Schottelius
f87143f1fb ++note 2024-10-12 00:03:00 +09:00
Nico Schottelius
51a7fb2f7e Add blog about k8s 2024-10-12 00:00:55 +09:00
Nico Schottelius
7b591fca73 updates for container 2024-10-11 23:22:48 +09:00
4 changed files with 104 additions and 6 deletions

View file

@ -1,9 +1,9 @@
FROM alpine:3.20
RUN apk add --no-cache ikiwiki
RUN apk add --no-cache ikiwiki git
COPY . /build
WORKDIR /build
RUN ikiwiki --refresh --setup ikiwiki.setup
RUN ikiwiki --rebuild --setup ikiwiki.setup
FROM nginx:alpine
COPY --from=0 /tmp/www /usr/share/nginx/html

View file

@ -4,11 +4,24 @@ BROWSER=conkeror
#IKIWIKI=ikiwikitest.sh
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=
@ -36,4 +49,3 @@ clean: all
# @echo "Press return to publish..."
# @read avariable
# git push --mirror

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 and this website is now
running in kubernetes.
[[!tag ikiwiki kubernetes]]

View file

@ -30,7 +30,7 @@ use IkiWiki::Setup::Standard {
# rcs backend to use
rcs => '',
# plugins to add to the default configuration
add_plugins => [qw{goodstuff meta sidebar tag rawhtml flattr}],
add_plugins => [qw{git goodstuff meta sidebar tag rawhtml flattr}],
flattr_userid => "telmich",
@ -278,6 +278,9 @@ use IkiWiki::Setup::Standard {
# parent page tags are located under
tagbase => 'tags',
# emtpy disables pull & push
gitorigin_branch => '',
# underlay plugin
# extra underlay directories to add
#add_underlays => [qw{/home/users/nico/wiki.underlay}],
@ -286,7 +289,6 @@ use IkiWiki::Setup::Standard {
# git_wrapper => '/home/services/git/nico.schottelius.org/hooks/post-update',
# git_wrappermode => '06755',
# gitorigin_branch => 'origin',
# gitmaster_branch => 'master',
}