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