Schnellstart: Erstellen eines Azure Kubernetes Service (AKS) automatischen Clusters in einem benutzerdefinierten virtuellen Netzwerk

Gilt für: ✔️ AKS Automatic

Azure Kubernetes Service (AKS) Automatic bietet die einfachste verwaltete Kubernetes-Erfahrung für Entwickler, DevOps-Ingenieure und Plattformtechniker. AKS Automatic automatisiert die Einrichtung von AKS-Clustern sowie Clustervorgänge und bettet Konfigurationen mit bewährten Methoden ein, wodurch es sich ideal für moderne Anwendungen und KI-Anwendungen (künstliche Intelligenz) eignet. Unabhängig von ihren Kenntnissen und Qualifikationen können alle Benutzer von der Sicherheit, Leistung und Zuverlässigkeit profitieren, die AKS Automatic für ihre Anwendungen bietet. AKS Automatic umfasst auch eine Vereinbarung zur Betriebsbereitschaft der Pods, die garantiert, dass 99,9 % der qualifizierenden Pod-Bereitschaftsvorgänge innerhalb von 5 Minuten abgeschlossen werden, wodurch eine zuverlässige, selbstheilende Infrastruktur für Ihre Anwendungen sichergestellt wird. 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).

In dieser Schnellstartanleitung lernen Sie Folgendes:

  • Erstellen Sie ein virtuelles Netzwerk.
  • Erstellen Sie eine verwaltete Identität mit Berechtigungen für das virtuelle Netzwerk.
  • Stellen Sie einen automatischen AKS-Cluster im virtuellen Netzwerk bereit.
  • Führen Sie eine Beispielanwendung mit mehreren Containern mit einer Gruppe von Microservices und Web-Front-Ends aus, die ein Einzelhandelsszenario simulieren.

Wenn Sie kein Azure Konto haben, erstellen Sie ein free-Konto.

Voraussetzungen

  • Azure CLI Version 2.86.0 oder höher. Um die Version zu finden, führen Sie den Befehl aus az --version . Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI.

Wichtig

Ab AKS 1.36 aktivieren neue automatische AKS-Cluster standardmäßig die Kubernetes-Gateway-API über das Anwendungsrouting-Add-On anstelle des verwalteten NGINX-Eingangs mit dem Anwendungsrouting-Add-On aufgrund des vorgelagerten Ausfalls von Ingress NGINX.

Vorhandene automatische Cluster sind nicht betroffen, sollten aber mit der Migration zur Kubernetes-Gateway-API über das Anwendungsrouting-Add-On beginnen.

Einschränkungen

Die folgenden Einschränkungen gelten für automatische AKS-Cluster:

  • AKS Automatic ist in den folgenden Regionen allgemein verfügbar: australiaeast, austriaeast, belgiumcentral, brazilsouth, canadacentral, centralindia, centralus, chilecentral, denmarkeast, eastasia, eastus, eastus2, francecentral, germanywestcentral, indonesiacentral, israelcentral, italynorth, japaneast, japanwest, koreacentral, malaysiawest, mexicocentral, newzealandnorth, northeurope, norwayeast, polandcentral, southafricanorth, southcentralus, southeastasia, spaincentral, swedencentral, switzerlandnorth, uaenorth, uksouth, westeurope, westus2, westus3.
    • Neue automatische AKS-Cluster aktivieren standardmäßig verwaltete Systemknotenpools und LocalDNS. Sie können keine automatischen AKS-Cluster ohne verwaltete Systemknotenpools in einer beliebigen Region erstellen.
  • AKS Automatic ist mit node resource group lockdown vorkonfiguriert, wodurch keine Änderungen an der Ressourcengruppe MC_ zulässig sind und virtuelle Netzwerkverknüpfungen in der standardmäßigen privaten DNS-Zone verhindert werden. Für VNet-übergreifende oder benutzerdefinierte DNS-Szenarien verwenden Sie ein benutzerdefiniertes Netzwerk und einen privaten DNS gemäß den Anweisungen unter Erstellen eines privaten Azure Kubernetes Service (AKS) automatischen Clusters in einem benutzerdefinierten virtuellen Netzwerk.
  • Azure CLI Version 2.86.0 oder höher ist erforderlich. Um die Version zu finden, führen Sie den Befehl aus az --version . Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI.
  • Die folgenden Erweiterungen werden nicht unterstützt:
  • Windows-Knoten werden nicht unterstützt.
  • Das Istio-basierte Dienstgitter-Add-On für AKS wird nicht unterstützt.
  • Die Migration zwischen AKS-Basis-SKU und automatischer SKU wird nicht unterstützt.
  • Migrationen zwischen automatischen AKS-Clustern ohne verwaltete Systemknotenpools und AKS Automatische Cluster mit verwalteten Systemknotenpools werden nicht unterstützt.
  • Die Konfiguration von benutzerdefiniertem Scraping von Prometheus-Metriken und Protokollerfassung wird nicht unterstützt.
  • Das Aktivieren von ACNS observability während der automatischen Clustererstellung wird nicht unterstützt. Sie können ACNS-Observability aktivieren, nachdem der Cluster erstellt wurde.

Definieren von Variablen

Definieren Sie die folgenden Variablen, die in den folgenden Schritten verwendet werden.

RG_NAME=automatic-rg
VNET_NAME=automatic-vnet
CLUSTER_NAME=automatic
IDENTITY_NAME=automatic-uami
LOCATION=eastus
SUBSCRIPTION_ID=$(az account show --query id -o tsv)

Erstellen einer Ressourcengruppe

Eine Azure-Ressourcengruppe ist eine logische Gruppe, in der Azure Ressourcen bereitgestellt und verwaltet werden.

Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe.

az group create -n ${RG_NAME} -l ${LOCATION}

Die folgende Beispielausgabe ähnelt der Ausgabe bei der erfolgreichen Erstellung der Ressourcengruppe:

{
  "id": "/subscriptions/<guid>/resourceGroups/automatic-rg",
  "location": "canadacentral",
  "managedBy": null,
  "name": "automatic-rg",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Erstellen eines virtuellen Netzwerks

Erstellen Sie ein virtuelles Netzwerk mit dem Befehl az network vnet create. Erstellen Sie mit dem Befehl ein API-Server-Subnetz, ein Benutzerknoten-Subnetz und ein az network vnet subnet create Systemknoten-Subnetz.

Wenn Sie ein benutzerdefiniertes virtuelles Netzwerk mit AKS Automatic verwenden, müssen Sie ein API-Server-Subnetz erstellen. AKS delegiert das Subnetz in Ihrem Auftrag an Microsoft.ContainerService/managedClusters, wodurch der AKS-Dienst die Berechtigungen erhält, die API-Server-Pods und den internen Lastenausgleichsdienst in diesem Subnetz bereitzustellen. Sie können das Subnetz nicht für andere Workloads, jedoch für mehrere AKS-Cluster im selben virtuellen Netzwerk verwenden. Die kleinste unterstützte API-Serversubnetzgröße ist /28.

Warnung

Ein AKS-Cluster reserviert mindestens neun (9) IPs im Subnetzadressraum. Wenn die IP-Adressen ausgehen, könnte dies die Skalierung des API-Servers verhindern und zu einem Ausfall des API-Servers führen.

az network vnet create --name ${VNET_NAME} \
--resource-group ${RG_NAME} \
--location ${LOCATION} \
--address-prefixes 172.19.0.0/16

az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name apiServerSubnet \
--delegations Microsoft.ContainerService/managedClusters \
--address-prefixes 172.19.0.0/28

az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name userNodeSubnet \
--address-prefixes 172.19.1.0/24

az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name managedSystemNodeSubnet \
--address-prefixes 172.19.0.64/26

Netzwerksicherheitsgruppenanforderungen

Wenn Sie Netzwerksicherheitsgruppenregeln (Network Security Group, NSG) hinzugefügt haben, um den Datenverkehr zwischen verschiedenen Subnetzen in Ihrem benutzerdefinierten virtuellen Netzwerk einzuschränken, stellen Sie sicher, dass die NSG-Sicherheitsregeln die erforderlichen Kommunikationstypen zwischen Clusterkomponenten zulassen.

Ausführliche NSG-Anforderungen bei verwendung von benutzerdefinierten virtuellen Netzwerken mit AKS-Clustern finden Sie unter Benutzerdefinierte Anforderungen für virtuelle Netzwerke.

Erstellen einer verwalteten Identität und Erteilen von Berechtigungen im virtuellen Netzwerk

Erstellen Sie mithilfe des az identity create Befehls eine verwaltete Identität, und rufen Sie die Principal-ID ab. Weisen Sie die Rolle "Netzwerkmitwirkender" im virtuellen Netzwerk mithilfe des az role assignment create Befehls der verwalteten Identität zu.

az identity create \
--resource-group ${RG_NAME} \
 --name ${IDENTITY_NAME} \
 --location ${LOCATION}

IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group ${RG_NAME} --name ${IDENTITY_NAME} --query principalId -o tsv)

az role assignment create \
--scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}" \
--role "Network Contributor" \
--assignee-object-id "${IDENTITY_PRINCIPAL_ID}" \
--assignee-principal-type ServicePrincipal

Erstellen eines automatischen AKS-Clusters in einem benutzerdefinierten virtuellen Netzwerk

Verwenden Sie zum Erstellen eines AKS Automatic-Clusters den Befehl az aks create.

az aks create \
--resource-group ${RG_NAME} \
--name ${CLUSTER_NAME} \
--location ${LOCATION} \
--apiserver-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/apiServerSubnet" \
--node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/userNodeSubnet" \
--system-node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/managedSystemNodeSubnet" 
--assign-identity "/subscriptions/${SUBSCRIPTION_ID}/resourcegroups/${RG_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${IDENTITY_NAME}" \
--sku automatic \
--no-ssh-key

Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben.

Herstellen einer Verbindung mit dem Cluster

Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl. kubectl ist bereits installiert, wenn Sie Azure Cloud Shell verwenden. Führen Sie für die lokale Installation von kubectl den Befehl az aks install-cli aus. AKS-Automatisierungs-Cluster sind mit Microsoft Entra ID für Kubernetes rollenbasierte Zugriffssteuerung (RBAC) konfiguriert.

Wenn Sie einen Cluster mithilfe des Azure CLI erstellen, wird Ihr Benutzer integrierten Rollen zugewiesen für Azure Kubernetes Service RBAC Cluster Admin.

Mit dem Befehl kubectl können Sie für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert.

az aks get-credentials --resource-group ${RG_NAME} --name ${CLUSTER_NAME}

Überprüfen Sie die Verbindung mit dem Cluster mithilfe des Befehls kubectl get. Dieser Befehl gibt eine Liste der Clusterknoten zurück.

kubectl get nodes

Die folgende Beispielausgabe zeigt, wie Sie aufgefordert werden, sich anzumelden.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

Nach der Anmeldung zeigt die folgende Beispielausgabe die verwalteten Systemknotenpools an. Stellen Sie sicher, dass der Knotenstatus Bereit lautet.

NAME                           STATUS   ROLES    AGE   VERSION
aks-hostedpool-16652789-vms1   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms2   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms3   Ready    <none>   19m   v1.34.7
aks-system-surge-zq4d2         Ready    <none>   19m   v1.34.7

Erstellen eines virtuellen Netzwerks

Diese Bicep Datei definiert ein virtuelles Netzwerk.

@description('The location of the managed cluster resource.')
param location string = resourceGroup().location

@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'

@description('The address prefix of the virtual network.')
param addressPrefix string = '172.19.0.0/16'

@description('The name of the API server subnet.')
param apiServerSubnetName string = 'apiServerSubnet'

@description('The subnet prefix of the API server subnet.')
param apiServerSubnetPrefix string = '172.19.0.0/28'

@description('The name of the user node subnet.')
param userNodeSubnetName string = 'userNodeSubnet'

@description('The subnet prefix of the user node subnet.')
param userNodeSubnetPrefix string = '172.19.1.0/24'

@description('The name of the system node subnet.')
param systemNodeSubnetName string = 'systemNodeSubnet'

@description('The subnet prefix of the system node subnet.')
param systemNodeSubnetPrefix string = '172.19.0.64/26'

// Virtual network with an API server subnet, a user node subnet, and a system node subnet
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
    name: vnetName
    location: location
    properties: {
        addressSpace: {
            addressPrefixes: [ addressPrefix ]
        }
        subnets: [
            {
                name: apiServerSubnetName
                properties: {
                    addressPrefix: apiServerSubnetPrefix
                }
            }
            {
                name: userNodeSubnetName
                properties: {
                    addressPrefix: userNodeSubnetPrefix
                }
            }
            {
                name: systemNodeSubnetName
                properties: {
                    addressPrefix: systemNodeSubnetPrefix
                }
            }
        ]
    }
}

output apiServerSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, apiServerSubnetName)
output userNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, userNodeSubnetName)
output systemNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, systemNodeSubnetName)

Speichern Sie die Bicep Datei virtualNetwork.bicep auf Ihren lokalen Computer.

Wichtig

Die Datei Bicep legt den vnetName Parameter auf aksAutomaticVnet, den addressPrefix Parameter auf 172.19.0.0/16 fest, den apiServerSubnetPrefix Parameter auf 172.19.0.0/28 und den apiServerSubnetPrefix Parameter auf 172.19.1.0/24. Wenn Sie unterschiedliche Werte verwenden möchten, müssen Sie die Zeichenfolgen auf Ihre bevorzugten Werte aktualisieren.

Stellen Sie die Bicep Datei mithilfe des Azure CLI bereit.

az deployment group create --resource-group <resource-group> --template-file virtualNetwork.bicep

Der gesamte Datenverkehr innerhalb des virtuellen Netzwerks ist standardmäßig zulässig. Wenn Sie Netzwerksicherheitsgruppenregeln (Network Security Group, NSG) hinzugefügt haben, um den Datenverkehr zwischen verschiedenen Subnetzen in Ihrem benutzerdefinierten virtuellen Netzwerk einzuschränken, stellen Sie sicher, dass die NSG-Sicherheitsregeln die erforderlichen Kommunikationstypen zwischen Clusterkomponenten zulassen.

Ausführliche NSG-Anforderungen bei verwendung von benutzerdefinierten virtuellen Netzwerken mit AKS-Clustern finden Sie unter Benutzerdefinierte Anforderungen für virtuelle Netzwerke.

Erstellen einer verwalteten Identität

Diese Bicep Datei definiert eine vom Benutzer zugewiesene verwaltete Identität.

param location string = resourceGroup().location
param uamiName string = 'aksAutomaticUAMI'

resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
  name: uamiName
  location: location
}

output uamiId string = userAssignedManagedIdentity.id
output uamiPrincipalId string = userAssignedManagedIdentity.properties.principalId
output uamiClientId string = userAssignedManagedIdentity.properties.clientId

Speichern Sie die Bicep Datei uami.bicep auf Ihren lokalen Computer.

Wichtig

Die Bicep-Datei legt den uamiName-Parameter auf aksAutomaticUAMI fest. Wenn Sie einen anderen Identitätsnamen verwenden möchten, müssen Sie die Zeichenfolge auf Ihren bevorzugten Namen aktualisieren.

Stellen Sie die Bicep Datei mithilfe des Azure CLI bereit.

az deployment group create --resource-group <resource-group> --template-file uami.bicep

Zuweisen der Rolle „Netzwerkmitwirkender“ für das virtuelle Netzwerk

Diese Bicep Datei definiert Rollenzuweisungen über das virtuelle Netzwerk.

@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'

@description('The principal ID of the user assigned managed identity.')
param uamiPrincipalId string

// Get a reference to the virtual network
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' existing ={
  name: vnetName
}

// Assign the Network Contributor role to the user assigned managed identity on the virtual network
// '4d97b98b-1d4f-4787-a291-c67834d212e7' is the built-in Network Contributor role definition
// See: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/networking#network-contributor
resource networkContributorRoleAssignmentToVirtualNetwork 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(uamiPrincipalId, '4d97b98b-1d4f-4787-a291-c67834d212e7', resourceGroup().id, virtualNetwork.name)
  scope: virtualNetwork
  properties: {
      roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
      principalId: uamiPrincipalId
  }
}

Speichern Sie die Bicep Datei roleAssignments.bicep auf Ihren lokalen Computer.

Wichtig

Die datei Bicep legt den vnetName param auf aksAutomaticVnet fest. Wenn Sie einen anderen Namen für das virtuelle Netzwerk verwendet haben, müssen Sie diesen auf Ihren bevorzugten Netzwerknamen aktualisieren.

Stellen Sie die Bicep Datei mithilfe des Azure CLI bereit. Sie müssen die Prinzipal-ID der benutzerseitig zugewiesenen Identität angeben.

az deployment group create --resource-group <resource-group> --template-file roleAssignments.bicep \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>

Erstellen eines automatischen AKS-Clusters in einem benutzerdefinierten virtuellen Netzwerk

Diese Bicep-Datei definiert einen AKS Automatic-Cluster.

@description('The name of the managed cluster resource.')
param clusterName string = 'aksAutomaticCluster'

@description('The location of the managed cluster resource.')
param location string = resourceGroup().location

@description('The resource ID of the API server subnet.')
param apiServerSubnetId string

@description('The resource ID of the user node subnet.')
param userNodeSubnetId string

@description('The resource ID of the system node subnet.')
param systemNodeSubnetId string

@description('The resource ID of the user assigned managed identity.')
param uamiId string

/// Create the AKS Automatic cluster using the custom virtual network and user assigned managed identity
resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
  name: clusterName
  location: location  
  sku: {
    name: 'Automatic'
  }
  properties: {
    apiServerAccessProfile: {
      subnetId: apiServerSubnetId
    }
    networkProfile: {
      outboundType: 'loadBalancer'
    }
    hostedSystemProfile: {
      systemNodeSubnetID: systemNodeSubnetId
      nodeSubnetID: userNodeSubnetId
    }
  }
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${uamiId}': {}
    }
  }
}

Speichern Sie die Bicep Datei aks.bicep auf Ihren lokalen Computer.

Wichtig

Die Bicep Datei legt den clusterName Param auf aksAutomaticCluster fest. Wenn Sie einen anderen Clusternamen verwenden möchten, müssen Sie die Zeichenfolge auf Ihren bevorzugten Clusternamen aktualisieren.

Stellen Sie die Bicep Datei mithilfe des Azure CLI bereit. Sie müssen die API-Server-Subnetzressourcen-ID, die Subnetzressourcen-ID des Benutzerknotens, die Subnetzressourcen-ID des Systemknotens und die vom Benutzer zugewiesene VERWALTETe Identitätsressourcen-ID angeben.

az deployment group create --resource-group <resource-group> --template-file aks.bicep \
--parameters apiServerSubnetId=<API server subnet resource id> \
--parameters nodeSubnetId=<user node subnet resource id> \
--parameters systemNodeSubnetId=<system node subnet resource id> \
--parameters uamiId=<user assigned identity id>

Herstellen einer Verbindung mit dem Cluster

Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl. kubectl ist bereits installiert, wenn Sie Azure Cloud Shell verwenden. Führen Sie für die lokale Installation von kubectl den Befehl az aks install-cli aus. AKS-Automatisierungs-Cluster sind mit Microsoft Entra ID für Kubernetes rollenbasierte Zugriffssteuerung (RBAC) konfiguriert.

Wichtig

Wenn Sie einen Cluster mit Bicep erstellen, müssen Sie eine der integrierten Rollen zuweisen wie Azure Kubernetes Service RBAC Reader, Azure Kubernetes Service RBAC Writer, Azure Kubernetes Service RBAC Admin oder Azure Kubernetes Service RBAC Cluster Admin für Ihre Benutzer, die auf den Cluster oder einen bestimmten Namespace ausgerichtet sind, z. B. mithilfe von az role assignment create --role "Azure Kubernetes Service RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com. Stellen Sie außerdem sicher, dass Ihre Benutzer die eingebaute Rolle Azure Kubernetes Service Cluster User haben, um az aks get-credentials ausführen zu können. Verwenden Sie dann den Befehl az aks get-credentials, um die Kubeconfig Ihres AKS-Clusters abzurufen.

Mit dem Befehl kubectl können Sie für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert.

az aks get-credentials --resource-group <resource-group> --name <cluster-name>

Überprüfen Sie die Verbindung mit dem Cluster mithilfe des Befehls kubectl get. Dieser Befehl gibt eine Liste der Clusterknoten zurück.

kubectl get nodes

Die folgende Beispielausgabe zeigt, wie Sie aufgefordert werden, sich anzumelden.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

Nach der Anmeldung zeigt die folgende Beispielausgabe die verwalteten Systemknotenpools an. Stellen Sie sicher, dass der Knotenstatus Bereit lautet.

NAME                           STATUS   ROLES    AGE   VERSION
aks-hostedpool-16652789-vms1   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms2   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms3   Ready    <none>   19m   v1.34.7
aks-system-surge-zq4d2         Ready    <none>   19m   v1.34.7

Bereitstellen der Anwendung

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 (Desired State) eines Clusters – also beispielsweise, welche Containerimages ausgeführt werden sollen. Das Manifest umfasst die folgenden Kubernetes-Bereitstellungen und -Dienste:

Screenshot der Azure Store-Beispielarchitektur.

  • Store Front: Webanwendung für Kund*innen zum Anzeigen von Produkten und Aufgeben von Bestellungen
  • Product Service: zeigt Produktinformationen an.
  • Order Service: Gibt Bestellungen auf.
  • Rabbit MQ: Nachrichtenwarteschlange für eine Auftragswarteschlange.

Hinweis

Zustandsbehaftete Container wie Rabbit MQ sollten nicht ohne persistenten Speicher in einer Produktionsumgebung ausgeführt werden. Diese Container werden hier zur Einfachheit verwendet, es wird jedoch empfohlen, verwaltete Dienste wie Azure Cosmos DB oder Azure Service Bus zu verwenden.

  1. Erstellen Sie einen Namespace aks-store-demo, in dem die Kubernetes-Ressourcen bereitgestellt werden.

    kubectl create ns aks-store-demo
    
  2. Stellen Sie die Anwendung mit dem Befehl kubectl apply im Namespace aks-store-demo bereit. Die YAML-Datei, die die Bereitstellung definiert, befindet sich auf GitHub.

    kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yaml
    

    Die folgende Beispielausgabe zeigt die Bereitstellungen und Dienste:

    statefulset.apps/rabbitmq created
    configmap/rabbitmq-enabled-plugins created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front created
    ingress/store-front created
    

Testen der Anwendung

Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Dienst das Anwendungs-Front-End im Internet verfügbar. Dieser Vorgang kann einige Minuten dauern.

  1. Sehen Sie sich den Status der bereitgestellten Pods mithilfe des Befehls kubectl get pods an. Stellen Sie sicher, dass alle Pods den Status Running haben, bevor Sie fortfahren. Wenn Sie diese Workload zum ersten Mal bereitstellen, kann es einige Minuten dauern, bis die automatische Knotenbereitstellung einen Knotenpool erstellt, auf dem die Pods ausgeführt werden können.

    kubectl get pods -n aks-store-demo
    
  2. Suchen Sie nach einer öffentlichen IP-Adresse für die Store-Front-Anwendung. Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get service mit dem Argument --watch:

    kubectl get ingress store-front -n aks-store-demo --watch
    

    Die Ausgabe von ADDRESS für den store-front-Dienst ist anfangs leer:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *                      80      12m
    
  3. Sobald ADDRESS von einem leeren in eine tatsächliche öffentliche IP-Adresse geändert wird, verwenden Sie CTRL-C, um den kubectl-Beobachtungsprozess zu beenden.

    Die folgende Beispielausgabe zeigt eine gültige öffentliche IP-Adresse, die dem Dienst zugewiesen ist:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *       4.255.22.196   80      12m
    
  4. Öffnen Sie einen Webbrowser mit der externen IP-Adresse Ihres Eingangs, um die Azure Store-App in Aktion zu sehen.

    Screenshot der AKS Store-Beispielanwendung

Löschen des Clusters

Wenn Sie nicht planen, das Lernprogramm AKS zu durchlaufen, bereinigen Sie unnötige Ressourcen, um Azure Gebühren zu vermeiden. Führen Sie den Befehl az group delete aus, um die Ressourcengruppe, den Containerdienst und alle dazugehörigen Ressourcen zu entfernen.

az group delete --name <resource-group> --yes --no-wait

Hinweis

Der AKS-Cluster wurde mit einer vom Benutzer zugewiesenen verwalteten Identität erstellt. Wenn Sie diese Identität nicht mehr benötigen, können Sie sie manuell entfernen.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie einen Kubernetes-Cluster mit AKS Automatic in einem benutzerdefinierten virtuellen Netzwerk bereitgestellt und anschließend eine einfache Multicontaineranwendung dafür 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 AKS Automatic finden Sie in der Einführung.