Что такое Harbor?

Harbor — это open source реестр контейнеров корпоративного уровня, который расширяет возможности Docker Registry дополнительными функциями безопасности, управления и соответствия требованиям. Harbor обеспечивает безопасное хранение и распространение контейнерных образов.

Основные возможности Harbor

  • Сканирование уязвимостей — автоматическое сканирование образов на уязвимости
  • Content trust — цифровые подписи образов для обеспечения целостности
  • RBAC — детальное управление доступом к проектам и ресурсам
  • Репликация — синхронизация образов между несколькими реестрами
  • Веб-интерфейс — удобное управление через браузер
  • REST API — программное управление ресурсами

Когда использовать Harbor

Harbor отлично подходит для:

  • Корпоративных сред с требованиями к безопасности
  • Управления образами в Kubernetes кластерах
  • Обеспечения соответствия compliance требованиям
  • Централизованного хранения приватных образов
  • Автоматизации процессов CI/CD с проверкой безопасности

Установка Harbor

Установка через Docker Compose:

 1# Скачивание Harbor
 2wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz
 3tar xvf harbor-offline-installer-v2.8.0.tgz
 4cd harbor
 5
 6# Копирование конфигурации
 7cp harbor.yml.tmpl harbor.yml
 8
 9# Редактирование harbor.yml
10# hostname: your-harbor-domain.com
11# https:
12#   port: 443
13#   certificate: /path/to/cert.crt
14#   private_key: /path/to/cert.key
15
16# Запуск установки
17sudo ./install.sh

Установка в Kubernetes с Helm

 1# Добавление Helm репозитория
 2helm repo add harbor https://helm.goharbor.io
 3helm repo update
 4
 5# Создание values.yaml
 6cat > values.yaml << EOF
 7expose:
 8  type: ingress
 9  ingress:
10    hosts:
11      core: harbor.example.com
12externalURL: https://harbor.example.com
13persistence:
14  enabled: true
15  persistentVolumeClaim:
16    registry:
17      size: 100Gi
18    chartmuseum:
19      size: 5Gi
20    database:
21      size: 1Gi
22    redis:
23      size: 1Gi
24EOF
25
26# Установка Harbor
27helm install harbor harbor/harbor -f values.yaml

Работа с Harbor через Docker CLI

 1# Логин в Harbor
 2docker login harbor.example.com
 3
 4# Тегирование образа
 5docker tag nginx:latest harbor.example.com/library/nginx:latest
 6
 7# Push образа
 8docker push harbor.example.com/library/nginx:latest
 9
10# Pull образа
11docker pull harbor.example.com/library/nginx:latest

Настройка сканирования уязвимостей

Harbor интегрируется с несколькими сканерами:

  • Trivy — встроенный сканер по умолчанию
  • Clair — альтернативный сканер уязвимостей
1# Включение автоматического сканирования через API
2curl -X PUT "https://harbor.example.com/api/v2.0/projects/1" \
3     -H "Authorization: Basic $(echo -n admin:password | base64)" \
4     -H "Content-Type: application/json" \
5     -d '{
6       "metadata": {
7         "auto_scan": "true"
8       }
9     }'

Интеграция с Kubernetes

Создание Secret для доступа к приватному registry:

 1# Создание docker-registry secret
 2kubectl create secret docker-registry harbor-secret \
 3  --docker-server=harbor.example.com \
 4  --docker-username=admin \
 5  --docker-password=password \
 6  --docker-email=admin@example.com
 7
 8# Использование в Pod
 9apiVersion: v1
10kind: Pod
11metadata:
12  name: my-pod
13spec:
14  containers:
15  - name: my-container
16    image: harbor.example.com/library/nginx:latest
17  imagePullSecrets:
18  - name: harbor-secret

Настройка репликации

Для настройки репликации между Harbor инстансами:

 1# Создание replication endpoint через API
 2curl -X POST "https://harbor.example.com/api/v2.0/registries" \
 3     -H "Authorization: Basic $(echo -n admin:password | base64)" \
 4     -H "Content-Type: application/json" \
 5     -d '{
 6       "name": "target-harbor",
 7       "url": "https://target-harbor.example.com",
 8       "type": "harbor",
 9       "credential": {
10         "access_key": "admin",
11         "access_secret": "password"
12       }
13     }'

Мониторинг и метрики

Harbor предоставляет метрики для Prometheus:

1# prometheus.yml
2scrape_configs:
3- job_name: 'harbor'
4  static_configs:
5  - targets: ['harbor.example.com:8080']
6  metrics_path: '/api/v2.0/metrics'
7  basic_auth:
8    username: 'admin'
9    password: 'password'

Best Practices

  • Включай автоматическое сканирование уязвимостей для всех проектов
  • Используй content trust для критически важных образов
  • Настраивай политики retention для управления дисковым пространством
  • Регулярно обновляй Harbor до последних версий
  • Мониторь использование ресурсов и производительность

FAQ

Подходит ли Harbor для продакшена?

Да, Harbor широко используется в production средах и является одним из самых популярных корпоративных Docker registry решений с поддержкой CNCF.

Какие требования к инфраструктуре?

Минимальные требования: 4 ГБ RAM, 2 CPU cores, 40 ГБ дискового пространства. Для production рекомендуется использовать внешние базы данных и хранилища.

Можно ли мигрировать с Docker Hub на Harbor?

Да, Harbor поддерживает импорт образов из других реестров через функцию репликации или можно использовать инструменты миграции.