Zum Hauptinhalt springen

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.