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.
- YAML
- Resource Manager
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 compila un sidecar dell'applicazione per la registrazione, il monitoraggio o qualsiasi altra configurazione in cui un servizio richiede un secondo processo collegato.
In questa esercitazione si seguiranno i passaggi per eseguire una configurazione sidecar a due contenitori distribuendo un modello di Azure Resource Manager usando l'interfaccia della riga di comando di Azure. Scopri come:
- Configurare un modello di gruppo multicontenitore
- Distribuire il gruppo di contenitori
- Visualizzare i log dei contenitori
Un modello di Resource Manager può essere facilmente adattato per gli scenari in cui è necessario distribuire più risorse del servizio di Azure (ad esempio, una condivisione di File di Azure o una rete virtuale) con il gruppo di contenitori.
Annotazioni
I gruppi di più contenitori sono attualmente limitati ai contenitori Linux.
Se non si ha un account Azure, creare un account gratuito prima di iniziare.
Prerequisiti
È possibile utilizzare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se preferisci eseguire localmente i comandi di riferimento della CLI, installa l'Azure CLI. 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 usi un'installazione locale, accedi all'interfaccia della riga di comando di Azure usando il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Quando ti viene richiesto, installa l'estensione Azure CLI al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
Configurare un modello
Per iniziare, copiare il codice JSON seguente in un nuovo file denominato azuredeploy.json. In Azure Cloud Shell è possibile usare Visual Studio Code per creare il file nella directory di lavoro:
code azuredeploy.json
Questo modello di Resource Manager definisce un gruppo di contenitori con due contenitori, un indirizzo IP pubblico e due porte esposte. Il primo contenitore del gruppo esegue un'applicazione Web con connessione Internet. Il secondo contenitore, sidecar, effettua una richiesta HTTP all'applicazione Web principale tramite la rete locale del gruppo.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": 80
},
{
"protocol": "tcp",
"port": 8080
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
Per usare un registro immagini del contenitore privato, aggiungere un oggetto al documento JSON con il formato seguente. Per un esempio di implementazione di questa configurazione, vedere la documentazione di riferimento sui modelli di Resource Manager di ACI .
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
Implementare il modello
Creare un gruppo di risorse con il comando az group create.
az group create --name myResourceGroup --location eastus
Distribuire il modello con il comando az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
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
Per visualizzare l'applicazione in esecuzione, passare all'indirizzo IP nel browser. Ad esempio, l'indirizzo IP si trova 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 usando il comando az container logs . L'argomento --container-name specifica il contenitore da cui eseguire il pull dei log. In questo esempio viene specificato il aci-tutorial-app contenitore.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Risultato:
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 sidecar, eseguire un comando simile che specifica il aci-tutorial-sidecar contenitore.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Risultato:
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 sidecar effettua periodicamente una richiesta HTTP all'applicazione Web principale tramite la rete locale del gruppo per assicurarsi che venga eseguita. Questo esempio sidecar può essere espanso per attivare un avviso se ha ricevuto un codice di risposta HTTP diverso da 200 OK.
Passaggi successivi
In questa esercitazione è stato usato un modello di Azure Resource Manager per implementare un gruppo con più contenitori in Azure Container Instances. Ecco cosa hai imparato a fare:
- Configurare un modello di gruppo multicontenitore
- Distribuire il gruppo di contenitori
- Visualizzare i log dei contenitori
Per altri esempi di modelli, vedere Modelli di Azure Resource Manager per Istanze di Azure Container.
È anche possibile specificare un gruppo multi-contenitore usando un file YAML. A causa della natura più concisa del formato YAML, la distribuzione con un file YAML è una scelta ottimale quando la distribuzione include solo istanze di contenitore.