Harbor – как создать собственный реестр контейнеров

По мере нарастания использования платформ контейнеризации многие команды начинают задумываться о необходимости собственного реестра контейнеров как альтернативы Docker Hub, и одним из решений в таком случае может стать Harbor – cloud-native проект для хранения и распространения образов контейнеров. Harbor можно использовать, например, для настройки оповещений в Telegram, в качестве части CI/CD-цикла и совместно с Helm, менеджером пакетов для Kubernetes.

В этой статье расскажем, как установить Harbor и выполнить первичную настройку.

Системные требования

Для установки Harbor потребуется сервер с установленными docker, docker-compose и openssl. В данном случае хорошо подойдет готовое решение Docker на VPS – в нем данное ПО предустановлено. Также для получения бесплатного сертификата потребуется доменное имя, в его А-записи должен быть указан IP-адрес сервера. Если вы хотите использовать объектное хранилище для хранения образов, его также потребуется создать в разделе “Облако”.

Минимальные требования для установки:

  • CPU: 2 ядра
  • RAM: 2 ГБ
  • Дисковое пространство: 30 ГБ

Рекомендуемая конфигурация согласно документации:

  • CPU: 4 ядра
  • RAM: 8 ГБ
  • Дисковое пространство: 160 ГБ

Также необходимо убедиться, что на сервере открыты порты 80, 443, 4443.

Как установить Harbor с хранением образов в объектном хранилище

Для установки этого реестра контейнеров Docker подключитесь к серверу по ssh, после чего создайте директорию под проект и перейдите в нее следующими командами:

mkdir /opt/harbor
cd /opt/harbor

Загрузите архив с установщиком нужной версии, например:

wget https://github.com/goharbor/harbor/releases/download/v2.14.1/harbor-offline-installer-v2.14.1.tgz

После чего распакуйте архив:

tar xf harbor-offline-installer-v2.14.1.tgz .

Получение SSL-сертификата

Для получения бесплатного сертификата SSL можно использовать Certbot. Для этого установите Certbot:

apt update
apt install certbot

Затем выпустите сертификат для доменного имени командой:

certbot certonly --standalone -d <доменное_имя>

Например, для betutorial.ru команда будет выглядеть следующим образом:

certbot certonly --standalone -d betutorial.ru

Завершение установки

Создайте копию файла harbor.yml.tmpl:

cp harbor.yml.tmpl harbor.yml

Откройте файл удобным вам текстовым редактором и измените:

  1. hostname – укажите домен, используемый для реестра контейнеров, или IP-адрес сервера.
  2. password в разделе database – здесь укажите пароль для базы данных Harbor.
  3. В разделе https измените значение certificate на /etc/letsencrypt/live/your-domain.com/fullchain.pem, а private_key – на /etc/letsencrypt/live/your-domain.com/privkey.pem, где your-domain.com – доменное имя, указывающее на сервер.
  4. При необходимости раскомментируйте строки.
# internal_tls:
#   # set enabled to true means internal tls is enabled
#   enabled: true

Данная настройка включит работу по HTTPS между компонентами Harbor.

  1. Если вы хотите использовать объектное хранилище для файлов Harbor, добавьте блок следующего вида:
storage_service:
  s3:
    accesskey: <access key бакета>
    secretkey: <secret key бакета>
    region: ru1
    regionendpoint: https://s3.ru1.storage.beget.cloud
    bucket: <имя бакета>

Access key, secret key и имя бакета вы можете найти в его карточке в панели управления:

Access key, secret key

Сохраните изменения в файле, после чего запустите установку командой:

./install.sh

В случае успешной установки контейнеры будут запущены:

[+] up 10/10
 ✔ Network harbor_harbor       Created                                                                                                                                                     0.0s
 ✔ Container harbor-log        Created                                                                                                                                                     0.1s
 ✔ Container harbor-portal     Created                                                                                                                                                     0.1s
 ✔ Container redis             Created                                                                                                                                                     0.1s
 ✔ Container registry          Created                                                                                                                                                     0.1s
 ✔ Container registryctl       Created                                                                                                                                                     0.1s
 ✔ Container harbor-db         Created                                                                                                                                                     0.1s
 ✔ Container harbor-core       Created                                                                                                                                                     0.0s
 ✔ Container harbor-jobservice Created                                                                                                                                                     0.0s
 ✔ Container nginx             Created                                                                                                                                                     0.1s
✔ ----Harbor has been installed and started successfully.----

Первичная настройка

По завершении установки перейдите по адресу, указанному в конфигурации Harbor. Откроется страница авторизации:

harbor

Введите логин admin и первичный пароль – если вы его не изменяли в конфигурационном файле, это Harbor12345. После чего измените пароль администратора, нажав на имя пользователя в правом верхнем углу, и выберите "Change password":

harbor admin

В появившемся окне введите старый и новый пароли с подтверждением:

harbor password

И нажмите “OK” для подтверждения.

Загрузка образа в Harbor

Для загрузки образа контейнера в реестр потребуется сначала авторизоваться:

docker login <адрес harbor>

Например, для Harbor, развернутого на домене harbor.betutorial.ru, команда будет выглядеть так:

docker login harbor.betutorial.ru

Введите имя пользователя и пароль, в случае успешной авторизации будет показано соответствующее сообщение:

Username: admin
Password:
Login Succeeded!

Чтобы загрузить образ в Harbor с помощью docker-cli, потребуется сначала создать соответствующий тег:

docker tag SOURCE_IMAGE[:TAG] адрес_harbor/library/REPOSITORY[:TAG]

После чего загрузить образ в реестр:

docker push адрес_harbor/library/REPOSITORY[:TAG]

Загруженный образ отобразится в проекте, в который загружался образ, проект по умолчанию – library:

harbor образ

Заключение

В данной статье мы кратко рассказали о Harbor – что это за решение, как выполнить его установку и первичную настройку. Подробнее о работе и управлении приложением вы можете прочитать в официальной документации.

Сегодня реестр для хранения Docker-образов Harbor популярен благодаря безопасности (RBAC, сканирование уязвимостей, подпись образов), удобной интеграции с Kubernetes и CI/CD.

Изначально разработанный vmware, сейчас этот репозиторий образов разрабатывается сообществом. Более того, он принят в фонд CNCF и уже достиг уровня зрелости Graduated. Это означает, что это достаточно стабильное и популярное решение, которое будет и в дальнейшем развиваться и на него можно положиться.
Георг Гаал, CTO в AEnix

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить Harbor, Docker или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.

0
58