Condividi tramite


Guida introduttiva: Creare un cluster privato Servizio Azure Kubernetes (AKS) Automatico in una rete virtuale personalizzata

Si applica a: ✔️ Servizio Azure Kubernetes Automatico

Servizio Azure Kubernetes (AKS) Automatic offre l'esperienza Kubernetes gestita più semplice per sviluppatori, tecnici DevOps e tecnici della piattaforma. Ideale per le applicazioni moderne e di intelligenza artificiale, il servizio Azure Kubernetes automatico automatizza la configurazione e le operazioni del cluster del servizio Azure Kubernetes e incorpora le configurazioni consigliate. Gli utenti di qualsiasi livello di competenza possono trarre vantaggio dalla sicurezza, dalle prestazioni e dall'affidabilità di AKS Automatico per le loro applicazioni. Il servizio Automatico del servizio Azure Kubernetes include anche un contratto di servizio per la preparazione dei pod che garantisce 99.9% di completare le operazioni di idoneità dei pod entro 5 minuti, garantendo un'infrastruttura affidabile e di riparazione automatica per le applicazioni. Questa guida introduttiva presuppone una comprensione di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere concetti di base di Kubernetes per Servizio Azure Kubernetes (AKS).

Con questa guida introduttiva, si potrà:

  • Crea una rete virtuale.
  • Creare un'identità gestita con autorizzazioni sulla rete virtuale.
  • Distribuire un cluster AKS automatico privato nella rete virtuale.
  • Connettersi al cluster privato.
  • Esegui un'applicazione multi-contenitore di esempio con un gruppo di microservizi e front-end web, simulando uno scenario di commercio al dettaglio.

Prerequisiti

  • Se non si ha un account Azure, creare un account free.
  • Questo articolo richiede la versione 2.77.0 o successiva del interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata. Se è necessario installare o aggiornare, vedere Installare interfaccia della riga di comando di Azure.
  • Identità del cluster con un'assegnazione di ruolo predefinito Network Contributor nella subnet del server API.
  • Identità del cluster con un'assegnazione di ruolo predefinito Network Contributor nella rete virtuale per supportare il Provisioning automatico dei nodi.
  • Identità utente che accede al cluster con servizio Azure Kubernetes Cluster User Role e servizio Azure Kubernetes RBAC Writer.
  • Una rete virtuale con una subnet del server API dedicata di dimensioni almeno */28, che è delegata a Microsoft.ContainerService/managedClusters.
    • Se è presente un gruppo di sicurezza di rete (NSG) collegato alle subnet, assicurarsi che le rules consentano il traffico seguente tra i nodi e il server API, il Azure Load Balancer e il server API e la comunicazione da pod a pod.
    • Se è presente un firewall di Azure o un altro metodo o dispositivo per la restrizione del traffico in uscita, verificare che siano consentite le regole di rete in uscita e i FQDN richiesti.
  • Il servizio AKS Automatic abiliterà Criteri di Azure sul cluster AKS, ma dovresti preregistrare il provider delle risorse Microsoft.PolicyInsights nella sottoscrizione per un'esperienza più fluida. Per ulteriori informazioni, vedere provider e tipi di risorse di Azure.

Limitazioni

  • Il sistema del pool di nodi dei cluster automatici di AKS richiede la distribuzione in aree Azure che supportano almeno tre zone di disponibilità, dischi OS effimeri e sistema operativo Azure Linux.
  • È possibile creare cluster del servizio Azure Kubernetes Automatico solo nelle aree in cui Integrazione rete virtuale per il server API è disponibile a livello generale.
  • Il cluster automatico AKS ha lockdown del gruppo di risorse nodo preconfigurato, il che non consente modifiche al gruppo di risorse MC_, impedendo i collegamenti rete virtuale (VNet) nella zona DNS privato predefinita. Per scenari DNS tra VNet o scenari DNS personalizzati, usare BYO VNET e BYO DNS privato seguendo il documento 'Creare un cluster privato Servizio Azure Kubernetes (AKS) Automatico in una rete virtuale personalizzata'.

Importante

AKS Automatic tenta di selezionare dinamicamente una dimensione per la macchina virtuale nel system pool di nodi in base alla capacità disponibile nella sottoscrizione. Assicurarsi che la sottoscrizione abbia una quota per 16 vCPU con una delle dimensioni seguenti nell'area in cui si distribuisce il cluster: 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_v6 o Standard_D4alds_v5. È possibile visualizzare le quote per famiglie di macchine virtuali specifiche e inviare richieste di aumento della quota tramite il portale di Azure. Per altre domande, vedere la documentazione sulla risoluzione dei problemi.

Definire le variabili

Definire le variabili seguenti che verranno usate nei passaggi successivi.

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)

Creare un gruppo di risorse

Un gruppo di risorse Azure è un gruppo logico in cui Azure risorse vengono distribuite e gestite.

Creare un gruppo di risorse con il comando az group create.

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

L'output di esempio seguente mostra la corretta creazione del gruppo di risorse:

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

Creare una rete virtuale

Creare una rete virtuale usando il comando az network vnet create. Creare una subnet del server API e una subnet del cluster usando il comando az network vnet subnet create.

Quando si usa una rete virtuale personalizzata con servizio Azure Kubernetes Automatico, è necessario creare e delegare una subnet del server API a Microsoft.ContainerService/managedClusters, che concede al servizio Azure Kubernetes le autorizzazioni per inserire i pod del server API e il servizio di bilanciamento del carico interno in tale subnet. Non è possibile usare la subnet per altri carichi di lavoro, ma è possibile usarla per più cluster del servizio Azure Kubernetes che si trovano nella stessa rete virtuale. Le dimensioni minime supportate della subnet del server API sono /28.

Avvertimento

Un cluster del servizio Azure Kubernetes prenota almeno 9 IP nello spazio indirizzi della subnet. L'esaurimento degli indirizzi IP può impedire il ridimensionamento del server API e causare un'interruzione del server API.

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

Regole dei gruppi di sicurezza di rete

Per impostazione predefinita, tutto il traffico all'interno della rete virtuale è consentito. Tuttavia, se sono state aggiunte regole del gruppo di sicurezza di rete (NSG) per limitare il traffico tra subnet diverse, assicurarsi che le regole di sicurezza del gruppo di sicurezza di rete consentano i tipi di comunicazione seguenti:

Destinazione Fonte Protocollo Porto Utilizzo
CIDR subnet APIServer Subnet del cluster TCP 443 e 4443 Obbligatorio per abilitare la comunicazione tra i nodi e il server API.
CIDR subnet APIServer Azure Load Balancer TCP 9988 Obbligatorio per abilitare la comunicazione tra Azure Load Balancer e il server API. È anche possibile abilitare tutte le comunicazioni tra la Azure Load Balancer e il CIDR della subnet del server API.
CIDR nodo CIDR nodo Tutti i protocolli Tutte le porte Obbligatorio per abilitare la comunicazione tra nodi.
CIDR nodo CIDR pod Tutti i protocolli Tutte le porte Obbligatorio per il routing del traffico del servizio.
CIDR pod CIDR pod Tutti i protocolli Tutte le porte Necessario per il traffico da pod a pod e da pod al servizio, incluso DNS.

Creare un'identità gestita e concedere le autorizzazioni per la rete virtuale

Creare un'identità gestita utilizzando il comando az identity create e recuperare l'ID dell'entità di sicurezza. Assegnare il ruolo Collaboratore di rete sulla rete virtuale all'identità gestita usando il comando az role assignment create.

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}

Creare un cluster privato AKS Automatic in una rete virtuale personalizzata

Per creare un cluster automatico privato di Azure Kubernetes Service, utilizzare il comando az aks create. Si noti l'uso del --enable-private-cluster flag.

Annotazioni

È possibile fare riferimento alla documentazione del cluster privato per configurare opzioni aggiuntive, ad esempio la disabilitazione del nome di dominio completo pubblico del cluster e la configurazione della zona DNS privata.

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

Il comando viene completato dopo pochi minuti e vengono restituite informazioni in formato JSON sul cluster.

Connettersi al cluster

Quando un cluster automatico AKS viene creato come cluster privato, l'endpoint del server API non ha un indirizzo IP pubblico. Per gestire il server API, ad esempio tramite kubectl, è necessario connettersi tramite un computer che abbia accesso alla rete virtuale Azure del cluster. Sono disponibili diverse opzioni per stabilire la connettività di rete al cluster privato:

  • Creare una macchina virtuale nella stessa rete virtuale del cluster del servizio Azure Kubernetes automatico utilizzando il comando az vm create con il flag --vnet-name.
  • Utilizzare una macchina virtuale in una rete virtuale separata e configurare il peering di rete virtuale.
  • Usare una connessione ExpressRoute o VPN .
  • Usare una connessione endpoint privato.

La creazione di una macchina virtuale nella stessa rete virtuale del cluster del servizio Azure Kubernetes è l'opzione più semplice. ExpressRoute e VPN aggiungono costi e richiedono una maggiore complessità di rete. Il peering di rete virtuale richiede la pianificazione degli intervalli CIDR della rete per assicurarsi che non siano presenti intervalli sovrapposti. Per altre informazioni, vedere Opzioni per la connessione al cluster privato .

Per gestire un cluster Kubernetes, usare il client da riga di comando kubernetes kubectl. kubectl è già installato se si usa Azure Cloud Shell. Per installare kubectl localmente, eseguire il comando az aks install-cli . I cluster automatici di AKS sono configurati con Microsoft Entra ID per il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes.

Quando si crea un cluster usando l'interfaccia della riga di comando di Azure, all'utente vengono assegnati ruoli predefiniti per servizio Azure Kubernetes RBAC Cluster Admin.

Configurare kubectl per connettersi al cluster Kubernetes usando il comando az aks get-credentials. Questo comando scarica le credenziali e configura l'interfaccia della riga di comando di Kubernetes per usarle.

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

Verificare la connessione al cluster usando il comando kubectl get. Questo comando restituisce un elenco dei nodi del cluster.

kubectl get nodes

L'output di esempio seguente mostra come viene richiesto di accedere.

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

Dopo l'accesso, l'output di esempio seguente mostra i pool di nodi di sistema gestiti. Assicurarsi che lo stato del nodo sia Pronto.

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

Creare una rete virtuale

Questo file Bicep definisce una rete virtuale.

@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)

Salvare il file di Bicep virtualNetwork.bicep nel computer locale.

Importante

Il file Bicep imposta il parametro vnetName su aksAutomaticVnet, il parametro addressPrefix su 172.19.0.0/16apiServerSubnetPrefix param su 172.19.0.0/28 e il parametro apiServerSubnetPrefix su 172.19.1.0/24. Per usare valori diversi, assicurarsi di aggiornare le stringhe ai valori preferiti.

Distribuire il file Bicep usando interfaccia della riga di comando di Azure.

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

Per impostazione predefinita, tutto il traffico all'interno della rete virtuale è consentito. Tuttavia, se sono state aggiunte regole del gruppo di sicurezza di rete (NSG) per limitare il traffico tra subnet diverse, assicurarsi che le regole di sicurezza del gruppo di sicurezza di rete consentano i tipi di comunicazione seguenti:

Destinazione Fonte Protocollo Porto Utilizzo
CIDR subnet APIServer Subnet del cluster TCP 443 e 4443 Obbligatorio per abilitare la comunicazione tra i nodi e il server API.
CIDR subnet APIServer Azure Load Balancer TCP 9988 Obbligatorio per abilitare la comunicazione tra Azure Load Balancer e il server API. È anche possibile abilitare tutte le comunicazioni tra la Azure Load Balancer e il CIDR della subnet del server API.

Creare un'identità gestita

Questo file Bicep definisce un'identità gestita assegnata dall'utente.

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

Salvare il file Bicep uami.bicep nel computer locale.

Importante

Il file Bicep imposta il parametro uamiName sul aksAutomaticUAMI. Se si vuole usare un nome di identità diverso, assicurarsi di aggiornare la stringa al nome preferito.

Distribuire il file Bicep usando interfaccia della riga di comando di Azure.

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

Assegnare il ruolo Collaboratore della rete nella rete virtuale

Questo file Bicep definisce le assegnazioni di ruolo nella rete virtuale.

@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
  }
}

Salvare il file di Bicep roleAssignments.bicep nel computer locale.

Importante

Il file Bicep imposta il parametro vnetName su aksAutomaticVnet. Se è stato usato un nome di rete virtuale diverso, assicurarsi di aggiornare la stringa al nome di rete virtuale preferito.

Distribuire il file Bicep usando interfaccia della riga di comando di Azure. È necessario specificare l'ID entità di sicurezza dell'identità assegnata dall'utente.

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

Creare un cluster privato AKS Automatic in una rete virtuale personalizzata

Questo file Bicep definisce il cluster automatico di AKS.

Annotazioni

È possibile fare riferimento alla documentazione del cluster privato per configurare opzioni aggiuntive, ad esempio disabilitare il nome di dominio completo pubblico dei cluster e configurare la zona DNS privata.

@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}': {}
    }
  }
}

Salvare il file Bicep aks.bicep nel computer locale.

Importante

Il file Bicep imposta il parametro clusterName su aksAutomaticCluster. Se si vuole un nome di cluster diverso, assicurarsi di aggiornare la stringa al nome del cluster preferito.

Distribuire il file Bicep usando interfaccia della riga di comando di Azure. È necessario specificare l'ID risorsa della subnet del server API, l'ID risorsa della subnet del cluster e l'ID entità di sicurezza dell'identità assegnata dall'utente.

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>

Connettersi al cluster

Quando un cluster automatico AKS viene creato come cluster privato, l'endpoint del server API non ha un indirizzo IP pubblico. Per gestire il server API, ad esempio tramite kubectl, è necessario connettersi tramite un computer che abbia accesso alla rete virtuale Azure del cluster. Sono disponibili diverse opzioni per stabilire la connettività di rete al cluster privato:

  • Creare una macchina virtuale nella stessa rete virtuale del cluster del servizio Azure Kubernetes automatico utilizzando il comando az vm create con il flag --vnet-name.
  • Utilizzare una macchina virtuale in una rete virtuale separata e configurare il peering di rete virtuale.
  • Usare una connessione ExpressRoute o VPN .
  • Usare una connessione endpoint privato.

La creazione di una macchina virtuale nella stessa rete virtuale del cluster del servizio Azure Kubernetes è l'opzione più semplice. Express Route e VPN aggiungono costi e richiedono una maggiore complessità di rete. Il peering di rete virtuale richiede la pianificazione degli intervalli CIDR della rete per assicurarsi che non siano presenti intervalli sovrapposti. Per altre informazioni, vedere Opzioni per la connessione al cluster privato .

Per gestire un cluster Kubernetes, usare il client da riga di comando kubernetes kubectl. kubectl è già installato se si usa Azure Cloud Shell. Per installare kubectl localmente, eseguire il comando az aks install-cli . I cluster automatici di AKS sono configurati con Microsoft Entra ID per il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes.

Importante

Quando si crea un cluster usando Bicep, è necessario assign uno dei ruoli predefiniti ad esempio servizio Azure Kubernetes RBAC Reader, servizio Azure Kubernetes RBAC Writer, servizio Azure Kubernetes RBAC Admin o servizio Azure Kubernetes RBAC Cluster Admin agli utenti, con ambito nel cluster o in uno spazio dei nomi specifico, ad esempio usando az role assignment create --role "servizio Azure Kubernetes RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com. Assicurarsi anche che gli utenti abbiano il ruolo predefinito servizio Azure Kubernetes Cluster User per poter eseguire az aks get-credentials e quindi ottenere il kubeconfig del cluster AKS usando il comando az aks get-credentials.

Configurare kubectl per connettersi al cluster Kubernetes usando il comando az aks get-credentials. Questo comando scarica le credenziali e configura l'interfaccia della riga di comando di Kubernetes per usarle.

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

Verificare la connessione al cluster usando il comando kubectl get. Questo comando restituisce un elenco dei nodi del cluster.

kubectl get nodes

L'output di esempio seguente mostra come viene richiesto di accedere.

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

Dopo l'accesso, l'output di esempio seguente mostra i pool di nodi di sistema gestiti. Assicurarsi che lo stato del nodo sia Pronto.

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

Distribuire l'applicazione

Per distribuire l'applicazione, usare un file manifesto per creare tutti gli oggetti necessari per eseguire l'applicazione AKS Store. Un file manifesto Kubernetes definisce lo stato desiderato di un cluster, ad esempio le immagini del contenitore da eseguire. Il manifesto include le distribuzioni e i servizi Kubernetes seguenti:

Screenshot dell'architettura di esempio di Azure Store.

  • Vetrina: applicazione Web che consente ai clienti di visualizzare i prodotti ed effettuare ordini.
  • Servizio prodotto: mostra le informazioni sul prodotto.
  • Servizio ordini: effettua ordini.
  • Rabbit MQ: coda di messaggi per una coda di ordini.

Annotazioni

Non è consigliabile eseguire contenitori con stato, ad esempio Rabbit MQ, senza l'archiviazione permanente per la produzione. Questi contenitori vengono usati qui per semplicità, ma è consigliabile usare servizi gestiti, ad esempio Azure Cosmos DB o bus di servizio di Azure.

  1. Creare uno spazio dei nomi aks-store-demo in cui distribuire le risorse Kubernetes.

    kubectl create ns aks-store-demo
    
  2. Distribuire l'applicazione usando il comando kubectl apply nel aks-store-demo namespace. Il file YAML che definisce la distribuzione è in GitHub.

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

    L'output di esempio seguente mostra le distribuzioni e i servizi:

    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
    

Testare l'applicazione

Quando l'applicazione viene eseguita, un servizio Kubernetes espone il front-end dell'applicazione a Internet. Questo processo può richiedere alcuni minuti.

  1. Controllare lo stato dei pod distribuiti usando il comando kubectl get pods. Fare in modo che tutti i pod siano Running prima di procedere. Se si tratta del primo carico di lavoro distribuito, il provisioning automatico dei nodi potrebbe richiedere alcuni minuti per creare un pool di nodi per eseguire i pod.

    kubectl get pods -n aks-store-demo
    
  2. Verificare la presenza di un indirizzo IP pubblico per l'applicazione front-store. Monitorare lo stato usando il comando kubectl get service con l'argomento --watch.

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

    L'output ADDRESS per il store-front servizio inizialmente mostra vuoto:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *                      80      12m
    
  3. Quando l'INDIRIZZO passa da vuoto a un indirizzo IP pubblico effettivo, usare CTRL-C per arrestare il processo di kubectl controllo.

    L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *       4.255.22.196   80      12m
    
  4. Aprire un Web browser all'indirizzo IP esterno del proprio ingress per vedere l'app Azure Store in azione.

    Screenshot dell'applicazione di esempio di AKS Store.

Eliminare il cluster

Se non si prevede di eseguire l'esercitazione AKS, pulire le risorse non necessarie per evitare addebiti Azure. Eseguire il comando az group delete per rimuovere il gruppo di risorse, il servizio contenitore e tutte le risorse correlate.

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

Annotazioni

Il cluster AKS è stato creato con un'identità gestita assegnata all'utente. Se non è più necessaria questa identità, è possibile rimuoverla manualmente.

Passaggi successivi

In questa guida introduttiva, hai distribuito un cluster Kubernetes privato utilizzando AKS Automatico all'interno di una rete virtuale personalizzata, e successivamente hai distribuito una semplice applicazione multi-contenitore. Questa applicazione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per le applicazioni Kubernetes. Per indicazioni sulla creazione di soluzioni complete con il servizio Azure Kubernetes per la produzione, vedere Linee guida per le soluzioni del servizio Azure Kubernetes.

Per saperne di più su AKS Automatico, continuare con l'introduzione.