Freigeben über


Schnellstart: Erstellen eines privaten 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 privaten AKS Automatic Cluster im virtuellen Netzwerk bereit.
  • Stellen Sie eine Verbindung mit dem privaten Cluster her.
  • Führen Sie eine Beispielanwendung mit mehreren Containern mit einer Gruppe von Microservices und Web-Front-Ends aus, die ein Einzelhandelsszenario simulieren.

Voraussetzungen

  • Wenn Sie kein Azure Konto haben, erstellen Sie ein free-Konto.
  • Dieser Artikel erfordert Version 2.77.0 oder höher des Azure CLI. Wenn Sie Azure Cloud Shell verwenden, ist die neueste Version bereits dort installiert. Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI.

Einschränkungen

  • Der Systemknotenpool von AKS-Automatik-Clustern erfordert eine Bereitstellung in Azure-Regionen, die mindestens drei Verfügbarkeitszonen, ephemere Betriebssystemdatenträger und das Azure Linux-Betriebssystem unterstützen.
  • AKS Automatic ist in den folgenden Regionen 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, northcentralus, northeurope, norwayeast, polandcentral, southafricanorth, southcentralus, southeastasia, spaincentral, swedencentral, switzerlandnorth, uaenorth, uksouth, westeurope, westus, westus2, westus3.
  • Der AKS-Automatikknoten hat die Sperrung der Knotenressourcengruppe vorkonfiguriert, was Änderungen an der MC_-Ressourcengruppe nicht erlaubt und Verbindungen von virtuellen Netzwerken zur standardmäßigen privaten DNS-Zone verhindert. Verwenden Sie für Szenarien mit übergreifendem VNet oder benutzerdefiniertem DNS ein benutzerdefiniertes Netzwerk und privates DNS, indem Sie Erstellen Sie einen privaten Azure Kubernetes Service (AKS) Automatik-Cluster in einem benutzerdefinierten virtuellen Netzwerk.

Von Bedeutung

AKS Automatic versucht, basierend auf der im Abonnement verfügbaren Kapazität dynamisch eine Größe eines virtuellen Computers für den system Knotenpool auszuwählen. Stellen Sie sicher, dass Ihr Abonnement über ein Kontingent für 16 vCPUs einer der folgenden Größen in der Region verfügt, in der Sie den Cluster bereitstellen: Standard_D4lds_v5, Standard_D4ads_v5, Standard_D4ds_v5, Standard_D4d_v5, Standard_D4d_v4, Standard_DS3_v2, Standard_DS12_v2, Standard_D4alds_v6, Standard_D4lds_v6oder Standard_D4alds_v5. Sie können über das Azure-Portal Kontingente für bestimmte VM-Familien einsehen und Anforderungen zur Kontingenterhöhung einreichen. Wenn Sie weitere Fragen haben, erfahren Sie mehr über die Dokumentation zur Problembehandlung.

Definieren von Variablen

Definieren Sie die folgenden Variablen, die in den nachfolgenden 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": "eastus",
  "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 mithilfe des az network vnet subnet create Befehls ein API-Server-Subnetz und ein Cluster-Subnetz.

Wenn Sie ein benutzerdefiniertes virtuelles Netzwerk mit AKS Automatic verwenden, müssen Sie ein API-Server-Subnetz erstellen und delegieren, um es Microsoft.ContainerService/managedClusters zuzuweisen, was dem AKS-Dienst Berechtigungen zum Einfügen der API-Server-Pods und des internen Lastenausgleichs in dieses Subnetz gewährt. 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 9 IP-Adressen im Subnetzadressraum. Eine unzureichende Anzahl von IP-Adressen kann die Skalierung von API-Servern verhindern, sodass ggf. nicht genügend API-Server vorhanden sind.

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 clusterSubnet \
--address-prefixes 172.19.1.0/24

Netzwerksicherheitsgruppen-Regeln

Der gesamte Datenverkehr innerhalb des virtuellen Netzwerks ist standardmäßig zulässig. Wenn Sie jedoch Regeln für die Netzwerksicherheitsgruppe (Network Security Group, NSG) zum Einschränken des Datenverkehrs zwischen verschiedenen Subnetzen hinzugefügt haben, stellen Sie sicher, dass die NSG-Sicherheitsregeln die folgenden Kommunikationstypen zulassen:

Bestimmungsort Quelle Protokoll Hafen Verwendung
APIServer-Subnetz-CIDR Cluster-Subnetz TCP 443 und 4443 Erforderlich, um die Kommunikation zwischen Knoten und dem API-Server zu aktivieren.
APIServer-Subnetz-CIDR Azure Load Balancer TCP 9988 Erforderlich, um die Kommunikation zwischen Azure Load Balancer und dem API-Server zu aktivieren. Sie können auch die gesamte Kommunikation zwischen dem Azure Load Balancer und dem API Server Subnet CIDR aktivieren.
Knoten-CIDR Knoten-CIDR Alle Protokolle Alle Ports Erforderlich, um die Kommunikation zwischen Knoten zu aktivieren.
Knoten-CIDR Pod-CIDR Alle Protokolle Alle Ports Erforderlich für das Dienstdatenverkehrsrouting.
Pod-CIDR Pod-CIDR Alle Protokolle Alle Ports Erforderlich für Pod-zu-Pod- und Pod-zu-Dienst-Datenverkehr, einschließlich DNS.

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 ${IDENTITY_PRINCIPAL_ID}

Erstellen eines privaten AKS Automatic Cluster in einem benutzerdefinierten virtuellen Netzwerk

Verwenden Sie zum Erstellen eines privaten AKS Automatic Cluster den Befehl "az aks create ". Beachten Sie die Verwendung der --enable-private-cluster Kennzeichnung.

Hinweis

Sie können in der Dokumentation zum privaten Cluster weitere Optionen konfigurieren, z. B. das Deaktivieren des öffentlichen FQDN des Clusters und das Konfigurieren der privaten DNS-Zone.

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" \
--vnet-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/clusterSubnet" \
--assign-identity "/subscriptions/${SUBSCRIPTION_ID}/resourcegroups/${RG_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${IDENTITY_NAME}" \
--sku automatic \
--enable-private-cluster \
--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

Wenn ein automatischer AKS-Cluster als privater Cluster erstellt wird, hat der API-Serverendpunkt keine öffentliche IP-Adresse. Um den API-Server zu verwalten, z. B. über kubectl, müssen Sie eine Verbindung über einen Computer herstellen, der Zugriff auf das Azure virtuelle Netzwerk des Clusters hat. Es gibt mehrere Optionen zum Einrichten der Netzwerkkonnektivität mit dem privaten Cluster:

Das Erstellen eines virtuellen Computers im selben virtuellen Netzwerk wie der AKS-Cluster ist die einfachste Option. ExpressRoute und VPNs fügen Kosten hinzu und erfordern zusätzliche Netzwerkkomplexität. Beim Peering virtueller Netzwerke müssen Sie Ihre Netzwerk-CIDR-Bereiche planen, um sicherzustellen, dass es keine überlappenden Bereiche gibt. Weitere Informationen finden Sie unter "Optionen für das Herstellen einer Verbindung mit dem privaten Cluster ".

Um einen Kubernetes-Cluster zu verwalten, verwenden Sie 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 Automatic-Cluster sind mit Microsoft Entra ID für Kubernetes rollenbasierte Zugriffskontrolle (RBAC) konfiguriert.

Wenn Sie einen Cluster mithilfe des Azure CLI erstellen, werden Ihrem Benutzer integrierte 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.

Nachdem Sie sich angemeldet haben, zeigt die folgende Beispielausgabe die verwalteten Systemknotenpools an. Stellen Sie sicher, dass der Knotenstatus Bereit lautet.

NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-13213685-vmss000000   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000001   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000002   Ready    agent   2m26s   v1.28.5

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 cluster subnet.')
param clusterSubnetName string = 'clusterSubnet'

@description('The subnet prefix of the cluster subnet.')
param clusterSubnetPrefix string = '172.19.1.0/24'

// Virtual network with an API server subnet and a cluster subnet
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
    name: vnetName
    location: location
    properties: {
        addressSpace: {
            addressPrefixes: [ addressPrefix ]
        }
        subnets: [
            {
                name: apiServerSubnetName
                properties: {
                    addressPrefix: apiServerSubnetPrefix
                }
            }
            {
                name: clusterSubnetName
                properties: {
                    addressPrefix: clusterSubnetPrefix
                }
            }
        ]
    }
}

output apiServerSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, apiServerSubnetName)
output clusterSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, clusterSubnetName)

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

Von Bedeutung

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 jedoch Regeln für die Netzwerksicherheitsgruppe (Network Security Group, NSG) zum Einschränken des Datenverkehrs zwischen verschiedenen Subnetzen hinzugefügt haben, stellen Sie sicher, dass die NSG-Sicherheitsregeln die folgenden Kommunikationstypen zulassen:

Bestimmungsort Quelle Protokoll Hafen Verwendung
APIServer-Subnetz-CIDR Cluster-Subnetz TCP 443 und 4443 Erforderlich, um die Kommunikation zwischen Knoten und dem API-Server zu aktivieren.
APIServer-Subnetz-CIDR Azure Load Balancer TCP 9988 Erforderlich, um die Kommunikation zwischen Azure Load Balancer und dem API-Server zu aktivieren. Sie können auch die gesamte Kommunikation zwischen dem Azure Load Balancer und dem API Server Subnet CIDR aktivieren.

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.

Von Bedeutung

Die Bicep-Datei legt den uamiName Parameter auf das 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.

Von Bedeutung

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 privaten AKS Automatic Cluster in einem benutzerdefinierten virtuellen Netzwerk

Diese Bicep Datei definiert den automatischen AKS-Cluster.

Hinweis

Sie können in der Dokumentation zu privaten Clustern weitere Optionen konfigurieren, z. B. das Deaktivieren des öffentlichen Cluster-FQDN und das Konfigurieren der privaten DNS-Zone.

@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 cluster subnet.')
param clusterSubnetId string

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

/// Create the private 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: {
    agentPoolProfiles: [
      {
        name: 'systempool'
        mode: 'System'
          count: 3
        vnetSubnetID: clusterSubnetId
      }
    ]
    apiServerAccessProfile: {
        subnetId: apiServerSubnetId
        enablePrivateCluster: true
    }
    networkProfile: {
      outboundType: 'loadBalancer'
    }
  }
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${uamiId}': {}
    }
  }
}

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

Von Bedeutung

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 Cluster-Subnetzressourcen-ID und die vom Benutzer zugewiesene Identitätsprinzipal-ID angeben.

az deployment group create --resource-group <resource-group> --template-file aks.bicep \
--parameters apiServerSubnetId=<API server subnet resource id> \
--parameters clusterSubnetId=<cluster subnet resource id> \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>

Herstellen einer Verbindung mit dem Cluster

Wenn ein automatischer AKS-Cluster als privater Cluster erstellt wird, hat der API-Serverendpunkt keine öffentliche IP-Adresse. Um den API-Server zu verwalten, z. B. über kubectl, müssen Sie eine Verbindung über einen Computer herstellen, der Zugriff auf das Azure virtuelle Netzwerk des Clusters hat. Es gibt mehrere Optionen zum Einrichten der Netzwerkkonnektivität mit dem privaten Cluster:

Das Erstellen eines virtuellen Computers im selben virtuellen Netzwerk wie der AKS-Cluster ist die einfachste Option. ExpressRoute und VPNs (virtuelle private Netzwerke) erhöhen die Kosten und erfordern zusätzliche Netzwerkkomplexität. Beim Peering virtueller Netzwerke müssen Sie Ihre Netzwerk-CIDR-Bereiche planen, um sicherzustellen, dass es keine überlappenden Bereiche gibt. Weitere Informationen finden Sie unter "Optionen für das Herstellen einer Verbindung mit dem privaten Cluster ".

Um einen Kubernetes-Cluster zu verwalten, verwenden Sie 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 Automatic-Cluster sind mit Microsoft Entra ID für Kubernetes rollenbasierte Zugriffskontrolle (RBAC) konfiguriert.

Von Bedeutung

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.

Nachdem Sie sich angemeldet haben, zeigt die folgende Beispielausgabe die verwalteten Systemknotenpools an. Stellen Sie sicher, dass der Knotenstatus Bereit lautet.

NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-13213685-vmss000000   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000001   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000002   Ready    agent   2m26s   v1.28.5

Stellen Sie die Anwendung bereit

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
  • Produktservice: Zeigt Produktinformationen an.
  • Bestellservice: Bestellungen aufgeben.
  • 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 dies die erste Workload ist, die Sie bereitstellen, kann es einige Minuten dauern, bis die automatische Knotenbereitstellung einen Knotenpool erstellt und die Pods ausführt.

    kubectl get pods -n aks-store-demo
    
  2. Suchen Sie nach einer öffentlichen IP-Adresse für die Storefront-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 privaten 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.