Рекомендации по использованию реестра контейнеров Azure

Следуя этим рекомендациям, вы сможете обеспечить максимальную производительность и экономичное использование частного реестра в Azure, чтобы сохранить и развернуть образы контейнеров и другие артефакты.

Основные сведения о концепциях реестров см. в статье О реестрах, репозиториях и образах. См. также рекомендации по созданию тегов и управлению версиями для образов контейнеров, чтобы ознакомиться со стратегиями создания тегов и управления версиями образов в реестре.

Развертывание в ближайшей сети

Создайте реестр контейнеров в том же регионе Azure, в котором выполняется развертывание контейнеров. Размещение реестра в сети региона, расположенной близко к узлам контейнеров, поможет снизить как задержки, так и затраты.

Развертывание в ближайшей сети — одна из основных причин использования частного реестра контейнеров. Образы Docker обладают эффективной многоуровневой конструкцией, позволяющей выполнять добавочное развертывание. Тем не менее новым узлам требуется извлекать все уровни, необходимые для заданного образа. Эта начальная команда docker pull может быстро добавить в развертывание до нескольких гигабайтов. Размещение частного реестра близко к развертыванию сводит к минимуму задержку сети. Кроме того, исходящий сетевой трафик во всех общедоступных облаках, включая Azure, является платным. Извлечение образов из одного центра обработки данных в другой увеличивает затраты на исходящий сетевой трафик, как и задержку.

Георепликация развертываний в нескольких регионах

Используйте функцию георепликации реестра контейнеров Azure, если вы развертываете контейнеры в нескольких регионах. Будь то обслуживание глобальных клиентов из локальных центров обработки данных или совместная работа команды разработчиков, находящихся в разных расположениях, можно упростить управление реестром и свести к минимуму задержку, выполняя георепликацию реестра. Кроме того, можно настроить региональные веб-перехватчики для уведомления о событиях в конкретных репликах, например при отправке изображений.

Георепликация доступна только с реестрами уровня Премиум. Чтобы узнать, как использовать георепликацию, ознакомьтесь с руководством, состоящим из трех частей, Подготовка геореплицированного реестра контейнеров Azure.

Максимальная производительность извлечения

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

  • Размер изображения — сократите размеры изображений до минимума, удаляя ненужные слои или уменьшая их размер. Одним из способов уменьшения размера образа является использование подхода многоэтапной сборки DOCKER для включения только необходимых компонентов среды выполнения.

    Также проверьте, может ли образ содержать более легкий базовый образ ОС. Если вы используете среду развертывания, например службу "Экземпляры контейнеров Azure", которая кэширует определенные базовые образы, проверьте, можно ли переключить слой изображений для одного из кэшированных образов.

  • Количество слоев — балансировка количества используемых слоев. Если слоев слишком мало, вы не получите преимущество от повторного использования слоя и кэширования на узле. Если слоев слишком много и ваша среда развертывания тратит больше времени на извлечение и распаковку. Оптимальным является количество от 5 до 10 слоев.

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

Пространства имен репозитория

За счет использования пространств имен репозитория можно обеспечить общий доступ к отдельному реестру нескольким группам в вашей организации. Реестры могут совместно использоваться в различных развертываниях и разными командами. Реестр контейнеров Azure поддерживает вложенные пространства имен, включая изоляцию групп. Однако реестр управляет всеми репозиториями независимо друг от друга, а не в виде иерархии.

Например, рассмотрим следующие теги образа контейнера. Образы, используемые во всей в организации, например aspnetcore, помещаются в корневое пространство имен, тогда как образы контейнеров, принадлежащие группе по эксплуатации и обслуживанию (Products) и группе по маркетингу (Marketing), используют собственные пространства имен.

  • contoso.azurecr.io/aspnetcore:2.0
  • contoso.azurecr.io/products/widget/web:1
  • contoso.azurecr.io/products/bettermousetrap/refundapi:12.3
  • contoso.azurecr.io/marketing/2017-fall/concertpromotions/campaign:218.42

Выделенная группа ресурсов

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

Тем не менее вы можете поэкспериментировать с определенным типом узла, например с Экземплярами контейнеров Azure, вероятно, вы решите удалить экземпляр контейнера после завершения работы. Однако вы можете также хранить коллекцию образов, отправленных в реестр контейнеров Azure. Поместив реестр в собственную группу ресурсов, можно свести к минимуму риск случайного удаления коллекции образов из реестра при удалении группы ресурсов экземпляра контейнера.

Аутентификация и авторизация

При аутентификации с помощью реестра контейнеров Azure существуют два основных сценария: отдельная аутентификация и аутентификация службы (или "автономная"). В таблице ниже приводится краткий обзор этих сценариев и рекомендуемый метод аутентификации для каждого из них.

Тип Пример сценария Рекомендуемый метод
Отдельное удостоверение Разработчик извлекает образы на свой компьютер для разработки или отправляет образы с него. az acr login
Удостоверение службы или автономное удостоверение Конвейеры сборки и развертывания, в которых пользователь не участвует напрямую. Субъект-служба

Более подробные сведения об аутентификации с помощью Реестра контейнеров Azure см. в разделе Аутентификация с помощью реестра контейнеров Azure.

Реестр контейнеров Azure поддерживает методы обеспечения безопасности в организации для распространения обязанностей и привилегий для различных удостоверений. Используя Управление доступом на основе ролей, назначьте соответствующие разрешения различным пользователям, субъектам-службам или другим удостоверениям, которые выполняют различные операции с реестром. Например, назначьте разрешения на отправку субъект-службе, используемой в конвейере сборки, и назначьте разрешения на отправку другому удостоверению, используемому для развертывания. Создание маркеров для доступа к мелким фрагментам данных с ограничением по времени для конкретных репозиториев.

Управление размером реестра

Ограничения хранилища для каждого уровня служб реестра контейнеров предназначены для согласования с типичным сценарием: Базовый — для начала работы, Стандартный — для большинства рабочих приложений и Премиум — для гипермасштабируемой производительности и георепликации. На протяжении жизненного цикла вашего реестра вам необходимо управлять его размером, периодически удаляя неиспользуемое содержимое.

Используйте команду Azure CLI az acr show-usage, чтобы отобразить текущее потребление хранилища и других ресурсов в вашем реестре:

az acr show-usage --resource-group myResourceGroup --name myregistry --output table

Образец вывода:

NAME                        LIMIT         CURRENT VALUE    UNIT
--------------------------  ------------  ---------------  ------
Size                        536870912000  215629144        Bytes
Webhooks                    500           1                Count
Geo-replications            -1            3                Count
IPRules                     100           1                Count
VNetRules                   100           0                Count
PrivateEndpointConnections  10            0                Count

Кроме того, можно найти текущее хранилище, используемое в обзоре реестра на портале Azure:

Сведения об использовании реестра на портале Azure

Примечание

В геореплицированном реестре использование хранилища отображается для домашнего региона. Умножьте его на количество репликаций, чтобы получить значение объема использованного хранилища реестра.

Удаление данных образа

Реестр контейнеров Azure поддерживает несколько методов для удаления данных образа из реестра контейнеров. Можно удалить образы с использованием тега или манифеста хэш-кода или удалить весь репозиторий.

Дополнительные сведения об удалении данных образа из реестра, включая немаркированные (иногда называемые "висячие" или "потерянные") образы, см. здесь. Кроме того, можно задать политику хранения для манифестов без тегов.

Дальнейшие действия

Реестр контейнеров Azure доступен на нескольких уровнях (называемых номерами SKU), которые обеспечивают разные возможности. Дополнительные сведения об уровнях служб см. в статье Уровни служб реестра контейнеров Azure.

Рекомендации по улучшению безопасности реестров контейнеров см. в статье Базовые показатели безопасности Azure для Реестра контейнеров Azure.