Есть ли способ предотвратить перезапись существующих тегов / изображений в реестре контейнеров Azure?

У меня есть конвейер в Azure Devops, в котором есть задача, которая отправляет образ Docker в реестр контейнеров Azure. Я хочу знать, есть ли способ предотвратить эту задачу, чтобы перезаписать любые существующие теги / изображения Docker.


person Raffy    schedule 23.06.2020    source источник
comment
Можете ли вы привести пример сценария проблемы? На высоком уровне задача Push Image просто вызывает docker push docs.docker.com / engine / reference / commandline / push, поэтому типичным шаблоном является добавление к изображениям тегов с определенными версиями (числа, альфа / бета и т. д.)   -  person Kyle Hale    schedule 23.06.2020
comment
Пример @KyleHale У меня уже есть тег с именем 1.0.0 в моем ACR. Если я запускаю конвейер из Azure Devops, и он пытается отправить изображение с тегом 1.0.0 в мой ACR, выполнение конвейера должно завершиться ошибкой.   -  person Raffy    schedule 23.06.2020
comment
Согласен с Кайлом Хейлом. Лучше всего заблокировать любой развернутый тег изображения, установив для его атрибута write-enabled значение false. И вы можете добавить Azure CLI задачу для запуска шага блокировки в вашем конвейере. Если ответ поможет решить вашу проблему, вы можете принять его в качестве ответа.   -  person Kevin Lu-MSFT    schedule 24.06.2020


Ответы (1)


Согласно документации

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

Однако при развертывании образа контейнера в производственной среде может потребоваться неизменяемый образ контейнера. Неизменяемое изображение - это изображение, которое нельзя случайно удалить или перезаписать.

Используя Azure CLI, чтобы заблокировать отдельное изображение по тегу:

az acr repository update \
--name myregistry --image myrepo/myimage:tag \
--write-enabled false

Вы также можете заблокировать весь репозиторий:

az acr repository update \
--name myregistry --repository myrepo/myimage \
--write-enabled false

Также есть аргумент --delete-enabled для предотвращения удаления изображений или репозиториев (хотя они все еще могут быть перезаписаны).

person Kyle Hale    schedule 23.06.2020
comment
Спасибо, именно то, что мне нужно. - person Raffy; 24.06.2020