Wer seinen Arbeitsalltag in einer Flut von Abhängigkeiten verbringt die aus fremden Hängen fließen, dann kommt es schon mal vor, dass man auf eine Änderung reagieren und etwas neustarten muss.
Wenn ihr wisst, wovon ich rede, dann arbeitet ihr vermutlich auch mit Kubernetes und habt die Aufgabe Pods über ein geändertes secret zu informieren.
Da ich auf solche Aufgaben keine Lust habe, suche ich mir eine weitere Abhängigkeit die das für mich übernimmt - ich bin ja modern.
In meinem Fall geht es darum, dass ich in einem KeyVault ein Secret ändern will und das daraus gemountete Kubernetes Secret aktualisiert wird und eben die Pods, die dieses Secret nutzen bitte automatisch neu starten - klar, oder?
Hier kommt der reloader zum Einsatz:
Einfach installiert mit Hilfe von
kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml
kann ich dann ein Deployment einfach mit einer weiteren Annotation ausstatten und der Drops ist gelutscht: Das damit verbundene Deployment wird dann gemäß der Konfiguration mit einem roleout restart angepasst.
Ihr betreibt einen Server im Internet und wollt euch zusätzlich zu den Provider-Diensten gegen DDOS Schützen?
Dann habe ich ein schickes kleines Dingen für euch. Ich habe es bei meiner eigenen Suche gefunden, weil ich ein paar Server bei Hetzner zusätzlich absichern wollte.
Sicher ist sicher.
Dieses Skript ist natürlich vor einer Benutzung anzupassen. Aber es bietet eine gute Grundlage für alle weiteren Schritte bei der Einrichtung des Servers.
Quellen und Links:
Manchmal kommt es vor, dass man eine Datei oder einen Ordner auf seinem Server beobachten möchte, um im Fale eines Zugriffs, oder einer Aktion darauf reagieren zu können.
In meinem Fall geht es darum, dass die von mir gesetzte SGID ignoriert wird, weil ein Prozess explizit die Benutzer- und Gruppenzugehörigkeit beim schreiben einer Datei angibt.
Daher habe ich mir einen Service gebaut, welcher die Zugriffe auf einen Ordner überwacht und entsprechende Anpassungen (chmod und chown) ausführt, wenn es notwendig ist.
Dazu nutze ich inotifywait.
Zuerst erstelle ich ein Skript, das diese aufgabe für sich erledigen kann. Es kann auch händisch ausgeführt werden, damit man ordentlich testen kann.
nano /usr/bin/lookup_folder.sh
#!/bin/bash
while true; do
inotifywait -e modify,create,move -r -m --format '%w%f /PATH/TO/FOLDER |
while read -r fname
do
chmod -v -R 775 "$fname"
chown -v -R $USER:$GROUP "$fname"
done
done
Anschließend - wenn alle Tests erfolgreich sind - wird ein systemd service erstellt, der eben dieses langlaufende Skript "startet"
nano /lib/systemd/system/lookup_folder.service
[Unit]
Description=Change file permissions
[Service]
ExecStart=/usr/bin/lookup_folder.sh
[Install]
WantedBy=multi-user.target
Anschließend muss man das alles noch enablen
systemctl daemon-reload
systemctl enable lookup-folder-service.service
systemctl start lookup-folder-service.service
und wenn man alles richtig gemacht hat, dann sieht man die Ausgabe der Befehle im Journal
journalctl -f -u lookup-folder-service.service