Поделиться через


Подключение тома gitRepo в Azure Container Instances

Узнайте, как подключить том gitRepo и клонировать репозиторий в экземпляры контейнеров.

Примечание.

Подключение тома gitRepo сейчас поддерживается только для контейнеров Linux. Мы работаем над тем, чтобы обеспечить все функции для контейнеров Windows, но текущие различия платформ можно найти в обзоре.

Том gitRepo

Том gitRepo подключает каталог и клонирует в него указанный репозиторий Git во время создания контейнера. Используя том gitRepo в экземплярах контейнера, можно избежать добавления кода для выполнения этой задачи в приложениях.

При установке тома gitRepo можно задать три свойства для его настройки.

Свойство Обязательное поле Описание:
repository Да Полный URL-адрес (включая http:// или https://) репозитория Git, который будет клонирован.
directory Нет Каталог, в который необходимо клонировать репозиторий. Значение пути не должно содержать знак .. или начинаться с него. Если указан знак ., репозиторий клонируется в каталог тома. В противном случае репозиторий Git клонируется в подкаталог с указанным именем в каталоге томов.
revision No Зафиксированный хэш версии, которая будет клонирована. Если не указан, клонируется версия HEAD.

Монтирование тома gitRepo с помощью Azure CLI

Чтобы подключить том gitRepo при развертывании экземпляров контейнера с помощью Azure CLI, укажите параметры --gitrepo-url и --gitrepo-mount-path в команде az container create. При необходимости можно указать каталог тома, в который будет осуществляться клонирование (--gitrepo-dir) и хэш фиксации редакции, которая будет клонирована (--gitrepo-revision).

В этом примере команда клонирует пример приложения Microsoft aci-helloworld в /mnt/aci-helloworld в экземпляре контейнера.

az container create \
    --resource-group myResourceGroup \
    --name hellogitrepo \
    --image mcr.microsoft.com/azuredocs/aci-helloworld \
    --dns-name-label aci-demo \
    --ports 80 \
    --gitrepo-url https://github.com/Azure-Samples/aci-helloworld \
    --gitrepo-mount-path /mnt/aci-helloworld

Чтобы убедиться, что том gitRepo подключен, запустите оболочку в контейнере с помощью команды az container exec и выведите список каталогов.

az container exec --resource-group myResourceGroup --name hellogitrepo --exec-command /bin/sh
/usr/src/app # ls -l /mnt/aci-helloworld/
total 16
-rw-r--r--    1 root     root           144 Apr 16 16:35 Dockerfile
-rw-r--r--    1 root     root          1162 Apr 16 16:35 LICENSE
-rw-r--r--    1 root     root          1237 Apr 16 16:35 README.md
drwxr-xr-x    2 root     root          4096 Apr 16 16:35 app

Подключение тома gitRepo: Ресурсный менеджер

Чтобы подключить том gitRepo при развертывании экземпляров контейнера с помощью шаблона Azure Resource Manager, в шаблоне сначала нужно заполнить массив volumes в разделе properties группы контейнеров. Затем для каждого контейнера в группе контейнеров, в которой нужно подключить том gitRepo, нужно заполнить массив volumeMounts в разделе properties определения контейнера.

Например, следующий шаблон Resource Manager создает группу контейнеров, состоящую из одного контейнера. Контейнер клонирует два репозитория GitHub, указанных блоками тома gitRepo. Второй том включает дополнительные свойства, которые определяют каталог для клонирования и хэш коммита конкретной версии для клонирования.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "mcr.microsoft.com/azuredocs/aci-helloworld"
  },
  "resources": [
    {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2021-03-01",
      "name": "volume-demo-gitrepo",
      "location": "[resourceGroup().location]",
      "properties": {
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                }
              ],
              "volumeMounts": [
                {
                  "name": "gitrepo1",
                  "mountPath": "/mnt/repo1"
                },
                {
                  "name": "gitrepo2",
                  "mountPath": "/mnt/repo2"
                }
              ]
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            }
          ]
        },
        "volumes": [
          {
            "name": "gitrepo1",
            "gitRepo": {
              "repository": "https://github.com/Azure-Samples/aci-helloworld"
            }
          },
          {
            "name": "gitrepo2",
            "gitRepo": {
              "directory": "my-custom-clone-directory",
              "repository": "https://github.com/Azure-Samples/aci-helloworld",
              "revision": "d5ccfcedc0d81f7ca5e3dbe6e5a7705b579101f1"
            }
          }
        ]
      }
    }
  ]
}

В результате структура каталогов двух клонированных репозиториев, определенных в предыдущем шаблоне, выглядит следующим образом.

/mnt/repo1/aci-helloworld
/mnt/repo2/my-custom-clone-directory

Чтобы увидеть пример развертывания группы нескольких контейнеров с помощью шаблона Azure Resource Manager, см. статью Развёртывание групп контейнеров в Azure Container Instances.

Проверка подлинности в частном репозитории Git

Чтобы подключить том gitRepo для частного репозитория Git, укажите учетные данные в URL-адресе репозитория. Как правило, учетные данные представлены в форме имени пользователя и персонального токена доступа (PAT), который предоставляет скопированный доступ к репозиторию.

Например, параметр Azure CLI --gitrepo-url для частного репозитория GitHub будет похож на следующий (где "gituser" — это имя пользователя GitHub, а "abcdef1234fdsa4321abcdef" — ​​это личный маркер доступа пользователя):

--gitrepo-url https://gituser:[email protected]/GitUser/some-private-repository

Для репозитория Git Azure Repos укажите любое имя пользователя (вы можете использовать "azurereposuser", как в следующем примере) в сочетании с действительным PAT.

--gitrepo-url https://azurereposuser:[email protected]/your-org/_git/some-private-repository

Дополнительные сведения о личных маркерах доступа для GitHub и Azure Repos см. в следующих рекомендациях:

GitHub: создание личных маркеров доступа для командной строки

Azure Repos: создание личных маркеров доступа для аутентификации доступа

Следующие шаги

Узнайте, как подключить другие типы томов в службе "Экземпляры контейнеров Azure".