Betreust du mehrere Webanwendungen und möchtest die Infrastruktur unabhängig voneinander aber trotzdem kosteneffizient gestalten? Kubernetes kann die Lösung sein!

In diesem Artikel erfährst du wie du deinen eigenen Kubernetes Cluster in der Azure Cloud anlegst und bespielst.

Vor einiger Zeit habe ich angefangen mich mehr mit Kubernetes zu beschäftigen. Diesen Blog liest du übrigens gerade von meinem Kubernetes Cluster! Kubernetes hat den großen Vorteil, dass man viele Programme auf demselben System laufen lassen kann. Ohne, dass diese sich gegenseitig beeinflussen. Leider ist die Installation und Wartung manchmal nervenaufreibend. Doch genau hier schafft Azure Kubernetes Service Abhilfe, indem es diese komplett übernimmt.

Schritt #1 Erstelle einen Azure Account

Den Azure Zugang kannst du dir direkt auf der Webseite von Microsoft erstellen. Dazu benötigst du einen Microsoft oder einen GitHub Account. Als Neukunde kriegt man für den ersten Monat 170 € Guthaben zum Ausprobieren geschenkt. Mein Rat ist, dass du das Guthaben für sinnvolle Tests benutzt, anstatt direkt alles in Bitcoin Mining zu stecken, aber du kannst natürlich tun und lassen, was du willst. ;)

Bei der Anmeldung musst du eine Telefonnummer, eine Kreditkarte oder Debitkarte hinterlegen. Als Zahlungsmethoden wird Kreditkarte und Überweisung angeboten.

Zum Account erstellen hier klicken!

Schritt #2 Lege eine AKS Ressource an

Ist der Azure Account eingerichtet kannst du deine erste Ressource anlegen. Azure Ressourcen können über viele Wege erstellt werden, hier ein paar Beispiele:

Als Anfänger ist sicherlich das Azure Portal am einfachsten zu bedienen. Zu Dokumentationszwecken ist das Portal jedoch nicht geeignet, da sich das Layout der Weboberfläche jederzeit ändern kann (passiert zum Glück nur selten).

Aus diesem Grund verwende ich in diesem Beitrag das Azure CLI Tool (az). Zumal es für die gängigsten Betriebssysteme Windows, Linux und Mac downloadbar ist. Installationsanweisungen für az findest du hier.

Nach der Installation kannst du dich mit folgendem Befehl anmelden.

az login

Dann sollte eine Login-URL angezeigt werden, die du mit einem Browser öffnen und dich bei Azure anmelden kannst. Auf Windows wird das Browserfenster automatisch geöffnet.

Hast du einen Unternehmensaccount oder aus anderen Gründen mehrere Subscriptions mit deinem Account verknüpft, musst du jetzt noch deine Subscription wählen. Alle anderen können den Punkt ignorieren.

az account set --subscription "NAME DER SUBSCRIPTION"

Ressourcen sind in Azure immer in Ressourcengruppen sortiert, deswegen solltest du zunächst eine erstellen. In diesem Beispiel erstelle ich die Ressourcengruppe “azurecluster-rg” in “westeurope”, einem Rechenzentrum bei Amsterdam.

az group create --name azurecluster-rg --location westeurope

Jetzt kannst du endlich den Kubernetes Cluster in deiner Ressourcengruppe erzeugen. Der folgende Befehl erzeugt einen AKS Cluster mit einem Node.

az aks create --resource-group azurecluster-rg --name meincluster-aks --node-count 1 --generate-ssh-keys --node-vm-size Standard_B2s

Erfahrungsgemäß kann die Clusterbereitstellung einige Minuten dauern. Ab diesen Zeitpunkt wird Microsoft dir für den Server Geld auf die Rechnung schreiben. Ein Cluster dieser (ziemlich kleinen) Größe wird dich - Stand April 2021 - etwa 30 € pro Monat kosten. Wenn du den Node direkt für 3 Jahre reservierst, kannst du die Kosten auf unter 12 € drücken. (Preise)

Für Tests verwende ich gerne Nodegrößen aus der Standard_B Reihe. Das sind CPU's, die dazu gedacht sind die meiste Zeit auf niedriger Last laufen und nur kurze Leistungsspitzen haben. Zum Beispiel Webserver oder kleine Datenbanken. Die Alternativen kannst du hier nachschlagen. Der Standard_B2s bietet dir 2 vCPU Kerne und 4 GiB RAM.

Schritt #3 Teste deine Umgebung

Das Programm kubectl ist das wichtigste Programm um mit deinem Kubernetes Cluster zu kommunizieren. Installationsanweisungen findest du auf der Projektwebseite von Kubernetes.

Es kann notfalls auch mithilfe von AZ installiert werden.

az aks install-cli

Verbindung zum Cluster

Nach der Installation musst du dem Programm als Erstes sagen um welchen Server es sich handelt. Das funktioniert mithilfe einer Konfigurationsdatei. Auf Windows ist diese meistens unter C:\Users\BENUTZERNAME\.kube zu finden.

Glücklicherweise musst du diese Datei nicht selbst ausfüllen, sondern kannst AZ das für dich machen lassen.

az aks get-credentials --resource-group azurecluster-rg --name meincluster-aks

Jetzt sollte kubectl fertig eingerichtet sein. Zum Testen kannst du dir zum Beispiel alle Nodes auflisten lassen.

kubectl get nodes

Jetzt bist du mit der eigentlichen Einrichtung fertig und kannst mit dem Deployment deiner Webanwendungen anfangen.

Deine erste Webapp

Für den Anfang gebe ich dir jetzt noch eine kleine Hallo-Welt Anwendung mit… Dazu brauchst du eine neue Datei “deploy.yaml” mit folgendem Inhalt:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hallo-welt-deployment
spec:
  selector:
    matchLabels:
      app: hallo-welt-programm
  template:
    metadata:
      labels:
        app: hallo-welt-programm
    spec:
      containers:
      - name: hallowelt
        image: nginxdemos/hello
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: hallo-welt-service
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: hallo-welt-programm

Diese Datei kann mit dem apply Befehl deployt werden. Beachte, dass hierdurch eine Statische IP-Adresse und ein Loadbalancer bei Azure anmietet werden, wodurch Kosten entstehen können, wenn es zu lange läuft.

kubectl apply -f deploy.yaml

Wie nachfolgend gezeigt, kannst du dir die externe IP-Adresse des Services anzeigen lassen.

kubectl get services
NAME                 TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
hallo-welt-service   LoadBalancer   10.0.158.88   51.105.103.64   80:32694/TCP   3m38s
kubernetes           ClusterIP      10.0.0.1      <none>          443/TCP        44m

In meinem Fall “51.105.103.64”. Kopierst du diese in deinen Browser, sollte ein Ergebnis angezeigt werden.

Löschen des Clusters

Achte am Ende darauf, dass du alles was kosten erzeugst wieder deaktivierst. Am leichtesten geht das wahrscheinlich, indem du den ganzen Cluster löschst.

az aks delete --name MEINAKSCLUSTER --resource-group azurecluster-rg

Fazit

Dies ist natürlich nur der Anfang. AKS und Kubernetes haben deutlich mehr zu bieten.

So kann man einen Ingresscontroller Container einsetzen um nicht für jedes Projekt eine eigene IP-Adresse und einen Loadbalancer bezahlen zu müssen. Man kann die einzelnen Projekte auf Namespaces aufteilen, sodass sie viel einfacher verwaltet werden können. Man kann Azure Storages einbinden und diese automatisch von AKS verwalten lassen. Man kann alle möglichen Docker Container integrieren und sogar seine eigenen benutzen. Und natürlich noch sehr viel mehr.

All diese Punkte würden allerdings den Rahmen dieser Einführung sprengen. Kubernetes kann manchmal etwas fummelig sein, aber ich hoffe du hattest trotzdem Spaß!

Wenn dir dieser Artikel gefallen hat und du tiefer in die Welt von Azure Kubernetes Service einsteigen möchtest, dann habe ich noch ein paar Buchempfehlungen für dich. Durch den Kauf über die folgenden Links, unterstützt du mich und diesen Blog ohne mehr als sonst zu bezahlen.


Konnte ich helfen? Ich freue mich über einen Drink! 💙