Übung: Bereitstellen einer Anwendung in Ihrem Azure Kubernetes Service-Cluster

Abgeschlossen

In dieser Übung stellen Sie die Website Ihres Unternehmens als Test-App in Azure Kubernetes Service (AKS) bereit. Die Website ist eine statische Website mit einem zugrunde liegenden Technologiestapel basierend auf HTML, CSS und JavaScript. Die Website empfängt nicht so viele Anforderungen wie die anderen Dienste und bietet eine sichere Möglichkeit zum Testen der Bereitstellungsoptionen.

Hinweis

Wenn Sie den Quellcode weiter untersuchen möchten, finden Sie den Code für die Web-App in diesem GitHub-Repository. Außerdem wird diese Beispiel-App nur in einem Linux-Knotenpool bereitgestellt.

Wichtig

Sie benötigen Ihr eigenes Azure-Abonnement, um diese Übung abzuschließen, und möglicherweise entstehen Gebühren. Wenn Sie noch kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Erstellen eines Bereitstellungsmanifests

Sie erstellen eine Bereitstellungsmanifestdatei, um Ihre Anwendung bereitzustellen. Mithilfe der Manifestdatei können Sie definieren, welche Art von Ressource bereitgestellt werden soll. Außerdem lassen sich so alle Details im Zusammenhang mit der Workload definieren.

Kubernetes gruppiert Container in logische Strukturen namens Pods, die über keine Intelligenz verfügen. Implementierungen fügen die erforderliche Intelligenz hinzu, um Ihre Anwendung zu erstellen. Erstellen Sie nun eine Bereitstellungsdatei.

  1. Verwenden Sie auf Ihrem Computer einen Text-Editor wie Visual Studio Code, kopieren und fügen Sie den folgenden YAML-Code in eine Datei namens deployment.yaml ein, und speichern Sie die Datei.

    # deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: contoso-website
    spec:
      selector:
        matchLabels:
          app: contoso-website
      template:
        metadata:
          labels:
            app: contoso-website
        spec:
          nodeSelector:
            kubernetes.io/os: linux
          containers:
            - image: mcr.microsoft.com/mslearn/samples/contoso-website
              name: contoso-website
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                limits:
                  cpu: 250m
                  memory: 256Mi
              ports:
                - containerPort: 80
                  name: http
    
    • Zwei Schlüssel werden verwendet, um das apiVersion und das kind des Manifests zu definieren, das Sie erstellen. Weitere Informationen zu apiVersion und zu den Werten, die in diesem Schlüssel enthalten sind, finden Sie in der offiziellen Dokumentation zu Kubernetes-Bereitstellungen.
    • Bei name handelt es sich um den Namen der Bereitstellung. Sie verwenden es, um die Bereitstellungsinformationen zu identifizieren und abzufragen, wenn Sie kubectl verwenden.
    • Die Vorlagendefinition definiert die Podinformationen in der Manifestdatei. Die Vorlage wird in der Manifestdatei unterhalb des Abschnitts für die Bereitstellungsspezifikation platziert.
    • Der labels Schlüssel, der Deployments ermöglicht, Pods zu finden und zu gruppieren.
    • In einem AKS-Cluster mit Linux- und Windows-Knotenpools definiert das Bereitstellungsmanifest einen nodeSelector , der Ihren AKS-Cluster anweisen soll, den Pod der Beispielanwendung auf einem Knoten auszuführen, der Linux-Container ausführen kann. Auf Linux-Knoten können keine Windows-Container ausgeführt werden (und umgekehrt).
    • Der Schlüssel containers ist ein Array von Containerspezifikationen, da ein Pod einen oder mehrere Container aufweisen kann. Die Spezifikation definiert Angaben wie image, name, resources und ports sowie andere wichtige Informationen zum Container. Alle ausgeführten Pods erhalten den Namen contoso-website-<UUID>, wobei UUID eine generierte ID ist, sodass alle Ressourcen eindeutig identifiziert werden können.
    • Es empfiehlt sich, eine minimale und eine maximale Menge an Ressourcen zu definieren, die die App aus dem Cluster verwenden darf. Sie verwenden den Schlüssel resources, um diese Informationen anzugeben. Im Ressourcenabschnitt können Sie den minimalen Ressourcenbetrag als Anforderung und den maximalen Ressourcenbetrag als Grenzwert angeben.
    • Die Ports, die dieser Container extern über den ports Schlüssel verfügbar macht. Der Schlüssel ports ist ein Array von Objekten, was bedeutet, dass ein Container in einem Pod mehrere Ports mit mehreren Namen verfügbar machen kann. Sie nennen den Port mithilfe des name Schlüssels. Das Benennen von Ports ermöglicht Ihnen das Ändern des verfügbar gemachten Ports, ohne dass Sie hierfür Dateien ändern müssen, die auf den Port verweisen.
  2. Laden Sie deployment.yaml in Ihre Cloud Shell-Sitzung hoch, indem Sie Dateien verwalten>hochladen auswählen.

Anwenden des Manifests

  1. Führen Sie in Cloud Shell den Befehl kubectl apply aus, um das Bereitstellungsmanifest an Ihren Cluster zu übermitteln.

    kubectl apply -f ./deployment.yaml
    

    Der Befehl sollte ein Ergebnis ausgeben, das dem folgenden Beispiel ähnelt.

    deployment.apps/contoso-website created
    
  2. Führen Sie den Befehl kubectl get deploy aus, um zu prüfen, ob die Bereitstellung erfolgreich war.

    kubectl get deploy contoso-website
    

    Der Befehl sollte eine Tabelle ausgeben, die dem folgenden Beispiel ähnelt.

    NAME              READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-website   1/1     1            1           19s
    
  3. Führen Sie den Befehl kubectl get pods aus, um zu überprüfen, ob der Pod ausgeführt wird.

    kubectl get pods
    

    Der Befehl sollte eine Tabelle ausgeben, die dem folgenden Beispiel ähnelt.

    NAME                               READY   STATUS    RESTARTS   AGE
    contoso-website-1c2b3b4b5b-dzsvm   1/1     Running   0          68s