Blog Upptime
Ich hatte nun schon länger keinen Blogeintrag mehr gemacht. Aber ich habe immer versucht meine Infrasturktur auf den letzten Stand zu halten. Dieser Blog wird auf einem Kubernetes Cluster gehostet, das sollte jeder Node und gelegentlich auch die Deployments aktualisiert werden.
Wer ein bisschen geschaut hat, was sonst noch unter meinem Namen im Netz herumschwirrt, wird sicherlich auch meine Upptime Check auf Github gefunden haben. Dieses Zeigt ein düsteres Bild meines Blogs :-(

Nun bin ich diesem Phänomen mal auf dem Grund gegangen. Ich wusste, dass der Blog aus irgendeinem Grund nicht startete, wenn ich einen Neustart des Nodes machte, auf welchem der Blog läuft. Meist brauche für meine Infrastruktur Updates einige Minuten. Alles ist über Ansible Scripts automatisiert. Ein Cookbook aktualisiert das Node Betriebssystem und startet bei Bedarf neu.
Nachdem wieder der Blog nicht funktioniert hatte, machte ich einfach ein:
kubectl rollout restart deployment blog
Also irgendetwas am Deployment stimmt nicht:
spec:
containers:
- name: blog
image: nginx:alpine
[...]
volumeMounts:
- mountPath: /usr/share/nginx/html
name: blog-volume
subPath: public
readOnly: true
initContainers:
- name: git
image: alpine/git
args:
- clone
- '--'
- 'https://xxxx/luschmar/blog.git'
- '/root/'
[...]
volumeMounts:
- mountPath: /root
name: blog-volume
volumes:
- name: blog-volume
emptyDir:
sizeLimit: 500Mi
Mein Blog ist statisch gehostet. Dabei cloned ein init-Container das Repository und stellt es über einen Nginx bereit.
Irgendwie scheint das alles zu stimmen. Also habe ich den betroffenen Node neugestartet und versuche über die Logs mehr herauszufinden:
kubectl logs deployments/blog git
fatal: destination path '/root' already exists and is not an empty directory.
Da ist also der Fehler. Mein Volume ist gar nicht so leer, wie ich dachte. Wenn ich das Deployment als neustarte wird das Volume wieder leer angelegt, und kann somit wieder clonen.
Für den Moment werde ich einen Workaround machen:
initContainers:
- name: del
image: busybox
command: [ "/bin/rm", "-rf", "/root/*" ]
volumeMounts:
- mountPath: /root
name: blog-volume
- name: git
image: alpine/git
args:
- clone
- '--'
- 'https://xxxx/luschmar/blog.git'
- '/root/'
Ich glaube in Zukunft muss ich den Blog auch wieder anders ausrollen. Ich denke, ich werde im internen Git einen Container Bauen, welche den Blog direkt enthält.