Google Artifact Registry: налаштування та керування Docker-образами

Коли CI-пайплайн падає через ліміти старого реєстру, а кластер не отримує свіжі образи, кожна година простою б'є по бізнесу. Ми налаштовуємо Google Artifact Registry та мігруємо з GCR, щоб ваші контейнери зберігалися надійно і розгорталися без збоїв. Наша команда реалізує проєкт під ключ — від аудиту та налаштування до супроводу, забезпечуючи стабільну роботу та масштабування разом із вашим зростанням.
Часті запитання

Google Artifact Registry: налаштування та керування Docker-образами

Уявіть: CI-пайплайн падає через перевищення ліміту пуллу з GCR, а в кластері Kubernetes образи не оновлюються, тому що посилання ведуть на старий реєстр. Розробники втрачають годину-дві на налагодження, а терміновий фікс іде в прод із затримкою. Google Container Registry (GCR) офіційно застарів і не рекомендований для нових проєктів. Artifact Registry — його наступник, який не тільки зберігає Docker-образи, а й підтримує Helm-чарти, npm-пакети, Maven-артефакти та Python-модулі. Перехід на новий реєстр дає гнучкий IAM, вбудоване сканування вразливостей та автоматичне очищення старих артефактів. Наші сертифіковані інженери Google Cloud з 5+ роками досвіду та 20+ виконаними проектами з міграції гарантують якісне налаштування без простоїв. Вартість міграції — від $1500, економія на зберіганні — $300-500 на місяць.

Переваги Artifact Registry перед GCR

Artifact Registry перевершує GCR за ключовими параметрами: він інтегрований з Container Analysis — вразливості перевіряються при кожному push. Cleanup-політики запобігають неконтрольованому зростанню сховища, скорочуючи витрати до 40%. Завдяки Workload Identity аутентифікація в новому реєстрі в 2 рази швидша, ніж у GCR. Єдиний реєстр для різних форматів спрощує інфраструктуру та знижує операційні витрати на 30%. Ось порівняння:

Функція GCR Artifact Registry
Формати артефактів Тільки Docker Docker, Helm, npm, Maven, Python
Сканування вразлив. Тільки через Container Analysis окремо Вбудовано, налаштовується на реєстр
Cleanup-політики Немає Так (за тегами, віком, кількістю)
IAM гранулярність На рівні проєкту На рівні репозиторію
Аутентифікація CI/CD Тільки через gcloud Workload Identity, ключі сервісних акаунтів
Інтеграція з GKE Пулл через gcr.io Пулл через Workload Identity (без gcloud)

Як налаштувати IAM для CI/CD?

Створюємо сервісний акаунт із роллю roles/artifactregistry.writer. Pull з GKE — через Workload Identity: налаштовуємо Kubernetes service account, який мапиться на Google service account з роллю roles/artifactregistry.reader. Ніколи не давайте CI-пайплайну роль roles/artifactregistry.admin — це прямий шлях до витоку секретів і видалення образів. Принцип мінімальних привілеїв — основа безпеки. В якості IaC використовуємо Terraform: модуль terraform-google-artifact-registry дозволяє декларативно описати репозиторії та політики.

Як уникнути типових помилок IAM?

Найчастіша помилка — використання roles/artifactregistry.admin для CI/CD. Ця роль дозволяє видаляти репозиторії та образи, що може призвести до катастрофи. Натомість використовуйте комбінацію writer (push) та reader (pull) через Workload Identity. Ще одна проблема — забуті untagged-образи, які засмічують сховище. Рішення — cleanup-політики, описані нижче.

Порівняння ролей IAM:

Роль Дозволи Рекомендується для
roles/artifactregistry.reader pull, list Сервіси, що читають образи
roles/artifactregistry.writer pull, push, delete versions CI/CD для деплою
roles/artifactregistry.admin повний доступ (включно з видаленням репозиторіїв) Тільки адміністратори

Крок 1: Налаштування репозиторію і доступу

Створюємо репозиторій у потрібному регіоні та налаштовуємо Docker credential helper. Обираємо europe-west1 для низької затримки:

  1. Створення репозиторію:
gcloud artifacts repositories create my-app \
    --repository-format=docker \
    --location=europe-west1 \
    --description="Production Docker images" \
    --project=my-gcp-project
  1. Налаштування docker credential helper:
gcloud auth configure-docker europe-west1-docker.pkg.dev 
  1. Push образу:
docker tag my-app:1.0.0 europe-west1-docker.pkg.dev/my-gcp-project/my-app/my-app:1.0.0
docker push europe-west1-docker.pkg.dev/my-gcp-project/my-app/my-app:1.0.0

Крок 2: Cleanup-політики — скорочення витрат на зберігання в 3 рази

Без cleanup-політик за рік накопичується до 500 ГБ сміття — особливо якщо CI генерує білди на кожен коміт. Cleanup-політики скорочують витрати на зберігання в 2-3 рази. Типовий приклад: зберігати останні 10 тегів з префіксом v і видаляти untagged-образи старші 7 днів:

{ "name": "keep-release-tags",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "tagged",
    "tagPrefixes": ["v"],
    "keepCount": 10
  }
}
gcloud artifacts repositories set-cleanup-policies my-app \ --location=europe-west1 \ --policy=cleanup-policy.json 

Без таких політик за рік можна накопичити терабайти образів. Cleanup-політики скорочують витрати на зберігання в 2-3 рази, а наше рішення дозволяє автоматизувати їх через Terraform.

Сканування вразливостей і cleanup-політики

Вмикаємо сканування вразливостей на рівні репозиторію. Це обов'язковий крок для відповідності стандартам безпеки:

gcloud artifacts repositories update my-app \ --location=europe-west1 \ --update-labels=scan=enabled 

Сканування виконується при кожному push — ви отримуєте звіт із критичністю CVE. Інтеграція з Container Analysis дозволяє налаштувати автоматичні сповіщення при виявленні вразливостей вище заданого порогу.

Що входить у роботу з налаштування? (і скільки коштує)

Ми пропонуємо повний цикл налаштування Artifact Registry:

  • Аудит поточної інфраструктури (GCR, CI/CD, Kubernetes manifests). Оцінюємо обсяг даних — середній проєкт містить 1000+ образів.
  • Проектування: вибір регіону, репозиторіїв, схеми тегування (наприклад, v1.0.0, latest, stable).
  • Реалізація: створення репозиторіїв, налаштування IAM (сервісні акаунти, Workload Identity).
  • Впровадження cleanup-політик і сканування вразливостей.
  • Міграція образів з GCR через gcrane copy — середня швидкість 2 ГБ/хв.
  • Оновлення CI-пайплайнів (GitLab CI, GitHub Actions) та Kubernetes manifests.
  • Документація та інструкції для команди.

Всі зміни фіксуються у вигляді Terraform-модуля або Ansible-ролі для відтворюваності. Наприклад, модуль terraform-google-artifact-registry розгортає репозиторій з IAM та cleanup-політиками однією командою.

Строки та вартість

Налаштування репозиторію з IAM, credential helper та cleanup-політиками — 4–8 годин (від $500). Якщо потрібна міграція з GCR та оновлення всіх посилань — 1–2 дні (від $1500). Вартість розраховується індивідуально після аудиту інфраструктури, але середня економія на зберіганні після міграції становить 35% ($300-500 на місяць для типових проєктів). Наші інженери мають сертифікацію Google Cloud та досвід міграції 20+ проєктів. Наша компанія працює з GCP понад 5 років і реалізувала 20+ успішних міграцій. Інвестиції в налаштування окупаються за 2-3 місяці за рахунок зниження витрат на зберігання та прискорення пайплайнів. Замовте аудит інфраструктури GCP — ми оцінимо поточну конфігурацію та запропонуємо план міграції. Отримайте консультацію сертифікованого інженера Google Cloud.

Docker registry — концепція, що лежить в основі Artifact Registry.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1140