Сроки закрытия Yandex Container Registry
По объявлению Yandex Cloud (проверено 20.10.2026):
- с 13.10.2026 сервис недоступен новым пользователям;
- с 10.11.2026 реестры работают только на чтение: push не проходит, pull работает;
- 14.12.2026 сервис отключается.
Переносить образы удобнее до 10.11: пока push работает, CI можно переключать по одному проекту и сравнивать оба реестра.
Перенос образов по шагам
- Создайте реестр в h3llo.cloud. В консоли откройте Container Registry и нажмите «Создать реестр». Имя — от 3 до 30 символов: строчные латинские буквы, цифры и дефис. Объём (10, 50 или 200 ГБ) — только потолок, оплачивается занятое место. Консоль покажет полный адрес вида
cr.h3llo.cloud/<префикс>-<имя>. - Создайте логин с правом записи. Вкладка «Доступ» → «Логины для docker login и Kubernetes», право «Запись и чтение». Пароль показывается один раз. Имя логина содержит символ
$, поэтому в командах берите его в одинарные кавычки. - Получите список образов в Yandex. Нужен ID реестра (
crp…) и CLIyc:
yc container registry list
yc container image list --registry-id <registry-id>- Войдите в оба реестра. Для Yandex подойдёт IAM-токен: он действует до 12 часов, этого хватает на перенос.
# skopeo
yc iam create-token | skopeo login cr.yandex --username iam --password-stdin
skopeo login cr.h3llo.cloud --username '<логин>'
# или crane
crane auth login cr.yandex -u iam -p "$(yc iam create-token)"
crane auth login cr.h3llo.cloud -u '<логин>' -p "$CR_PASSWORD"- Скопируйте образы. Один тег, все теги репозитория или всё через crane:
# один тег, все архитектуры multi-arch образа
skopeo copy --all \
docker://cr.yandex/<registry-id>/my-app:1.0 \
docker://cr.h3llo.cloud/<префикс>-<имя>/my-app:1.0
# все теги репозитория my-app → cr.h3llo.cloud/<префикс>-<имя>/my-app
skopeo sync --all --src docker --dest docker \
cr.yandex/<registry-id>/my-app \
cr.h3llo.cloud/<префикс>-<имя>
# то же через crane
for tag in $(crane ls cr.yandex/<registry-id>/my-app); do
crane copy "cr.yandex/<registry-id>/my-app:$tag" "cr.h3llo.cloud/<префикс>-<имя>/my-app:$tag"
done- Сверьте дайджесты. Если копия точная, дайджесты совпадают:
crane digest cr.yandex/<registry-id>/my-app:1.0
crane digest cr.h3llo.cloud/<префикс>-<имя>/my-app:1.0Переключение CI на новый реестр
Заведите в CI переменные CR_USER, CR_PASSWORD (masked) и CR_ADDRESS с полным адресом реестра. Дальше меняется только адрес и способ входа.
GitLab CI
build:
image: docker:27
services: [docker:27-dind]
script:
- echo "$CR_PASSWORD" | docker login cr.h3llo.cloud -u "$CR_USER" --password-stdin
- docker build -t "$CR_ADDRESS/my-app:$CI_COMMIT_SHORT_SHA" .
- docker push "$CR_ADDRESS/my-app:$CI_COMMIT_SHORT_SHA"GitHub Actions
- uses: docker/login-action@v3
with:
registry: cr.h3llo.cloud
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PASSWORD }}
- run: |
docker build -t "${{ vars.CR_ADDRESS }}/my-app:${{ github.sha }}" .
docker push "${{ vars.CR_ADDRESS }}/my-app:${{ github.sha }}"Kubernetes: секрет для pull и новые адреса образов
В Managed Kubernetes h3llo.cloud реестр подключается из панели: «Кластеры» → «Подключить к кластеру». Платформа создаёт логин только для чтения, секрет h3-cr-<реестр> в выбранных namespace и добавляет его в imagePullSecrets сервис-аккаунтов.
В любом другом кластере, в том числе в Yandex Managed Kubernetes, секрет создаётся вручную логином «Только чтение»:
kubectl -n <namespace> create secret docker-registry h3-cr-<реестр> \
--docker-server=cr.h3llo.cloud --docker-username='<логин>' --docker-password='<пароль>'
kubectl -n <namespace> patch serviceaccount default \
-p '{"imagePullSecrets":[{"name":"h3-cr-<реестр>"}]}'Затем замените cr.yandex/<registry-id> на адрес нового реестра в манифестах, values Helm или Kustomize и выкатите изменения.
Цена Container Registry h3llo.cloud
Оплачивается фактически занятое место после дедупликации слоёв и исходящий трафик. Проверка образов на уязвимости, логины и правила очистки входят в цену. Бесплатного объёма нет.
| Позиция | Цена |
|---|---|
| Хранение образов, 1 ГБ | 4,30 ₽ / мес |
| Исходящий трафик, 1 ГБ | 0,90 ₽ / ГБ |
Подробнее о сервисе — на странице Container Registry, все цены — в тарифах.
Частые вопросы о переезде
Когда закрывается Yandex Container Registry?
По объявлению Yandex Cloud с 13.10.2026 сервис недоступен новым пользователям, с 10.11.2026 работает только на чтение, 14.12.2026 отключается. После 10.11 загружать образы в старый реестр уже нельзя, поэтому CI лучше перевести на новый реестр раньше.
Можно ли перенести образы без docker pull и docker push?
Да. skopeo и crane копируют образ из реестра в реестр напрямую, без локального Docker. Они сохраняют дайджест и все архитектуры multi-arch образа, если копировать с флагом --all (skopeo) или командой crane copy.
Сколько стоит реестр в h3llo.cloud?
Хранение — 4,30 ₽ за ГБ фактически занятого места в месяц, скачивание образов — 0,90 ₽ за ГБ. Общие слои образов оплачиваются один раз, проверка на уязвимости входит в цену.
Переносятся ли Helm-чарты?
Да, если они хранятся как OCI-артефакты. crane copy копирует их так же, как образы. В h3llo.cloud чарты публикуются командой helm push в адрес реестра.
Что делать с кластером Kubernetes в Yandex Cloud?
Кластер может скачивать образы из cr.h3llo.cloud по логину только для чтения: создайте секрет docker-registry и замените адрес образов в манифестах. Если кластер тоже переезжает, в Managed Kubernetes h3llo.cloud реестр подключается из панели.
Кто поможет с переездом?
Напишите на world@h3llo.cloud: сколько образов и реестров, какой CI и где работают кластеры. Инженер ответит и поможет с планом переноса.