Практичний посібник: ACR з managed identity, RBAC та retention policy
Огляд ACR та його переваги
Коли команда розробки запускає десятки мікросервісів в AKS, без приватного реєстру образів виникають проблеми: залежність від публічних registry, ризики витоку пропрієтарного коду, повільні pull-запити. Azure Container Registry (ACR) вирішує ці завдання. Ми налаштовуємо ACR з managed identity, автоматичним очищенням образів та geo-replication для мультирегіональних деплоїв. За 5 років ми реалізували понад 30 проектів з ACR, включаючи інтеграцію з AKS та CI/CD.
ACR виграє у Docker Hub за продуктивністю: pull-образів з AKS в середньому на 40% швидше, а з geo-replication — до 2 разів швидше для віддалених регіонів. Вартість зберігання в Standard — близько $0.04 за ГБ на місяць, в Premium — $0.10, але за рахунок geo-replication економія на трафіку може перевищувати $500 на місяць для великих проектів. За рекомендацією Microsoft (документація ACR), слід використовувати managed identity та вимикати admin account.
resource "azurerm_container_registry" "acr" {
name = "myappacr"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "Standard"
admin_enabled = false
network_rule_set {
default_action = "Allow"
}
retention_policy {
days = 30
enabled = true
}
trust_policy {
enabled = false
}
} Порівняння SKU ACR
| SKU | Сховище | Webhooks | Content Trust | Geo-replication | Private Endpoint | Ціна ($/міс) |
|---|---|---|---|---|---|---|
| Basic | 10 ГБ | Ні | Ні | Ні | Ні | ~$5 |
| Standard | 100 ГБ | Так | Так | Ні | Ні | ~$25 |
| Premium | 1 ТБ | Так | Так | Так (до 30 регіонів) | Так | ~$100 |
Налаштування безпеки та автентифікації
Відмова від admin account
Admin account створює єдину точку компрометації. Managed identity прив'язується до конкретної Azure-сутності і сертифікат ротується автоматично. RBAC дозволяє видати мінімальні права — лише AcrPull для читання образів. Ми, як сертифіковані Azure інженери, гарантуємо, що кожне налаштування виконується з мінімумом прав.
Порівняння методів автентифікації
| Метод | Безпека | Управління | Ротація ключів |
|---|---|---|---|
| Admin account | Низька | Вручну | Ні |
| Managed identity | Висока | Автоматично | Автоматична |
| Service principal | Середня | Ручне оновлення | Вручну |
Для ізоляції ACR від публічного інтернету створюють private endpoint у віртуальній мережі. Це знижує поверхню атаки і необхідно в regulated середовищах. Наш 5-річний досвід підтверджує, що private endpoint з managed identity — найбезпечніше рішення.
Автентифікація AKS через managed identity
az aks update \ --name my-aks-cluster \ --resource-group my-rg \ --attach-acr myappacr Після цього поди в AKS тягнуть образи з ACR без imagePullSecrets — kubelet використовує managed identity.
Управління життєвим циклом образів
Без retention policy реєстр зростає безмежно. Налаштовуємо автоматичне очищення через az acr task. Наприклад, видаляти untagged маніфести старші 7 днів або tagged образи (крім latest) старші 30 днів. Ми також налаштовуємо алерти по використанню сховища через Azure Monitor. Оптимальна політика — зберігати не більше 20 тегів на додаток.
az acr task create \
--registry myappacr \
--name cleanup-untagged \
--cmd "acr purge --filter 'myapp:.*' --untagged --ago 7d" \
--schedule "0 1 * * *" \
--context /dev/null Детальніше про retention policy
Retention policy в ACR дозволяє автоматично видаляти маніфести після заданої кількості днів. Вона працює на рівні реєстру, але для більш тонкого контролю використовуйте az acr task.Інтеграція з CI/CD та AKS
Покрокове налаштування ACR
- Визначте SKU та location для реєстру.
- Створіть resource group та ACR через Terraform або Azure CLI.
- Налаштуйте network rules: дозвольте доступ лише з потрібних IP або VNet.
- Увімкніть retention policy та задайте термін зберігання (30 днів).
- Вимкніть admin account (
admin_enabled = false). - Налаштуйте managed identity для AKS:
az aks update --attach-acr <acr>. - (Опціонально) Налаштуйте geo-replication.
- (Опціонально) Налаштуйте private endpoint.
Що входить в роботу та типові помилки
Аналіз поточної інфраструктури, розгортання ACR з потрібним SKU, network rules, private endpoints (якщо потрібно), налаштування RBAC (AcrPull, AcrPush, AcrDelete), інтеграція з AKS через managed identity, налаштування retention policy з автозадачею purge, інтеграція з Azure DevOps CI/CD, документація та навчання команди. Типові помилки: використання admin account, відсутність retention policy, неправильні RBAC (AcrPush замість AcrPull), відсутність network rules. Наш досвід показує, що ці помилки легко уникнути при правильному проектуванні.
Базовий ACR з retention policy — від 4 годин до 1 дня. Якщо потрібні geo-replication, private endpoints, інтеграція з AKS та CI/CD — до 2 днів. Терміни залежать від кількості інтеграцій та узгодження політик.
Зв'яжіться з нами для консультації — наші сертифіковані інженери розгорнуть ACR під ключ, інтегрують з CI/CD та AKS, навчать працювати з registry. Гарантія якості та післяпродажна підтримка. Отримайте надійне зберігання образів без головного болю.







