Zelfstudie: Een groep met meerdere containers implementeren met behulp van een Resource Manager-sjabloon
Azure Container Instances ondersteunt de implementatie van meerdere containers op één host met behulp van een containergroep. Een containergroep is handig bij het bouwen van een toepassings sidecar voor logboekregistratie, bewaking of een andere configuratie waarbij een service een tweede gekoppeld proces nodig heeft.
In deze zelfstudie volgt u de stappen voor het uitvoeren van een sidecarconfiguratie met twee containers door een Azure Resource Manager-sjabloon te implementeren met behulp van de Azure CLI. U leert het volgende:
- Een sjabloon voor meerdere containers configureren
- De containergroep implementeren
- De logboeken van de containers weergeven
Een Resource Manager-sjabloon kan gemakkelijk worden aangepast voor scenario's wanneer u meer Azure-serviceresources (bijvoorbeeld een Azure Files-share of een virtueel netwerk) met de containergroep wilt implementeren.
Notitie
Groepen met meerdere containers zijn momenteel beperkt tot Linux-containers.
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Een sjabloon configureren
Kopieer eerst de volgende JSON naar een nieuw bestand met de naam azuredeploy.json
. In Azure Cloud Shell kunt u Visual Studio Code gebruiken om het bestand in uw werkmap te maken:
code azuredeploy.json
Deze Resource Manager-sjabloon definieert een containergroep met twee containers, een openbaar IP-adres en twee weergegeven poorten. De eerste container in de groep voert een internetgerichte webtoepassing uit. De tweede container, de sidecar, doet een HTTP-aanvraag naar de hoofdwebtoepassing via het lokale netwerk van de groep.
{
"$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]"
}
}
}
Als u een register voor een persoonlijke containerinstallatiekopieën wilt gebruiken, voegt u een object toe aan het JSON-document met de volgende indeling. Zie de referentiedocumentatie voor ACI Resource Manager-sjablonen voor een voorbeeld van een implementatie van deze configuratie.
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
De sjabloon implementeren
Een resourcegroep maken met de opdracht az group create.
az group create --name myResourceGroup --location eastus
Implementeer de sjabloon met de opdracht az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
U ontvangt binnen enkele seconden een eerste reactie van Azure.
Implementatiestatus weergeven
Gebruik de volgende opdracht az container show om de status van de implementatie weer te geven:
az container show --resource-group myResourceGroup --name myContainerGroup --output table
Als u de actieve toepassing wilt weergeven, gaat u naar het IP-adres in uw browser. Het IP-adres bevindt 52.168.26.124
zich bijvoorbeeld in deze voorbeelduitvoer:
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
Containerlogboeken ophalen
Bekijk de logboekuitvoer van een container met behulp van de opdracht az container logs . Met --container-name
het argument wordt de container opgegeven waaruit logboeken moeten worden opgehaald. In dit voorbeeld wordt de aci-tutorial-app
container opgegeven.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Uitvoer:
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"
Als u de logboeken voor de sidecar-container wilt zien, voert u een vergelijkbare opdracht uit die de aci-tutorial-sidecar
container opgeeft.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Uitvoer:
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
Zoals u ziet, doet de sidecar periodiek een HTTP-aanvraag naar de hoofdwebtoepassing via het lokale netwerk van de groep om ervoor te zorgen dat deze wordt uitgevoerd. Dit sidecar-voorbeeld kan worden uitgebreid om een waarschuwing te activeren als deze een andere HTTP-antwoordcode heeft ontvangen dan 200 OK
.
Volgende stappen
In deze zelfstudie hebt u een Azure Resource Manager-sjabloon gebruikt om een groep met meerdere containers te implementeren in Azure Container Instances. U hebt geleerd hoe u:
- Een sjabloon voor meerdere containers configureren
- De containergroep implementeren
- De logboeken van de containers weergeven
Zie Azure Resource Manager-sjablonen voor Azure Container Instances voor meer sjabloonvoorbeelden.
U kunt ook een groep met meerdere containers opgeven met behulp van een YAML-bestand. Vanwege de beknoptere aard van de YAML-indeling is de implementatie met een YAML-bestand een goede keuze wanneer uw implementatie alleen containerinstanties bevat.