Расскажите о вашем опыте работы с Harbor. Для каких задач вы его использовали?

Ответ

Да, у меня есть опыт работы с 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) для старых и неиспользуемых образов.