Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Kubernetes Service (AKS) ist ein verwalteter Kubernetes-Dienst, mit dem Sie schnell Cluster bereitstellen und verwalten können. In dieser Schnellstartanleitung führen Sie die folgenden Schritte aus:
- Bereitstellen eines AKS-Clusters mithilfe der Bicep Kubernetes-Erweiterung (Vorschau)
- Führen Sie eine Beispielanwendung mit mehreren Containern mit einer Gruppe von Microservices und Web-Front-Ends aus, die ein Einzelhandelsszenario simulieren.
Wichtig
Die Bicep Kubernetes-Erweiterung befindet sich derzeit in der Vorschauphase. Sie können das Feature über die Bicep-Konfigurationsdatei aktivieren, indem Sie Folgendes hinzufügen:
{
"experimentalFeaturesEnabled": {
"extensibility": true,
}
}
Hinweis
Um schnell mit der Bereitstellung eines AKS-Clusters zu beginnen, enthält dieser Artikel Schritte zum Bereitstellen eines Clusters mit Standardeinstellungen nur zu Evaluierungszwecken. Bevor Sie einen produktionsbereiten Cluster bereitstellen, empfehlen wir Ihnen, sich mit unserer Basisreferenzarchitektur vertraut zu machen, um zu berücksichtigen, wie sie ihren Geschäftlichen Anforderungen entspricht.
Bevor Sie beginnen
Für diese Schnellstartanleitung werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Kubernetes-Kernkonzepte für Azure Kubernetes Service (AKS).
- Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
- Stellen Sie sicher, dass die Identität, die Sie zum Erstellen Ihres Clusters verwenden, über die erforderlichen Mindestberechtigungen verfügt. Weitere Informationen zum Zugriff und zur Identität für AKS finden Sie unter Access- und Identity-Optionen für Azure Kubernetes Service (AKS).For more details on access and identity for AKS, see Access and identity options for Azure Kubernetes Service (AKS).
Bicep ist eine domänenspezifische Sprache (DSL), die deklarative Syntax verwendet, um Azure-Ressourcen bereitzustellen. Sie bietet eine präzise Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet die beste Benutzererfahrung beim Erstellen für Ihre Infrastructure-as-Code-Lösungen in Azure.
- Informationen zum Einrichten Ihrer Umgebung für die Bicep-Entwicklung finden Sie unter Installieren von Bicep-Tools. Nach Abschluss der Schritte verfügen Sie über Visual Studio Code und die Bicep-Erweiterung. Sie haben auch die neueste Azure CLI-Version oder das neueste Azure PowerShell-Modul.
- Um einen AKS-Cluster mithilfe einer Bicep-Datei zu erstellen, stellen Sie einen öffentlichen SSH-Schlüssel bereit. Wenn Sie diese Ressource benötigen, lesen Sie den folgenden Abschnitt. Fahren Sie andernfalls mit Überprüfen der Bicep-Datei fort.
- Zum Bereitstellen einer Bicep-Datei benötigen Sie Schreibzugriff auf die Ressourcen, die Sie bereitstellen, und Zugriff auf alle Vorgänge für den Ressourcentyp
Microsoft.Resources/deployments
. Um beispielsweise eine VM bereitstellen zu können, benötigen Sie die BerechtigungenMicrosoft.Compute/virtualMachines/write
undMicrosoft.Resources/deployments/*
. Eine Liste der Rollen und Berechtigungen finden Sie in den integrierten Azure-Rollen.
Erstellen eines SSH-Schlüsselpaars
Wechseln Sie zu https://shell.azure.com, um Cloud Shell in Ihrem Browser zu öffnen.
Erstellen Sie ein SSH-Schlüsselpaar mithilfe des az sshkey create Azure CLI-Befehls oder des
ssh-keygen
Befehls.# Create an SSH key pair using Azure CLI az sshkey create --name "mySSHKey" --resource-group "myResourceGroup" # Create an SSH key pair using ssh-keygen ssh-keygen -t rsa -b 4096
Weitere Informationen zum Erstellen von SSH-Schlüsseln finden Sie unter Erstellen und Verwalten von SSH-Schlüsseln für die Authentifizierung in Azure.
Überprüfen der Bicep-Datei
Die Zum Erstellen eines AKS-Clusters verwendete Bicep-Datei stammt aus Azure-Schnellstartvorlagen. Weitere AKS-Beispiele finden Sie unter AKS-Schnellstartvorlagen.
@description('The name of the Managed Cluster resource.')
param clusterName string = 'aks101cluster'
@description('The location of the Managed Cluster resource.')
param location string = resourceGroup().location
@description('Optional DNS prefix to use with hosted Kubernetes API server FQDN.')
param dnsPrefix string
@description('Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.')
@minValue(0)
@maxValue(1023)
param osDiskSizeGB int = 0
@description('The number of nodes for the cluster.')
@minValue(1)
@maxValue(50)
param agentCount int = 3
@description('The size of the Virtual Machine.')
param agentVMSize string = 'standard_d2s_v3'
@description('User name for the Linux Virtual Machines.')
param linuxAdminUsername string
@description('Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example \'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm\'')
param sshRSAPublicKey string
resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
name: clusterName
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
dnsPrefix: dnsPrefix
agentPoolProfiles: [
{
name: 'agentpool'
osDiskSizeGB: osDiskSizeGB
count: agentCount
vmSize: agentVMSize
osType: 'Linux'
mode: 'System'
}
]
linuxProfile: {
adminUsername: linuxAdminUsername
ssh: {
publicKeys: [
{
keyData: sshRSAPublicKey
}
]
}
}
}
}
output controlPlaneFQDN string = aks.properties.fqdn
Die in der Bicep-Datei definierte Ressource ist "Microsoft.ContainerService/managedClusters".
Speichern Sie eine Kopie der Datei als main.bicep
auf Ihrem lokalen Computer.
Erstellen der Anwendungsdefinition
Zum Bereitstellen der Anwendung verwenden Sie eine Manifestdatei, um alle Objekte zu erstellen, die zum Ausführen der AKS Store-Anwendung erforderlich sind. Eine Kubernetes-Manifestdatei definiert den gewünschten Zustand eines Clusters, z. B. welche Containerimages ausgeführt werden sollen. Das Manifest umfasst die folgenden Kubernetes-Bereitstellungen und -Dienste:
- Store-Front: Webanwendung für Kunden zum Anzeigen von Produkten und Aufgeben von Bestellungen.
- Produktservice: Zeigt Produktinformationen an.
- Bestellservice: Bestellungen aufgeben.
- Rabbit MQ: Nachrichtenwarteschlange für eine Auftragswarteschlange.
Hinweis
Zustandsbehaftete Container wie Rabbit MQ sollten nicht ohne permanenten Speicher für die Produktion ausgeführt werden. Sie werden hier der Einfachheit halber verwendet, jedoch sollten verwaltete Dienste wie Azure CosmosDB oder Azure Service Bus verwendet werden.
Erstellen Sie im selben Ordner wie
aks-store-quickstart.yaml
eine Datei mit dem Namenmain.bicep
und fügen Sie das folgende Manifest ein:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
Eine Aufschlüsselung der YAML-Manifestdateien finden Sie unter Bereitstellungen und YAML-Manifeste.
Wenn Sie die YAML-Datei lokal erstellen und speichern, können Sie die Manifestdatei in Ihr Standardverzeichnis in CloudShell hochladen, indem Sie die Schaltfläche " Dateien hochladen/herunterladen " auswählen und die Datei aus Ihrem lokalen Dateisystem auswählen.
Öffnen Sie
main.bicep
in Visual Studio Code.Drücken Sie STRG+UMSCHALT+P , um die Befehlspalette zu öffnen.
Suchen Sie nach Bicep, und wählen Sie dann "Bicep: Kubernetes-Manifest importieren" aus.
Wählen Sie in der Eingabeaufforderung
aks-store-quickstart.yaml
aus. Bei diesem Prozess wird eineaks-store-quickstart.bicep
-Datei im selben Ordner erstellt.Öffnen Sie
main.bicep
, und fügen am Ende der Datei den folgenden Bicep hinzu, um auf das neu erstellte Modulaks-store-quickstart.bicep
zu verweisen:module kubernetes './aks-store-quickstart.bicep' = { name: 'buildbicep-deploy' params: { kubeConfig: aks.listClusterAdminCredential().kubeconfigs[0].value } }
Speichern Sie
main.bicep
undaks-store-quickstart.bicep
.
Bereitstellen der Bicep-Datei
Erstellen Sie eine Azure-Ressourcengruppe mit dem Befehl "az group create ".
az group create --name myResourceGroup --location eastus
Stellen Sie die Bicep-Datei mit dem Befehl "az deployment group create " bereit.
az deployment group create --resource-group myResourceGroup --template-file main.bicep --parameters clusterName=<cluster-name> dnsPrefix=<dns-previs> linuxAdminUsername=<linux-admin-username> sshRSAPublicKey='<ssh-key>'
Stellen Sie in den Befehlen die folgenden Werte bereit:
- Clustername: Geben Sie einen eindeutigen Namen für den AKS-Cluster ein, z. B. myAKSCluster.
- DNS-Präfix: Geben Sie ein eindeutiges DNS-Präfix für Ihren Cluster ein, z. B. myakscluster.
- Linux-Administratorbenutzername: Geben Sie einen Benutzernamen ein, um eine Verbindung mit SSH herzustellen, z. B. azureuser.
- SSH RSA Public Key: Kopieren und einfügen Sie den öffentlichen Teil Ihres SSH-Schlüsselpaars (standardmäßig den Inhalt von ~/.ssh/id_rsa.pub).
Die Erstellung des AKS-Clusters dauert einige Minuten. Warten Sie, bis der Cluster erfolgreich bereitgestellt wurde, bevor Sie mit dem nächsten Schritt fortfahren.
Überprüfen der Bicep-Bereitstellung
Melden Sie sich beim Azure-Portal an.
Navigieren Sie im Azure-Portalmenü oder von der Startseite zu Ihrem AKS-Cluster.
Wählen Sie unter Kubernetes-Ressourcen"Dienste und Eingänge" aus.
Suchen Sie den Store-Front-Dienst und kopieren Sie den Wert für Externe IP.
Öffnen Sie einen Webbrowser mit der externen IP-Adresse Ihres Dienstes, um die Azure Store-App in Aktion zu sehen.
Löschen des Clusters
Wenn Sie nicht planen, das AKS-Lernprogramm durchzugehen, bereinigen Sie unnötige Ressourcen, um Azure-Gebühren zu vermeiden.
Entfernen Sie die Ressourcengruppe, den Containerdienst und alle zugehörigen Ressourcen mithilfe des Befehls "az group delete ".
az group delete --name myResourceGroup --yes --no-wait
Hinweis
Der AKS-Cluster wurde mit einer systemseitig zugewiesenen verwalteten Identität erstellt. Dies ist die Standardidentitätsoption, die in dieser Schnellstartanleitung verwendet wird. Die Plattform verwaltet diese Identität, sodass Sie sie nicht manuell entfernen müssen.
Nächste Schritte
In diesem Schnellstart haben Sie einen Kubernetes-Cluster bereitgestellt und anschließend eine einfache Anwendung mit mehreren Containern darauf bereitgestellt. Diese Beispielanwendung dient nur zu Demozwecken und stellt nicht alle bewährten Methoden für Kubernetes-Anwendungen dar. Anleitungen zum Erstellen vollständiger Lösungen mit AKS für die Produktion finden Sie unter AKS-Lösungsleitfaden.
Weitere Informationen zu Azure Kubernetes Service (AKS) sowie ein vollständiges Beispiel vom Code bis zur Bereitstellung finden Sie im Tutorial zu Kubernetes-Clustern.
Azure Kubernetes Service