Установка и настройка Harbor на Linux Ubuntu Время чтения: 2 мин. 216 просмотров Harbor — это современное облачное решение для безопасного хранения, управления и распространения контейнерных образов. Разработанный как расширяемый реестр образов с поддержкой Docker и Helm Chart, Harbor предлагает расширенные возможности контроля доступа, интеграцию с LDAP и Active Directory, сканирование образов на уязвимости, а также репликацию между реестрами. Благодаря своей открытой архитектуре и широким функциям безопасности, Harbor стал популярным выбором для корпоративных DevOps-команд, стремящихся централизовать управление контейнерами в своих инфраструктурах. Установка хранилища репозиториев Harbor Перед установкой должен быть установлен Docker и Docker-compose, также понадобится SSL сертификат, можно использовать самоподписанные или Let’s Encrypt. Harbor устанавливает при помощи онлайн или оффлайн установщик, при использовании оффлайн установщика не требуется подключение к интернету, но занимает больше места.Скачать последнюю версию можно с Github репозитория по ссылке. Переходим в каталог, в который будем устанавливать Harbor: cd /opt Скачиваем и распаковываем онлайн-установщик: wget https://github.com/goharbor/harbor/releases/download/v2.13.0/harbor-online-installer-v2.13.0.tgz tar -zxvf harbor-online-installer-*.tgz Переходим в распакованный каталог: cd harbor Копируем конфигурационный файл harbor.yml.tmpl с новым именем: cp harbor.yml.tmpl harbor.yml Открываем файл harbor.yml и редактируем следующие параметры: hostname – указываем DNS-имя или IP-адрес сервера по которому будет доступна панель веб-управления; http: port – http порт по которому будет доступна панель веб-управления. https: port – https порт по которому будет доступна панель веб-управления; certificate – указываем полный путь до файла с публичной частью ключа .crt; private_key – указываем полный путь до файла с закрытой частью ключа .key. harbor_admin_password – указываем пароль пользователя для доступа к панели веб-управления; database: password – генерируем сложный пароль для базы данных. data_volume – указываем полный путь до места хранения данных. При использовании самоподписного сертификата его необходимо установить на каждую машину, с которой планируется авторизация в Harbor для скачивания образов. В противном случае возникнет ошибка: x509: certificate signed by unknown authority. В состав Harbor входит встроенный сканер безопасности Trivy, реализованный в виде отдельного контейнерного образа. Для его подключения необходимо при установке указать параметр --with-trivy. Устанавливаем Harbor: sudo ./install.sh --with-trivy Установка занимает несколько минут и по окончанию выведет: Harbor has been installed and started successfully Вывести список запущенных контейнеров: docker ps После этого можно перейти в веб-интерфейс Harbor, используя адрес из параметра hostname конфигурационного файла или IP-адрес сервера. * где, Username – admin, Password – параметр harbor_admin_password указанный в конфигурационном файле ранее. Настройка хранилища репозиториев Harbor Перед настройкой авторизуемся в панели веб-управления. Создание пользователя Переходим в раздел Administration -> Users и нажимаем NEW USER. Заполните форму создания пользователя:Username — указываем уникальное имя пользователя;Email — указываем рабочий email пользователя;Full Name — указываем полное имя;Password – указываем пароль пользователя; Confirm Password — подтверждение пароля. Создание робота Робот-аккаунты нужны для автоматизации операций с репозиториями без использования обычных пользовательских учётных записей. Переходим в раздел Administration -> Robot Accountsи нажимаем NEW ROBOT ACCOUNT. Заполняем форму создания робота:Name – указываем имя робота;Description – описание робота;Expiration time – задаём срок действия робота, never – означает бессрочно. В следующей форме выбираем права доступа для робота. Колонки действий:Create – cоздать ресурс;Delete – удалить ресурс;List – получить список ресурсов;Read – просмотреть конкретный ресурс;Stop – останавливать активный процесс или задачу;Update – изменить параметр ресурса. Права доступа:Audit Log – доступ к логам системы;Catalog – управление каталогами образов;Garbage Collection – управление сборкой мусора (удаление неиспользуемых слоёв образов);Job Service Monitor – мониторинг сервисных задач Harbor;Label – управление системными лейблами;LDAP User – управление пользователями из LDAP;Preheat Instance – управление preheat-инстансами (подогрев кэша образов на edge-нодах);Project – управление проектами (создание, удаление и пр.);Purge Audit – очистка логов аудита;Quota – управление квотами проектов;Registry – управление самим реестром образов (чтение/запись списка репозиториев и их содержимого);Replication – управление заданиями репликации между Harbor и другими реестрами;Replication Adapter – управление адаптерами для репликации;Replication Policy – управление политиками репликации;Robot Account – управление другими робот-аккаунтами;Scan All – запуск массового сканирования образов;Scanner – управление сканерами уязвимостей;User – управление пользователями (локальными);System Configuration – управление системными настройками Harbor. Если нужно только скачивать образы, то права доступа выбирать не обязательно. Далее выбираем проект доступ к образам которого нужно получить. Чтобы разрешить скачивание образов из проекта, отмечаем нужный проект, переходим во вкладку PERMISSIONS, ресурс Repository и выбираем действие Pull. После создания будет отображен токен робота, запишите его. Теперь с помощь робота можем авторизоваться: docker login harbor.example.com -u robot$robot -p И скачать образ: docker pull harbor.example.com/my-project/my-image:tag Создание проекта Проект — это логическая группа репозиториев образов, на проект назначаются права доступа, квоты, репликация и сканирование. Переходим в раздел Projectsи нажимаем NEW PROJECT. Заполняем форму создания проекта: Project Name – указываем название проекта; Access Level – отмечаем, если хотим чтобы образы были доступны без авторизации; Project quota limits – указываем квоту на проект; Proxy Cache – отмечаем если требуется прокси репозиторий, то есть если образ не найден локально, он будет скачан из интернета. Далее переходим в созданный проект, выбираем вкладку Members, вводим имя ранее созданного пользователя и указываем права доступа. Права доступа Project Admin Maintainer Developer Guest Limited Guest Управление настройками проекта Да Нет Нет Нет Нет Добавление удаление участников Да Нет Нет Нет Нет Репликация Да Да Нет Нет Нет Сканирование Да Да Да Нет Нет Скачивание образов Да Да Да Да Нет Загрузка образов Да Да Да Нет Нет Удаление образов Да Да Нет Нет Нет Просмотр метаданных Да Да Да Да Да Для автоматической выдачи прав доступа на проект, рекомендуется настроить LDAP авторизацию и маппинг групп. Создание сервиса Рекомендуется создать сервис для удобного управления контейнерами Harbor, что обеспечит централизованный контроль и упрощённую эксплуатацию. Создаем файл сервиса: nano /etc/systemd/system/harbor.service И вставляем следующее: [Unit] Description=Harbor After=docker.service systemd-networkd.service systemd-resolved.service Requires=docker.service Documentation=https://goharbor.io/docs/ [Service] Type=simple Restart=on-failure RestartSec=5 ExecStart=/usr/libexec/docker/cli-plugins/docker-compose -f /opt/harbor/docker-compose.yml up ExecStop=/usr/libexec/docker/cli-plugins/docker-compose -f /opt/harbor/docker-compose.yml down [Install] WantedBy=multi-user.target * где, /usr/libexec/docker/cli-plugins/docker-compose – путь до бинарного файла docker-compose в системе, найти можно с помощь команды find / -name "docker-compose" 2>/dev/null; /opt/harbor/docker-compose.yml – путь до docker-compose.yml Harbor, обычно в каталоге установки Harbor. Чтобы systemd увидел изменения перезагружаем конфигурацию: systemctl daemon-reload Теперь может перезагрузить Harbor командой: systemctl restart harbor Добавляем в автозагрузку: systemctl enable harbor Дополнительно Для упрощения работы с пользователями можно интегрировать Active Directory с Harbor и добавить группу AD в проект. Вперёд – Harbor Настройка аутентификации Active Directory (AD) для Harbor