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


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

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

Общие сведения о концепциях реестра см. в разделе "Сведения о реестрах, репозиториях и образах". См. также рекомендации по тегированию и версионированию образов контейнеров для стратегий маркировки и версионирования изображений в вашем реестре.

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

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

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

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

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

Георепликация доступна в реестрах Premium . Чтобы узнать, как использовать георепликацию, ознакомьтесь с трехчастным руководством, Георепликация в реестре контейнеров 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 поддерживает методы обеспечения безопасности в организации для распространения обязанностей и привилегий для различных удостоверений. Используя управление доступом на основе ролей, назначьте соответствующие разрешения разным пользователям, служебным принципалам или другим удостоверениям, выполняющим различные операции с реестром. Например, назначьте разрешения на отправку субъект-службе, используемой в конвейере сборки, и назначьте разрешения на отправку другому удостоверению, используемому для развертывания. Используйте разрешения репозитория на основе Microsoft Entra для точного доступа к определенным репозиториям. В качестве альтернативы можно использовать разрешения репозитория на основе токенов для системы Entra, не относящиеся к Майкрософт.

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

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

Используйте команду 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 поддерживает несколько методов для удаления данных образа из реестра контейнеров. Можно удалить образы с использованием тега или манифеста хэш-кода или удалить весь репозиторий.

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

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

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

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