Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ Servizio Azure Kubernetes Automatico
Il servizio Azure Kubernetes Automatico 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 AKS Automatic include anche un contratto di servizio per la prontezza dei pod che garantisce che il 99.9% delle operazioni di prontezza dei pod sia completato entro 5 minuti, garantendo un'infrastruttura affidabile e con auto-riparazione per le applicazioni. Questa guida introduttiva presuppone una comprensione di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere Concetti di base relativi a Kubernetes per il servizio Azure Kubernetes.
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, crearne uno gratuito.
- Questo articolo richiede la versione 2.77.0 o successiva dell'interfaccia della riga di comando di Azure. Se si sta usando Azure Cloud Shell, la versione più recente è già installata. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
- Identità del cluster con un'assegnazione di ruolo predefinito
Network Contributornella subnet del server API. - Identità del cluster con un'assegnazione di ruolo predefinito
Network Contributornella rete virtuale per supportare il Provisioning automatico dei nodi. - Identità utente che accede al cluster con
Azure Kubernetes Service Cluster User RoleeAzure Kubernetes Service RBAC Writer. - Rete virtuale con una subnet dedicata del server API con dimensioni di almeno
*/28, delegato aMicrosoft.ContainerService/managedClusters.- Se è presente un gruppo di sicurezza di rete collegato alle subnet, assicurarsi che le regole consentano il traffico seguente tra i nodi e il server API, Azure Load Balancer e il server API e la comunicazione da pod a pod.
- Se è presente un firewall di Azure o un altro metodo di restrizione in uscita o un'appliance, verificare che siano consentite le regole di rete in uscita e i nomi di dominio completi richiesti .
- Il servizio Azure Kubernetes automatico abiliterà Criteri di Azure nel cluster del servizio Azure Kubernetes. Tuttavia, è consigliabile pre-registrare il provider di risorse
Microsoft.PolicyInsightsnella sottoscrizione per un'esperienza più fluida. Per altre informazioni, vedere Provider e tipi di risorse di Azure .
Limitazioni
- Il pool di nodi di sistema dei cluster AKS automatici richiede la distribuzione in aree di Azure che supportano almeno tre zone di disponibilità, un disco del sistema operativo effimero e Azure Linux OS.
- È possibile creare cluster del servizio Azure Kubernetes Automatico solo nelle aree in cui Integrazione rete virtuale per il server API è disponibile a livello generale.
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 specifiche famiglie di macchine virtuali e inviare richieste di aumento delle quote 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 di Azure è un gruppo logico in cui le risorse di Azure 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 | Bilanciatore di carico Azure | TCP | 9988 | Obbligatorio per abilitare la comunicazione tra Azure Load Balancer e il server API. È anche possibile abilitare tutte le comunicazioni tra Azure Load Balancer e 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 ha accesso alla rete virtuale di 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 createcon 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 AKS sono configurati con Microsoft Entra ID per il controllo degli accessi in base al ruolo (RBAC) di Kubernetes.
Quando si crea un cluster usando l'interfaccia della riga di comando di Azure, all'utente vengono assegnati ruoli predefiniti per Azure Kubernetes Service 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 Bicep virtualNetwork.bicep nel computer locale.
Importante
Il file Bicep imposta il vnetName parametro su aksAutomaticVnet, il addressPrefix parametro su 172.19.0.0/16, il apiServerSubnetPrefix parametro su 172.19.0.0/28 e il apiServerSubnetPrefix parametro su 172.19.1.0/24. Per usare valori diversi, assicurarsi di aggiornare le stringhe ai valori preferiti.
Distribuire il file Bicep usando l'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 | Bilanciatore di carico Azure | TCP | 9988 | Obbligatorio per abilitare la comunicazione tra Azure Load Balancer e il server API. È anche possibile abilitare tutte le comunicazioni tra Azure Load Balancer e 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 uamiName parametro su aksAutomaticUAMI. Se si vuole usare un nome di identità diverso, assicurarsi di aggiornare la stringa al nome preferito.
Distribuire il file Bicep usando l'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 ruolo del file roleAssignments.bicep nel computer locale.
Importante
Il file Bicep imposta il vnetName parametro 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 l'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 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 clusterName parametro 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 l'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 ha accesso alla rete virtuale di 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 createcon 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 AKS sono configurati con Microsoft Entra ID per il controllo degli accessi in base al ruolo (RBAC) di Kubernetes.
Importante
Quando si crea un cluster usando Bicep, è necessario assegnare uno dei ruoli predefiniti, come Azure Kubernetes Service RBAC Reader, Azure Kubernetes Service RBAC Writer, Azure Kubernetes Service RBAC Admin o Azure Kubernetes Service RBAC Cluster Admin agli utenti, con ambito al cluster o a uno spazio dei nomi specifico, ad esempio usando az role assignment create --role "Azure Kubernetes Service RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com. Assicurarsi anche che gli utenti abbiano il ruolo predefinito Azure Kubernetes Service Cluster User per poter eseguire az aks get-credentials, quindi ottenere kubeconfig del cluster del servizio Azure Kubernetes utilizzando 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, utilizzare 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:
- 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 il bus di servizio di Azure.
Creare uno spazio dei nomi
aks-store-demoin cui distribuire le risorse Kubernetes.kubectl create ns aks-store-demoDistribuire l'applicazione usando il comando kubectl apply nel
aks-store-demonamespace. Il file YAML che definisce la distribuzione si trova in GitHub.kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yamlL'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.
Controllare lo stato dei pod distribuiti usando il comando kubectl get pods. Fare in modo che tutti i pod siano
Runningprima 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-demoVerificare 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 --watchL'output ADDRESS per il
store-frontservizio inizialmente mostra vuoto:NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 80 12mQuando l'INDIRIZZO passa da vuoto a un indirizzo IP pubblico effettivo, usare
CTRL-Cper arrestare il processo dikubectlcontrollo.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 12mAprire un Web browser all'indirizzo IP esterno dell'ingresso per visualizzare l'applicazione di Archivio di Azure in azione.
Eliminare il cluster
Se non si prevede di seguire il tutorial AKS, ripulire le risorse non necessarie per evitare costi su 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.