Distribuire un'applicazione nel cluster del servizio Azure Kubernetes

Completato

L'azienda sta valutando le soluzioni disponibili per distribuire il servizio di rendering video basato sul cloud. Si è scelto servizio Azure Kubernetes (servizio Azure Kubernetes) come piattaforma di sviluppo nativa del cloud. Dopo aver configurato il cluster, si è pronti per distribuire uno dei componenti nell'applicazione di rendering video. Si decide di distribuire una versione statica del sito Web della società per esplorare il processo di distribuzione di Kubernetes.

Prima di illustrare la modalità di distribuzione per Kubernetes, verranno esaminati alcuni passaggi da eseguire per distribuire un'applicazione simile in un ambiente non Kubernetes.

Si supponga di usare una macchina virtuale di Azure come piattaforma di destinazione. Il primo passaggio consiste nel preparare il software server per ospitare l'applicazione. Si eseguiranno le seguenti attività:

  • Installazione del sistema operativo.
  • Assicurarsi di aggiornare il sistema operativo alle patch di sicurezza e al software più recente.
  • Installare e configurare il software del server Web.
  • Distribuire l'applicazione Web.

Ripetere questo processo per ogni nuova macchina virtuale quando si decide di ridimensionare il sito Web in modo da gestire un aumento della domanda da parte dei clienti.

Un approccio alternativo consiste nell'eseguire il sito Web in una piattaforma basata su contenitori come Istanze di Azure Container. Non occorre preoccuparsi della tecnologia server sottostante, ma sarà necessario configurare e gestire diversi contenitori per usare questa strategia manualmente.

Kubernetes e il servizio Azure Kubernetes consentono di orchestrare i contenitori. Le funzionalità di orchestrazione dei contenitori di Kubernetes semplificano la gestione dei carichi di lavoro nel cluster. I carichi di lavoro vengono distribuiti usando contenitori creati da immagini del contenitore, per eseguire le applicazioni all'interno di un cluster del servizio Azure Kubernetes.

In questa unità è possibile scoprire come creare i carichi di lavoro nel cluster del servizio Azure Kubernetes.

Che cos'è un registro contenitori?

Un registro contenitori consente di archiviare in modo sicuro le immagini del contenitore nel cloud per la successiva distribuzione. È possibile considerare il registro contenitori come un archivio che conserva più versioni dell'immagine del contenitore. A ogni immagine archiviata è assegnato un tag per l'identificazione.

Potrebbe esistere, ad esempio, l'immagine contoso-website:latest, ovvero una versione diversa dell'immagine con tag contoso-website:v1.0.0.

A diagram that shows how container images are downloaded from a container registry to a Kubernetes cluster by using a manifest file.

I registri contenitori possono essere pubblici o privati. I registri privati richiedono credenziali per l'accesso e il download delle immagini e saranno la strategia da adottare per l'archiviazione delle immagini del contenitore.

Kubernetes consente di distribuire solo le immagini ospitate in un registro contenitori. La creazione di un registro contenitori privato in genere fa parte della strategia di distribuzione del servizio Azure Kubernetes standard.

Che cos'è un pod Kubernetes?

Un pod Kubernetes raggruppa i contenitori e le applicazioni in una struttura logica. Questi pod non sono intelligenti e sono composti da uno o più contenitori di applicazioni. Ognuno ha un indirizzo IP, regole di rete e porte esposte.

Se si volesse eseguire la ricerca di tutti i carichi di lavoro correlati a contoso-website, ad esempio, sarebbe necessario recuperare dal cluster i pod con l'etichetta app e il valore contoso-website.

Che cos'è la distribuzione Kubernetes?

A diagram that shows a Kubernetes deployment with a label and three pods.

Una distribuzione Kubernetes è un'evoluzione dei pod. Una distribuzione esegue il wrapping dei pod in un oggetto intelligente che consente di aumentare il numero di istanze. È possibile duplicare e ridimensionare facilmente l'applicazione per supportare un carico maggiore senza la necessità di configurare regole di rete complesse.

Le distribuzioni consentono agli utenti di aggiornare le applicazioni semplicemente modificando il tag dell'immagine senza tempi di inattività. Quando si aggiorna una distribuzione, invece di eliminare tutte le app, la distribuzione disattiva le app online una alla volta. Quindi, li sostituisce con la versione più recente. Questo significa che qualsiasi distribuzione può aggiornare i pod al suo interno senza effetti visibili sulla disponibilità.

File manifesto Kubernetes

Un file manifesto Kubernetes consente di descrivere in modo dichiarativo i carichi di lavoro in formato YAML e semplificare la gestione degli oggetti di Kubernetes.

Si supponga di dover distribuire manualmente un carico di lavoro. È necessario considerare e gestire diversi aspetti. Occorre creare un contenitore, selezionare un nodo specifico, eseguirne il wrapping in un pod, eseguire il pod, monitorare l'esecuzione e così via.

I file manifesto contengono tutte le informazioni necessarie per creare e gestire il carico di lavoro descritto.

Che cos'è un'etichetta Kubernetes?

Un'etichetta Kubernetes consente di raggruppare in modo logico oggetti Kubernetes. Queste etichette consentono al sistema di eseguire una query sul cluster per trovare oggetti che corrispondono a un'etichetta con un nome specifico.

Struttura di un file manifesto

La struttura dei file manifesto varia a seconda del tipo di risorsa creata. Tuttavia, i file manifesto condividono istruzioni comuni. Queste istruzioni definiscono diversi aspetti, ad esempio le API da usare e il tipo di carico di lavoro da creare.

Le prime due voci in tutti i file manifesto hanno due chiavi importanti: apiVersion e kind. Di seguito è riportato un esempio di un file di distribuzione.

apiVersion: apps/v1 # Where in the API it resides
kind: Deployment # The kind of workload we're creating

La chiave apiVersion definisce l'endpoint del server API che gestisce l'oggetto che viene distribuito.

La chiave kind definisce il carico di lavoro che viene creato da questa distribuzione.

Altre chiavi comuni per tutti i file sono le chiavi metadata e name. Tutte le risorse Kubernetes devono avere un nome. Questo nome va all'interno della chiave metadata.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website # This will be the name of the deployment

Raggruppare gli oggetti in una distribuzione

Le distribuzioni usano un'etichetta (label) per trovare e raggruppare i pod. L'etichetta viene definita nel file manifesto della distribuzione.

Ecco un esempio. Si noti il valore matchLabels specificato nella definizione di selector aggiunta alla definizione di spec.

# deployment.yaml
# ...
spec:
  selector:
    matchLabels:
      app: contoso-website
# ...

Da questo punto in poi, tutti i file hanno strutture diverse in base al tipo di risorsa che si sta indicando a Kubernetes di creare.

Applicare un file di distribuzione

Per distribuire un file manifesto di distribuzione Kubernetes, si usa kubectl. Di seguito è riportato un esempio del comando .

kubectl apply -f ./deployment.yaml

Verificare le conoscenze

1.

Che cos'è un registro contenitori?

2.

Che cos'è un file manifesto?