Модуль 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)»| Функція | Basic | Standard | Premium |
|---|---|---|---|
| Сховище | 10 ГБ | 100 ГБ | 500 ГБ |
| Гео-реплікація | Ні | Ні | Так |
| Private Link | Ні | Ні | Так |
| Ціна/міс | ~$5 | ~$20 | ~$50 |
Для більшості команд Standard — найкращий початок. Premium потрібен тільки якщо ви хочете дзеркалювати образи між регіонами (напр. США та Європа) для пришвидшення деплою.
Автентифікація: Як зайти в реєстр
Розділ «Автентифікація: Як зайти в реєстр»Є три способи, але для продакшну важливий тільки один:
- Admin Account: Логін/пароль. Зручно для тестів, заборонено для продакшну (небезпечно).
- Service Principal: Спеціальний акаунт для CI/CD.
- Managed Identity (Рекомендовано): Ваші сервери або кластери AKS отримують доступ автоматично через свою ідентичність. Жодних паролів зберігати не треба.
ACR Tasks: Збірка в хмарі
Розділ «ACR Tasks: Збірка в хмарі»Вам не обов’язково мати Docker на своєму ноутбуці або білд-сервері. Ви можете відправити код в Azure, і він сам збере образ.
# Збірка образу прямо в Azureaz 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-модулі та інші артефакти.
Практична вправа: Пуш першого образу
Розділ «Практична вправа: Пуш першого образу»- Створіть реєстр
myacrLAB. - Авторизуйтеся через CLI:
az acr login --name myacrLAB. - Зберіть образ локально:
docker build -t myacrLAB.azurecr.io/hello-world:v1 .. - Завантажте його:
docker push myacrLAB.azurecr.io/hello-world:v1. - Перевірте список образів у консолі Azure.
Наступний модуль
Розділ «Наступний модуль»Переходьте до Модуля 3.7: ACI та Container Apps — ви навчитеся запускати ваші контейнери без управління серверами, використовуючи прості Azure Container Instances або потужну платформу Container Apps.