Übung: Bereitstellen einer Anwendung in Ihrem Azure Kubernetes Service-Cluster
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.
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
apiVersionund daskinddes Manifests zu definieren, das Sie erstellen. Weitere Informationen zuapiVersionund zu den Werten, die in diesem Schlüssel enthalten sind, finden Sie in der offiziellen Dokumentation zu Kubernetes-Bereitstellungen. - Bei
namehandelt es sich um den Namen der Bereitstellung. Sie verwenden es, um die Bereitstellungsinformationen zu identifizieren und abzufragen, wenn Siekubectlverwenden. - Die Vorlagendefinition definiert die Podinformationen in der Manifestdatei. Die Vorlage wird in der Manifestdatei unterhalb des Abschnitts für die Bereitstellungsspezifikation platziert.
- Der
labelsSchlü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
containersist ein Array von Containerspezifikationen, da ein Pod einen oder mehrere Container aufweisen kann. Die Spezifikation definiert Angaben wieimage,name,resourcesundportssowie andere wichtige Informationen zum Container. Alle ausgeführten Pods erhalten den Namencontoso-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
portsSchlüssel verfügbar macht. Der Schlüsselportsist 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 desnameSchlü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.
- Zwei Schlüssel werden verwendet, um das
Laden Sie deployment.yaml in Ihre Cloud Shell-Sitzung hoch, indem Sie Dateien verwalten>hochladen auswählen.
Anwenden des Manifests
Führen Sie in Cloud Shell den Befehl
kubectl applyaus, um das Bereitstellungsmanifest an Ihren Cluster zu übermitteln.kubectl apply -f ./deployment.yamlDer Befehl sollte ein Ergebnis ausgeben, das dem folgenden Beispiel ähnelt.
deployment.apps/contoso-website createdFühren Sie den Befehl
kubectl get deployaus, um zu prüfen, ob die Bereitstellung erfolgreich war.kubectl get deploy contoso-websiteDer Befehl sollte eine Tabelle ausgeben, die dem folgenden Beispiel ähnelt.
NAME READY UP-TO-DATE AVAILABLE AGE contoso-website 1/1 1 1 19sFühren Sie den Befehl
kubectl get podsaus, um zu überprüfen, ob der Pod ausgeführt wird.kubectl get podsDer Befehl sollte eine Tabelle ausgeben, die dem folgenden Beispiel ähnelt.
NAME READY STATUS RESTARTS AGE contoso-website-1c2b3b4b5b-dzsvm 1/1 Running 0 68s