Samouczek: wdrażanie grupy zawierającej wiele kontenerów przy użyciu szablonu Menedżera zasobów
Usługa Azure Container Instances obsługuje wdrażanie wielu kontenerów na jednym hoście przy użyciu grupy kontenerów. Grupa kontenerów jest przydatna podczas tworzenia przyczepki aplikacji na potrzeby rejestrowania, monitorowania lub innej konfiguracji, w której usługa wymaga drugiego dołączonego procesu.
W tym samouczku wykonasz kroki, aby uruchomić konfigurację przyczepki z dwoma kontenerami, wdrażając szablon usługi Azure Resource Manager przy użyciu interfejsu wiersza polecenia platformy Azure. Dowiedz się, jak odbywa się:
- Konfigurowanie szablonu grupy z wieloma kontenerami
- Wdrażanie grupy kontenerów
- Wyświetlanie dzienników kontenerów
Szablon usługi Resource Manager można łatwo dostosować do scenariuszy, gdy trzeba wdrożyć więcej zasobów usługi platformy Azure (na przykład udział usługi Azure Files lub sieć wirtualną) z grupą kontenerów.
Uwaga
Grupy z wieloma kontenerami są obecnie ograniczone do kontenerów systemu Linux.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Konfigurowanie szablonu
Zacznij od skopiowania następującego pliku JSON do nowego pliku o nazwie azuredeploy.json
. W usłudze Azure Cloud Shell możesz użyć programu Visual Studio Code do utworzenia pliku w katalogu roboczym:
code azuredeploy.json
Ten szablon usługi Resource Manager definiuje grupę kontenerów z dwoma kontenerami, publicznym adresem IP i dwoma uwidocznionych portami. Pierwszy kontener w grupie uruchamia aplikację internetową. Drugi kontener , przyczepka, wysyła żądanie HTTP do głównej aplikacji internetowej za pośrednictwem sieci lokalnej grupy.
{
"$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]"
}
}
}
Aby użyć prywatnego rejestru obrazów kontenera, dodaj obiekt do dokumentu JSON z następującym formatem. Aby zapoznać się z przykładową implementacją tej konfiguracji, zobacz dokumentację referencyjną szablonu usługi ACI Resource Manager.
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
Wdrażanie szablonu
Utwórz grupę zasobów za pomocą polecenia az group create.
az group create --name myResourceGroup --location eastus
Wdróż szablon za pomocą polecenia az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
W ciągu kilku sekund powinna pojawić się początkowa odpowiedź z platformy Azure.
Wyświetlanie stanu wdrożenia
Aby wyświetlić stan wdrożenia, użyj następującego polecenia az container show :
az container show --resource-group myResourceGroup --name myContainerGroup --output table
Jeśli chcesz wyświetlić uruchomioną aplikację, przejdź do jej adresu IP w przeglądarce. Na przykład adres IP znajduje się 52.168.26.124
w następujących przykładowych danych wyjściowych:
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
Wyświetlanie dzienników kontenerów
Wyświetl dane wyjściowe dziennika kontenera przy użyciu polecenia az container logs . Argument --container-name
określa kontener, z którego mają być pobierane dzienniki. W tym przykładzie aci-tutorial-app
określono kontener.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Wyjście:
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"
Aby wyświetlić dzienniki kontenera przyczepki, uruchom podobne polecenie określające aci-tutorial-sidecar
kontener.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Wyjście:
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
Jak widać, przyczepka okresowo wysyła żądanie HTTP do głównej aplikacji internetowej za pośrednictwem sieci lokalnej grupy, aby upewnić się, że jest uruchomiona. Ten przykład przyczepki można rozszerzyć, aby wyzwolić alert, jeśli otrzyma kod odpowiedzi HTTP inny niż 200 OK
.
Następne kroki
W tym samouczku użyto szablonu usługi Azure Resource Manager do wdrożenia grupy z wieloma kontenerami w usłudze Azure Container Instances. W tym samouczku omówiono:
- Konfigurowanie szablonu grupy z wieloma kontenerami
- Wdrażanie grupy kontenerów
- Wyświetlanie dzienników kontenerów
Aby uzyskać więcej przykładów szablonów, zobacz Szablony usługi Azure Resource Manager dla usługi Azure Container Instances.
Można również określić grupę z wieloma kontenerami przy użyciu pliku YAML. Ze względu na bardziej zwięzły charakter formatu YAML wdrożenie z plikiem YAML jest dobrym wyborem, gdy wdrożenie obejmuje tylko wystąpienia kontenerów.