Esercizio - Distribuire un'applicazione nel cluster del servizio Azure Kubernetes
In questo esercizio verrà distribuito il sito Web della società come app di test nel servizio Azure Kubernetes (AKS). Il sito Web è un sito Web statico con uno stack di tecnologie sottostanti HTML, CSS e JavaScript. Non riceve così tante richieste come gli altri servizi e rappresenta un modo sicuro per testare le opzioni di distribuzione.
Nota
Il codice per l'app Web è disponibile in questo repository GitHub se si vuole esplorare ulteriormente il codice sorgente. Inoltre, questa app di esempio viene distribuita solo in un pool di nodi Linux.
Importante
Per completare questo esercizio è necessaria una sottoscrizione di Azure propria e potrebbero essere applicati costi. Se non si ha già una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Creare un manifesto della distribuzione
Si crea un file manifesto della distribuzione per distribuire l'applicazione. Il file manifesto consente di definire il tipo di risorsa che si vuole distribuire e tutti i dettagli associati al carico di lavoro.
Kubernetes raggruppa i contenitori in strutture logiche denominate pod, non intelligenti. Le implementazioni aggiungono l'intelligenza mancante per creare la tua applicazione. A questo punto è possibile creare un file di distribuzione.
Nel computer usare un editor di testo come Visual Studio Code e copiare e incollare il codice YAML seguente in un file denominato deployment.yaml e salvare il file.
# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: selector: matchLabels: app: contoso-website template: metadata: labels: app: contoso-website spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http- Vengono usate due chiavi per definire le
apiVersionekinddel manifest che si sta per creare. Per ulteriori informazioni suapiVersione su quali valori inserire in questa chiave, consultare la documentazione ufficiale sulle distribuzioni di Kubernetes. -
nameè il nome della distribuzione. Usalo per identificare e interrogare le informazioni della distribuzione quando si usakubectl. - La definizione del template definisce le informazioni sui pod all'interno del file manifesto. Il modello viene inserito nel file manifesto sotto la sezione delle specifiche della distribuzione.
- Chiave
labelsper consentire alle distribuzioni di trovare e raggruppare i pod. - In un cluster del servizio Azure Kubernetes con pool di nodi Linux e Windows, il manifesto della distribuzione definisce un
nodeSelectoroggetto per indicare al cluster del servizio Azure Kubernetes di eseguire il pod dell'applicazione di esempio in un nodo che può eseguire contenitori Linux. I nodi Linux non possono eseguire contenitori Windows e viceversa. - La chiave
containersè una matrice di specifiche del contenitore poiché un pod può avere uno o più contenitori. Le specifiche definisconoimage,name,resources,portse altre informazioni importanti sul contenitore. Per tutti i pod in esecuzione verrà usato il nomecontoso-website-<UUID>, dove UUID è un ID generato per identificare tutte le risorse in modo univoco. - È consigliabile definire una quantità minima e massima di risorse che l'app è autorizzata a usare dal cluster. Usare la chiave
resourcesper specificare queste informazioni. La sezione della risorsa consente di specificare la quantità minima di risorsa come richiesta e la quantità massima di risorse come limite. - Le porte che questo contenitore espone esternamente tramite il parametro
ports. La chiaveportsè una matrice di oggetti e ciò significa che un contenitore in un pod può esporre più porte con più nomi. Assegnare un nome alla porta usando lanamechiave . L'assegnazione di un nome alle porte consente di modificare la porta esposta senza modificare i file che fanno riferimento a tale porta.
- Vengono usate due chiavi per definire le
Caricare deployment.yaml nella sessione di Cloud Shell selezionando Gestisci file>Carica.
Applicare il manifesto
In Cloud Shell eseguire il comando
kubectl applyper inviare il manifesto della distribuzione al cluster.kubectl apply -f ./deployment.yamlIl comando dovrebbe restituire un output simile all'esempio seguente.
deployment.apps/contoso-website createdEseguire il comando
kubectl get deployper verificare se la distribuzione è stata completata correttamente.kubectl get deploy contoso-websiteIl comando dovrebbe restituire una tabella simile all'esempio seguente.
NAME READY UP-TO-DATE AVAILABLE AGE contoso-website 1/1 1 1 19sEseguire il comando
kubectl get podsper verificare se il pod è in esecuzione.kubectl get podsIl comando dovrebbe restituire una tabella simile all'esempio seguente.
NAME READY STATUS RESTARTS AGE contoso-website-1c2b3b4b5b-dzsvm 1/1 Running 0 68s