Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
3.4 KiB
3.4 KiB
Harbor
Enterprise-grade container registry с поддержкой сканирования уязвимостей (Trivy), proxy cache для публичных registry (Docker Hub, GCR, Quay) и управлением доступом.
Быстрый старт
# group_vars/all/addons.yml
addon_harbor: true
harbor_ingress_host: "harbor.example.com"
harbor_ingress_tls: true
Секреты в vault.yml:
vault_harbor_admin_password: "Harbor12345"
vault_harbor_db_password: "db-password" # если addon_postgresql: true
make addon-harbor
Параметры
| Переменная | Умолч. | Описание |
|---|---|---|
harbor_ingress_host |
harbor.local |
Hostname (обязательно) |
harbor_ingress_tls |
false |
TLS через cert-manager |
harbor_registry_storage_size |
20Gi |
PVC для образов |
harbor_database_mode |
auto |
auto | internal | external_postgresql |
harbor_proxy_cache_enabled |
true |
Proxy cache для публичных registry |
Интеграция с PostgreSQL
Выбор задаётся переменной harbor_database_mode:
auto— внешняя PostgreSQL приaddon_postgresql: true, иначе встроенная PostgreSQL чарта Harbor;internal— всегда встроенная PostgreSQL;external_postgresql— всегда внешняя PostgreSQL.
Proxy Cache
Зеркалирование публичных registry. После установки включены по умолчанию:
dockerhub→ Docker Hubgcr→ Google Container Registryquay→ Quay.ioghcr→ GitHub Container Registryk8s-registry→ registry.k8s.io
Использование:
# Вместо docker.io/library/nginx:latest:
docker pull harbor.example.com/dockerhub/library/nginx:latest
# Вместо ghcr.io/owner/image:tag:
docker pull harbor.example.com/ghcr/owner/image:tag
В Kubernetes:
spec:
containers:
- image: harbor.example.com/dockerhub/library/nginx:alpine
docker login
docker login harbor.example.com
# Username: admin
# Password: ...
docker tag myapp:latest harbor.example.com/library/myapp:latest
docker push harbor.example.com/library/myapp:latest
Kubernetes ImagePullSecret
kubectl create secret docker-registry harbor-pull \
--docker-server=harbor.example.com \
--docker-username=robot\$my-project \
--docker-password="robot-token" \
-n my-namespace
spec:
imagePullSecrets:
- name: harbor-pull
containers:
- image: harbor.example.com/my-project/myapp:latest
Сканирование образов (Trivy)
В Harbor UI → Administration → Interrogation Services → Trivy — включён по умолчанию. Сканирование запускается при каждом push автоматически.
Диагностика
kubectl get pods -n harbor
kubectl logs -n harbor deployment/harbor-core -f
Официальные ресурсы
- Официальный сайт: https://goharbor.io/
- Официальная документация: https://goharbor.io/docs/
- Версии Helm chart / ПО: https://artifacthub.io/packages/helm/harbor/harbor