Ziel
In diesem Beitrag möchte ich in meiner Umgebung die Applikations Verteilungen (Deployments) lernen. Weiter möchte ich eine .NET Applikation auf den Cluster mit kubectl verteilen.
Ich folge den hier beschriebenen Scrhitte und verwende eine einfache .NET Core Applikation für das Deployment.
Voraussetzungen
Um diese Aufgabe zu erfüllen sind folgende Voraussetzungen gegeben:
- Minikube ist installiert
- Eine .NET Core App ist vorhanden um auf einen Container verteilt werden zu können.
- Docker für Windows muss installiert sein
- Unter Umständen muss das LINUX Subsystem für Windows installiert sein, wenn ihr die entsprechende Option im Docker-Installer ausgewählt habt.
Durchführung
Um das oben genannte Ziel zu erreichen muss ein Kubernetes Deployment erstellt werden. Für die Erstellung eines Deploments wird das CLI kubectl verwendet, dass in meinem Fall im C:\Program Files\kubectl installiert worden ist.
- Starten der Powershell als Administrator
- Anschliessend den minikube starten, wenn er noch nicht gestartet worden ist.
Der erfolgreiche Start sieht dann so aus:
Werden beim Starten Fehler festgestellt, so sollte zuerst mit minikube stop versucht werden das Ganze zu stoppen und wieder zu starten.
Den Status kann man dann damit überprüfen:
minikube status
Un erhält dann die folgende Meldung:
- Nun wird der Befehl
kubectl version
kubectl get nodes
ausgeführt.
Das sieht dann so aus:
Es ist ersichtlich, dass der Client und der Server verfügbar sind. Weiter ist ersichtlich, dass ein verfügbarer Knoten (Node) da ist. Kubernetes verwendet für die Applikationsverteilung die verfügbaren Ressourcen auf Basis der Knoten (Nodes).
- Nun kommt der spannende Teil lokal in der Powershell. Hier muss die .NET Core Applikation angegeben werden, die verteilt werden soll. Hierzu habe ich eine Beispiel-Applikation analog dem hier beschriebenen Vorgehen erstellt.
Das Docker-Image ist mit dem Befehl
docker build -t app-demo -f Dockerfile .
erstellt worden.
Anschliessend kann man überprüfen ob das Image in der lokalen Registry vorhanden ist mit:
docker images
- Anschliessend habe ich dann mit kubectl ein Deplyoment erstellt, das auf die lokale Docker Registry geht.
kubectl create deployment app-demo --image=app-demo:latest
kubectl teil mir dann mit, dass das Deployment erfolgreich erstellt worden ist.
Fazit
Das Ganze, sieht einfach aus aber der eine oder andere Fallstrick ist dann doch vorhanden. Wenn zum Beispiel das .NET Core Image nicht von einer zentralen Registry runtergeladen werden kann, sondern selber gehostet werden muss, aus Sicherheitsgründen oder politischen Vorgaben. Falls der Artikel Gefallen gefunden hat, freue ich mich über einen Like und bin für Rückmeldungen offen.