Compare commits
4 commits
98c02fe122
...
5c11a0b724
Author | SHA1 | Date | |
---|---|---|---|
|
5c11a0b724 | ||
|
f87143f1fb | ||
|
51a7fb2f7e | ||
|
7b591fca73 |
4 changed files with 104 additions and 6 deletions
|
@ -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
|
||||
|
|
16
Makefile
16
Makefile
|
@ -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
|
||||
|
||||
|
|
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 and this website is now
|
||||
running in kubernetes.
|
||||
|
||||
[[!tag ikiwiki kubernetes]]
|
|
@ -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',
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue