Esercitazione: Distribuire un gruppo multi-contenitore usando un file YAML
Istanze di Azure Container supporta la distribuzione di più contenitori in un singolo host usando un gruppo di contenitori. Un gruppo di contenitori è utile quando si crea un contenitore collaterale dell'applicazione per la registrazione, il monitoraggio o qualsiasi altra configurazione in cui un servizio necessita di un secondo processo associato.
In questa esercitazione si esegue la procedura per l'esecuzione di una configurazione collaterale a due contenitori distribuendo un file YAML tramite l'interfaccia della riga di comando di Azure. Un file YAML fornisce un formato conciso per specificare le impostazioni dell'istanza. Scopri come:
- Configurare un file YAML
- Distribuire il gruppo di contenitori
- Visualizzare i log dei contenitori
Nota
I gruppi multicontenitore sono attualmente limitati ai contenitori Linux.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Configurare un file YAML
Per distribuire un gruppo multi-contenitore con il comando az container create nell'interfaccia della riga di comando di Azure, è necessario specificare la configurazione del gruppo di contenitori in un file YAML. Quindi passare il file YAML come parametro per il comando.
Per iniziare, copiare il file YAML seguente in un nuovo file denominato deploy-aci.yaml. In Azure Cloud Shell è possibile usare Visual Studio Code per creare il file nella directory di lavoro:
code deploy-aci.yaml
Questo file YAML definisce un gruppo di contenitori chiamato "myContainerGroup" con due contenitori, un indirizzo IP pubblico e due porte esposte. I contenitori vengono distribuiti dalle immagini Microsoft pubbliche. Il primo contenitore nel gruppo esegue un'applicazione Web con connessione Internet. Il secondo contenitore, quello collaterale, esegue periodicamente le richieste HTTP per l'applicazione Web in esecuzione nel primo contenitore tramite la rete locale del gruppo di contenitori.
apiVersion: 2019-12-01
location: eastus
name: myContainerGroup
properties:
containers:
- name: aci-tutorial-app
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 80
- port: 8080
- name: aci-tutorial-sidecar
properties:
image: mcr.microsoft.com/azuredocs/aci-tutorial-sidecar
resources:
requests:
cpu: 1
memoryInGb: 1.5
osType: Linux
ipAddress:
type: Public
ports:
- protocol: tcp
port: 80
- protocol: tcp
port: 8080
tags: {exampleTag: tutorial}
type: Microsoft.ContainerInstance/containerGroups
Per usare un registro privato di immagini di contenitori, aggiungere la proprietà imageRegistryCredentials
al gruppo di contenitori con i valori modificati per l'ambiente specifico:
imageRegistryCredentials:
- server: imageRegistryLoginServer
username: imageRegistryUsername
password: imageRegistryPassword
Distribuire il gruppo di contenitori
Creare un gruppo di risorse con il comando az group create:
az group create --name myResourceGroup --location eastus
Distribuire il gruppo di contenitori con il comando az container create, passando il file YAML come argomento:
az container create --resource-group myResourceGroup --file deploy-aci.yaml
Entro pochi secondi si dovrebbe ricevere una risposta iniziale da Azure.
Visualizzare lo stato della distribuzione
Per visualizzare lo stato della distribuzione, usare il comando az container show seguente:
az container show --resource-group myResourceGroup --name myContainerGroup --output table
Se si desidera visualizzare l'applicazione in esecuzione, passare al relativo indirizzo IP nel browser. Ad esempio, l'indirizzo IP è 52.168.26.124
in questo output di esempio:
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- -------------------------------------------------------------------------------------------------- -------------------- --------- --------------- -------- ----------
myContainerGroup danlep0318r Running mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest 20.42.26.114:80,8080 Public 1.0 core/1.5 gb Linux eastus
Visualizzare i log dei contenitori
Visualizzare l'output del log di un contenitore con il comando az container logs. L'argomento --container-name
specifica il contenitore da cui effettuare il pull dei log. In questo esempio viene specificato il contenitore aci-tutorial-app
.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Output:
listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
Per visualizzare i log per il contenitore collaterale, eseguire un comando simile specificando il contenitore aci-tutorial-sidecar
.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Output:
Every 3s: curl -I http://localhost 2020-07-02 20:36:41
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1663 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive
Come si può notare, il contenitore collaterale invia periodicamente una richiesta HTTP all'applicazione Web principale tramite la rete locale del gruppo per verificare che l'applicazione sia in esecuzione. Questo esempio di contenitore collaterale può essere esteso per attivare un avviso se si riceve un codice di risposta HTTP diverso da 200 OK
.
Passaggi successivi
In questa esercitazione è stato usato un file YAML per distribuire un gruppo multi-contenitore in Istanze di Azure Container. Contenuto del modulo:
- Configurare un file YAML per un gruppo multi-contenitore
- Distribuire il gruppo di contenitori
- Visualizzare i log dei contenitori
È anche possibile distribuire un gruppo multi-contenitore usando un modello di Resource Manager. Un modello di Resource Manager può essere facilmente adattato agli scenari in cui è necessario distribuire altre risorse di servizi di Azure con il gruppo di contenitori.