Erste Schritte mit Deploio
Deploio ist eine Fully Managed App-Plattform, die nur den Quellcode Ihrer Web-Applikation benötigt und Continuous Development und Deployment für die Anwendung komplett übernimmt. Aktuell unterstützt Deploio die folgenden Programmiersprachen:
Wenn Ihre bevorzugte Sprache fehlt, Sie aber gerne Deploio nutzen würden, kontaktieren Sie uns bitte oder aktivieren Sie das Dockerfile feature. Wir werden je nach Nachfrage weitere Sprachen hinzufügen.
Deployment ihrer ersten Applikation
Deploio steht über das cockpit UI, über ein CLI und eine API zur Verfügung. Um das CLI zu installieren und einzurichten, sehen Sie sich bitte die nctl-Dokumentation an.
Sobald nctl
eingerichtet ist, können Sie Ihre erste Applikation erstellen. In
dieser Anleitung deployen wir eine der Beispiel-Apps, die wir in unserem
deploio-Beispiele-Repository
bereitgestellt haben.
Für das einfachste Beispiel benötigen wir nur die Git Url mit unserer App-Quelle und dem Unterverzeichnis, falls die Anwendung nicht im Hauptverzeichnis des Repositories zu finden ist. Sie können das GitHub Repository gerne selbst durch erstellen eines Forks nutzen, um Änderungen vorzunehmen und zu sehen, wie sich diese auf die App auswirken.
$ nctl create app go-example --git-url=https://github.com/ninech/deploio-examples --git-sub-path=go
Creating a new application
✓ created application "go-example" 🏗
✓ waiting for build to start ⏳
✓ building application 📦
✓ releasing application 🚦
✓ release available ⛺
Your application "go-example" is now available at:
https://go-example.46e4146.deploio.app
Nachdem die Applikation erfolgreich erstellt wurde, können Sie auf sie zugreifen:
$ curl https://go-example.46e4146.deploio.app
Hello from a Go Deploio app!
Benutzung eines privaten Git Repositories
Im obigen Beispiel haben wir ein öffentliches Git Repository genutzt, welches keine Authentifizierung benötigt, um auf den darin enthaltenen Code zuzugreifen. Falls sich ihr Applikations-Code in einem privaten Git Repository befindet, so können Sie verschiedene Authentifizierungsarten in Ihrer Deploio-Applikation konfigurieren.
Builds und Releases
Nachdem wir nun eine Applikation deployed haben, können wir ein bisschen näher ins Detail gehen und uns den Lebenszyklus der Anwendung ansehen. Die Erstellung teilt sich in zwei wichtige Phasen auf:
- Die Build-Phase: Sie wird von jeder Veränderung des Quellcodes angestossen und
erstellt
Builds
. - Die Release-Phase: Sie wird veranlasst, wenn sich das Image entweder aufgrund
eines neuen Builds verändert, oder wenn eine Konfigurationsänderung
vorgenommen wird. Sie erstellt
Releases
.
Builds
und Releases
können innerhalb des CLI mit ihren jeweiligen Befehlen
aufgelistet werden.
# alle Builds auflisten
$ nctl get builds
nctl get builds
NAME APPLICATION STATUS AGE
go-example-build-1 go-example success 5m
# alle Releases auflisten
$ nctl get releases
NAME BUILDNAME APPLICATION SIZE REPLICAS STATUS AGE
saved-hawkeye-2jcvs go-example-build-1 go-example micro 1 available 7m
Um exemplarisch einen neuen Release zu erstellen, können wir die Replicas der
Applikation von 1 auf 2 erhöhen, indem wir den Befehl nctl update app
verwenden:
$ nctl update app go-example --replicas=2
✓ updated Application "go-example" ⬆️
$ nctl get releases
NAME BUILDNAME APPLICATION SIZE REPLICAS STATUS AGE
saved-hawkeye-2jcvs go-example-build-1 go-example micro 1 superseded 100m
helping-aztec-l492k go-example-build-1 go-example micro 2 available 6s
Wie Sie sehen, wurde ein weiterer Release
erstellt, welcher die Applikation
nun mit 2 Replicas ausführt. Das Ausrollen des neuen Releases kann sehr schnell
vollzogen werden, da sich der App-Code selbst nicht verändert hat und der
gleiche Build
damit wiederverwendet werden kann. Wenn wir den Quellcode
verändern würden, würde dies einen neuen Build
verursachen. Sobald dieser neue
Build
erfolgreich fertig gestellt werden konnte, würden wir dann ebenfalls
einen neuen Release
basierend auf diesem neuen Build
sehen.
Zugriff auf Logs
Logs ihrer Applikation können mit dem Befehl nctl logs
abgerufen werden. Die Logs enthalten alles, was Ihre App auf stdout und stderr ausgibt.
$ nctl logs app go-example
2023-06-19T14:21:32+02:00 2023/06/19 12:21:32 got request
# sie können auch eine live Ansicht der Logs mittels der
# `-f/--follow` Option aktivieren
$ nctl logs app go-example -f
2023-06-19T14:21:32+02:00 2023/06/19 12:21:32 got request
2023-06-19T14:23:54+02:00 2023/06/19 12:23:54 got request
# um noch mehr Zeilen des Logs zu sehen, kann die `-l/--lines`
# Option genutzt werden
$ nctl logs app go-example -l 100
# um ältere Log Einträge zu sehen, können Sie die `-s/--since`
# Option nutzen. Die Einheit kann dabei in Sekunden (1s), Minuten (1m)
# oder Stunden (1h) angegeben werden.
$ nctl logs app go-example -s 1h
Neben den Applikations-Logs können Sie ausserdem die Logs des Build-Prozesses einsehen. Dies ist sehr nützlich, um die Ursache für fehlgeschlagene Builds zu finden.
$ nctl logs build go-example-build-1
# alternativ können sie auch den Applikations Namen nutzen um alle
# zurückliegenden Build Logs zu sehen
$ nctl logs build -a go-example
Die Applikation Ihren Bedürfnissen anpassen
In unserem vorherigen Beispiel haben wir das einfachste Anwendungsbeispiel für die Erstellung einer App auf Deploio gezeigt. Es steht allerdings eine ganze Reihe an Parametern bei der Applikationserstellung zur Verfügung, mit der Sie diese auf Ihre Bedürfnisse abstimmen können. Sie können beispielsweise eigene Hostnamen oder Umgebungsvariablen benutzen. Die entsprechenden Dokumentationen finden sie auf der linken Seite in unserer "Configurations"-Sektion.
Projekte
Wenn Sie gerade erst mit der Verwendung von nctl
beginnen, wird jede Resource,
welche Sie erstellen, in Ihrem Hauptprojekt abgelegt. Dieses Hauptprojekt trägt
den Namen Ihrer Organisation. Um unterschiedliche Umgebungen logisch zu trennen,
können Sie Projekte erstellen. Dabei muss der Name Ihrer Organisation dem
Projektnamen vorangestellt weden. Beispielsweise könnte ein Projekt für die
Organisation acme
den Namen acme-dev
tragen. Sie können Ihre Projekte dem
jeweiligen Zweck entsprechend beliebig benennen, solange ihnen der
Organisationsname vorangestellt ist.
$ nctl create project acme-dev
Creating new project acme-dev for organization acme
✓ created project "acme-dev" 🏗
✓ waiting for project to be ready ⏳
✓ project ready 🛫
Nachdem Sie ein neues Projekt erstellt haben, können Sie nctl
mittels nctl auth set-project
so konfigurieren, dass alle zukünftigen Befehle standardmässig auf
Resourcen dieses neuen Projektes angewandt werden.
$ nctl auth set-project acme-dev
Danach wird jeder Befehl, der auf Ressourcen zugreift, auf dieses Projekt
angewendet. Sie können auch das -p/--project
-Flag verwenden, um z.B. die
Applikation eines bestimmten Projekts zu sehen, ohne die standardmässige
Befehlsanwendung zu verändern. Um alle Apps in einem Projekt aufzulisten, können
Sie das -A/--all-projects
-Flag nutzen.