Harbor Container Registry¶
The harbor registry is the project's primary container registry.
Why Migrate to Harbor?¶
- S3 Storage Backend - Frees up GitLab disk space (no more local storage issues)
- Cosign Integration - Image signing works seamlessly
- Automatic Cleanup - Retention policies and garbage collection configured
- Proxy Caches- Faster builds, no rate limits, offline resilience
Quick Start¶
Use ICVR Project for Your Images¶
Use the new Harbor registry instead of GitLab for container images:
CI/CD pipelines usage:
# Docker build and push
include:
- project: "ICVR/General/Templates"
file: "/docker-builds/k8s.gitlab-ci.yml"
variables:
DOCKER_PUSH_TARGETS: harbor
CI_VAULT_CLIENT: ICVR
CI_VAULT_PROJECT: Harbor
Credentials are available in the Vault service:
- DEV:
ICVR/Harbor/DEV(JWT role:icvr-harbor-dev) - STAGE:
ICVR/Harbor/STAGE(JWT role:icvr-harbor-stage) - PROD:
ICVR/Harbor/PROD(JWT role:icvr-harbor-prod)
Use Proxy Caches for Base Images¶
Update your Dockerfiles to pull from Harbor proxy caches:
Direct from registries - slow, rate limited
Update Helm charts (direct install)¶
Update kustomize + helm (our production flow):
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: keycloak
namespace: keycloak
releaseName: keycloak
# ❌ Old
# repo: oci://registry-1.docker.io/bitnamicharts
# ✅ New
repo: oci://harbor.icvr.xyz/dockerhub/bitnamicharts
version: 25.2.0
valuesFile: values.yaml
# Optional: Override Bitnami chart images to use Harbor proxy
# (uncomment if chart doesn't support custom registry)
# image:
# registry: harbor.icvr.xyz/dockerhub
# repository: bitnami/keycloak
Available Proxy Caches¶
| Service | URL |
|---|---|
| dockerhub - Docker Hub (includes Bitnami) | harbor.icvr.xyz/dockerhub/library/nginx:latest</br>harbor.icvr.xyz/dockerhub/bitnami/postgresql:15 |
| aws - AWS ECR Public | harbor.icvr.xyz/aws/eks/aws-load-balancer-controller:latest |
| gcr - Google Container Registry | harbor.icvr.xyz/gcr/google-samples/hello-app:1.0 |
| quay - Quay.io | harbor.icvr.xyz/quay/prometheus/prometheus:latest |
| mcr - Microsoft Container Registry | harbor.icvr.xyz/mcr/dotnet/runtime:8.0 |
Note
Bitnami images and Helm charts go through dockerhub cache.
Benefits¶
- Faster Builds - Images cached locally, no waiting for upstream downloads
- No Rate Limits - Avoid Docker Hub's 100 pulls/6 hours limit
- Better Storage - GitLab disk space freed up (Harbor uses S3)
- Image Signing - Cosign integration for security compliance
- Automatic Cleanup - No manual image management needed
- Offline Resilience - Builds work even if upstream registries are down