Ответ
Да, у меня есть опыт работы с Harbor.
Harbor — это enterprise-grade open-source реестр артефактов, который хранит, подписывает и сканирует контент. Он особенно полезен в корпоративной среде для управления образами контейнеров и другими артефактами в безопасном и централизованном месте.
Ключевые возможности, с которыми я работал:
- Хранение образов: Docker и OCI-совместимых образов.
- Безопасность: Сканирование образов на уязвимости с помощью интегрированных сканеров (Trivy, Clair) и подпись образов для обеспечения доверия (Notary, Cosign).
- Управление доступом: Настройка детальных прав доступа на основе ролей (RBAC) для пользователей и групп.
- Репликация: Настройка репликации образов между разными инстансами Harbor, например, для геораспределенных команд или для разделения сред (dev/prod).
Пример взаимодействия через API на Go:
import "github.com/goharbor/go-client/pkg/sdk/v2.0/client"
import "github.com/goharbor/go-client/pkg/sdk/v2.0/client/project"
// Пример получения списка проектов
func listProjects(host, user, pass string) {
cfg := &client.Config{
Host: host,
Username: user,
Password: pass,
}
c := client.New(cfg, nil)
params := &project.ListProjectsParams{}
projects, err := c.Project.ListProjects(params, nil)
if err != nil {
log.Fatal(err)
}
for _, p := range projects.Payload {
fmt.Println(p.Name)
}
}
В своей практике я:
- Настраивал аутентификацию через LDAP и OIDC для интеграции с корпоративными системами.
- Автоматизировал CI/CD пайплайны (в Jenkins/GitLab CI) для сборки, тестирования, сканирования и публикации образов в Harbor.
- Настраивал политики очистки (garbage collection) для старых и неиспользуемых образов.