- README.md: перепиcан как компактный обзор (98 строк) с навигацией по docs/ - docs/: 13 файлов — getting-started, architecture, configuration, addons, storage, security, cicd, observability, networking, operations, make-reference, molecule-testing, troubleshooting - addons/*/README.md: 31 новый файл — описание, параметры, примеры кода для каждого из 34 аддонов (vault и external-secrets уже существовали)
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_type |
авто | internal | external |
harbor_proxy_cache_enabled |
true |
Proxy cache для публичных registry |
Интеграция с PostgreSQL
При addon_postgresql: true Harbor автоматически использует общий 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