Bei jedem Release
Ich verbinde mich per SSH mit jedem Server, ziehe das Release, starte den Dienst neu und rufe den Health-Check mit curl ab, eine Maschine nach der anderen.
So läuft es heute
ssh web-1.git pull.sudo systemctl restart app.curl /healthz.Warten. Noch mal.exit.ssh web-2.
Jedes Release, jede Maschine.
Sagen Sie es Kitewell einmal
Erstellen Sie einen chain-Workflow für meine Webserver-Gruppe, der /srv/app mit git aktualisiert, auf meine Genehmigung wartet, den Dienst app neu startet und auf jeder Maschine http://127.0.0.1:8080/healthz prüft, bevor er zur nächsten übergeht.
Das ist die ganze Einrichtung. Kitewell legt jeden Schritt zur Prüfung vor, und nichts wird gespeichert, bevor Sie es übernehmen.
Für Ihre eigene Version kopieren Sie diesen Text und füllen die Lücken aus:
Erstellen Sie einen Workflow für [meine Servergruppe], der Maschine für Maschine [den Ordner der App] mit git aktualisiert, auf meine Genehmigung wartet, [den Dienst der App] neu startet und [die Adresse des Health-Checks] prüft, bevor er zur nächsten übergeht.
Dann läuft es von selbst
Rollout · web-GruppeLäuft auf diesem Computer
- Release ziehenEin Fast-Forward-Pull auf der Maschine.Fertig
- Auf Ihr OK wartenDer Neustart wartet Maschine für Maschine auf Ihre Genehmigung.Wartet auf Sie
- Dienst neu startenLäuft, nachdem Sie genehmigt haben.Fertig
- Prüfen, ob er antwortetSechs Versuche im Abstand von fünf Sekunden. Eine Maschine, die nie antwortet, stoppt den Rollout.Fertig
Was Sie stattdessen bekommen
Rollout · web-Gruppe
web-3 hat den Health-Check nicht bestanden. Rollout gestoppt.
- web-1Gesund
- web-2Gesund
- web-3Keine Antwort von /healthz
- web-4Unberührt
Gut zu wissen
- Weil die Gruppe beim ersten Fehler stoppt, hält eine Maschine, die ihre Prüfung nicht besteht, den Rollout an, und der Rest bleibt unberührt.
- Hostschlüssel werden im Projekt genehmigt, und jedes Passwort stammt aus einem Secret; der Workflow enthält also keins von beiden.
Was es braucht
- Die als Gruppe registrierten Server: eine Maschine nach der anderen, Stopp bei einem Fehler
Weitere Aufgaben
- Jeden MontagJeden Montag aktualisiere ich unsere Abhängigkeiten, lasse die Tests laufen und verliere den Vormittag damit, alles zu reparieren, was kaputtgegangen ist.
- Jeden MorgenJeden Morgen öffne ich jeden Pull Request, nur um herauszufinden, welcher etwas kaputtmachen könnte.
- Jeden MorgenJeden Morgen summiere ich die Bestellungen von gestern aus einem CSV-Export und schreibe denselben kleinen Bericht.