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

Ответ 18+ 🔞

Да ты посмотри, какой у нас тут эксперт по Hарбору подъехал! Ну, то есть, я, конечно, с ним работал, чего уж там.

Это ж, блядь, Harbor — такой корпоративный, открытый реестр для всякого артефактного барахла. Если простыми словами — безопасный склад для твоих контейнерных образов, где их можно не просто свалить в кучу, а ещё и подписать, отсканировать и по полочкам разложить. В общем, для взрослых дядек в больших конторах — самое то.

Чем я с этой штукой баловался, спросишь? А вот чем, ёпта:

  • Складирование: Тупо складывал туда Docker-образы, как в чулан. Работает.
  • Безопасность, мать её: Там можно эти образы на дыры проверить — встроенные сканеры (Trivy, Clair) как хищники набрасываются. А ещё подписать можно, чтобы потом не сомневаться, что это именно твой образ, а не левая хрень.
  • Кому можно, кому нельзя: Настраивал права доступа — вот этому чуваку можно только читать, а этому — всё, включая удаление. RBAC, блядь, классика.
  • Размножение: Настраивал репликацию, чтобы образ из одного инстанса Harbor автоматом переезжал в другой. Удобно, если команды по миру раскиданы или продакшен от разработки надо отгородить.

Вот, глянь, как через их 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. Автоматизация, ёбана!
  • Настраивал уборку-могильщика — политики очистки, которые старые и никому не нужные образы сами в помойку выносят. А то раздуется этот репозиторий до овердохуища гигабайт.