Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба контейнеров Azure поддерживает развертывание нескольких контейнеров на одном узле с помощью группы контейнеров. Группу контейнеров удобно использовать при создании сопроводительного приложения для ведения журнала, мониторинга или любой другой задачи, для которой службе требуется дополнительный связанный процесс.
В этом руководстве описывается, как настроить двухконтейнерную конфигурацию сайдкар, развернув шаблон Azure Resource Manager с помощью Azure CLI. Вы узнаете, как:
- Настройка шаблона группы с несколькими контейнерами
- Развертывание группы контейнеров
- Просмотр журналов контейнеров
Шаблон Resource Manager можно легко адаптировать для сценариев, когда необходимо развернуть дополнительные ресурсы службы Azure (например, общую папку службы Azure или виртуальную сеть) с группой контейнеров.
Примечание.
Многоконтенерные группы сейчас ограничены контейнерами Linux.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Предпосылки
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, попробуйте запустить Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы завершить процесс проверки подлинности, выполните действия, отображаемые в терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Настройка шаблона
Для начала скопируйте следующий код JSON в новый файл с именем azuredeploy.json. В Azure Cloud Shell для создания файла в рабочей папке можно применить Visual Studio Code.
code azuredeploy.json
Этот шаблон Resource Manager определяет группу контейнеров с двумя контейнерами, общедоступным IP-адресом и двумя предоставленными портами. Первый контейнер в группе запускает веб-приложение с выходом в Интернет. Второй контейнер, сайдкар, выполняет HTTP-запрос к основному веб-приложению через локальную сеть группы.
{
"$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]"
}
}
}
Чтобы использовать реестр образов частного контейнера, добавьте объект в документ JSON со следующим форматом. Пример реализации этой конфигурации см. в справочной документации по шаблону ACI Resource Manager .
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
Развертывание шаблона
Создайте группу ресурсов с помощью команды az group create.
az group create --name myResourceGroup --location eastus
Разверните шаблон с помощью команды az deployment group create.
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
В течение нескольких секунд вы должны получить исходный ответ Azure.
Просмотр состояния развертывания
Чтобы просмотреть состояние развертывания, используйте следующую команду az container show.
az container show --resource-group myResourceGroup --name myContainerGroup --output table
Если вы хотите просмотреть запущенное приложение, перейдите к его IP-адресу в своем браузере. Например, в этом примере выходных данных используется IP-адрес 52.168.26.124:
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
Просмотр журналов контейнеров
Просмотрите выходные данные журнала контейнера с помощью команды az container logs. Аргумент --container-name определяет контейнер, из которого извлекаются журналы. В этом примере указывается контейнер aci-tutorial-app.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Выходные данные:
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"
Чтобы просмотреть журналы для бокового контейнера, выполните аналогичную команду, указывая aci-tutorial-sidecar контейнер.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Выходные данные:
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
Как видно, сайдкар периодически отправляет HTTP-запрос к основному веб-приложению через локальную сеть группы, чтобы убедиться, что оно работает. Пример работы с sidecar можно расширить, чтобы активировать оповещение при получении кода ответа HTTP, отличающегося от 200 OK.
Дальнейшие действия
В этом руководстве вы использовали шаблон Azure Resource Manager для развертывания группы с несколькими контейнерами в экземплярах контейнеров Azure. Вы узнали, как:
- Настройка шаблона группы с несколькими контейнерами
- Развертывание группы контейнеров
- Просмотр журналов контейнеров
Дополнительные примеры шаблонов см. в шаблонах Azure Resource Manager для экземпляров контейнеров Azure.
Можно также указать группу с несколькими контейнерами с помощью YAML-файла. Из-за более краткой природы формата YAML развертывание с YAML-файлом является хорошим выбором, если развертывание включает только экземпляры контейнеров.