Перейти до вмісту

Модуль 3.6: Azure Container Registry (ACR)

Складність: [MEDIUM] | Час на виконання: 1 год | Передумови: Модуль 3.1 (Entra ID та RBAC), Основи Docker

Чому цей модуль важливий

Розділ «Чому цей модуль важливий»

У вересні 2022 року DevOps-команда фінтех-компанії завантажила новий образ контейнера на свій спільний акаунт Docker Hub. Образ містив критичне виправлення багу обробки платежів. Через двадцять хвилин весь їхній конвеєр CI/CD зупинився. Docker Hub обмежив кількість завантажень (rate limit): безкоштовний рівень дозволяє лише 100 завантажень за 6 годин. З 40 мікросервісами та частими деплоями вони перевищували цей ліміт щодня. Розробники годинами чекали скидання лімітів. Кожен такий випадок коштував компанії близько $8 000 через простій.

Образи контейнерів — це “атоми” сучасного розгортання додатків. Кожен контейнер, який ви запускаєте на AKS, Container Apps або ACI, починається з отримання образу з реєстру. Якщо ваш реєстр повільний або ненадійний — страждає весь процес доставки. Azure Container Registry (ACR) — це ваш приватний керований реєстр, який інтегрований з ідентифікацією Azure. Він прибирає ліміти Docker Hub, тримає образи поруч із серверами (в тому ж регіоні) і дозволяє автоматично збирати образи прямо в хмарі.

У цьому модулі ви навчитеся створювати ACR, розберетеся з методами автентифікації, навчитеся збирати образи без локального Docker за допомогою ACR Tasks та налаштуєте очищення старих образів для економії місця.


Вибір тарифного плану (SKU)

Розділ «Вибір тарифного плану (SKU)»
ФункціяBasicStandardPremium
Сховище10 ГБ100 ГБ500 ГБ
Гео-реплікаціяНіНіТак
Private LinkНіНіТак
Ціна/міс~$5~$20~$50

Для більшості команд Standard — найкращий початок. Premium потрібен тільки якщо ви хочете дзеркалювати образи між регіонами (напр. США та Європа) для пришвидшення деплою.


Автентифікація: Як зайти в реєстр

Розділ «Автентифікація: Як зайти в реєстр»

Є три способи, але для продакшну важливий тільки один:

  1. Admin Account: Логін/пароль. Зручно для тестів, заборонено для продакшну (небезпечно).
  2. Service Principal: Спеціальний акаунт для CI/CD.
  3. Managed Identity (Рекомендовано): Ваші сервери або кластери AKS отримують доступ автоматично через свою ідентичність. Жодних паролів зберігати не треба.

ACR Tasks: Збірка в хмарі

Розділ «ACR Tasks: Збірка в хмарі»

Вам не обов’язково мати Docker на своєму ноутбуці або білд-сервері. Ви можете відправити код в Azure, і він сам збере образ.

Terminal window
# Збірка образу прямо в Azure
az acr build --registry myregistry --image myapp:v1.0.0 .

Base Image Triggers: ACR може сам перезібрати ваш додаток, якщо в базовому образі (напр. node:alpine) знайшли вразливість і випустили оновлення.


Стратегія тегування

Розділ «Стратегія тегування»
  • Git SHA: Тегуйте образи хешем коміту з Git. Це дозволяє точно знати, який код зараз у контейнері.
  • Semantic Versioning: Використовуйте версії на кшталт v1.2.3 для релізів.
  • latest: Уникайте використання latest у продакшн-деплоях Kubernetes. Це “плаваючий” тег, який сьогодні вказує на одне, а завтра на інше, що робить відкат (rollback) неможливим.

ПомилкаЧому це стаєтьсяЯк виправити
Використання Admin акаунта всюдиНайшвидший спосіб підключитисяВимкніть Admin User і використовуйте RBAC / Managed Identity
Немає очищення старих образівРахунок за сховище росте щомісяцяНалаштуйте Retention Policy або ACR Task для видалення старих тегів
Тег latest у продакшніЗдається, що це “найновіше”Завжди використовуйте версії. latest не гарантує, що при перезапуску K8s підтягне той самий код
Пуш образів через океанРеєстр у США, а сервер в ЄвропіВикористовуйте гео-реплікацію (Premium) або тримайте реєстр у тому ж регіоні, що й сервери

1. Чому Managed Identity краща за пароль адміністратора для доступу до ACR?

Тому що з Managed Identity вам не потрібно зберігати, передавати або ротувати паролі. Доступ надається самому ресурсу (напр. віртуалці), і якщо її зламають, зловмисник не отримає пароль, який дає доступ до всього реєстру.

2. Чи можна використовувати ACR для зберігання Helm-чартів?

Так. Сучасні версії ACR підтримують стандарт OCI, що дозволяє зберігати не тільки образи контейнерів, а й Helm-чарти, WASM-модулі та інші артефакти.


Практична вправа: Пуш першого образу

Розділ «Практична вправа: Пуш першого образу»
  1. Створіть реєстр myacrLAB.
  2. Авторизуйтеся через CLI: az acr login --name myacrLAB.
  3. Зберіть образ локально: docker build -t myacrLAB.azurecr.io/hello-world:v1 ..
  4. Завантажте його: docker push myacrLAB.azurecr.io/hello-world:v1.
  5. Перевірте список образів у консолі Azure.

Переходьте до Модуля 3.7: ACI та Container Apps — ви навчитеся запускати ваші контейнери без управління серверами, використовуючи прості Azure Container Instances або потужну платформу Container Apps.