Skip to content
60 changes: 60 additions & 0 deletions harbor/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Harbor GitOps Catalog Application

## Overview

This Harbor deployment is configured for the Kubefirst GitOps catalog with:

- HTTPS ingress at `harbor.<DOMAIN_NAME>`
- External secrets integration with Vault
- Persistent storage for all components
- Trivy vulnerability scanning enabled

## Required Vault Configuration

Before deploying Harbor, configure the following secrets need to be in Vault:

```bash
vault kv put secret/harbor \
HARBOR_ADMIN_PASSWORD="your-secure-admin-password" \
POSTGRES_PASSWORD="your-secure-db-password" \
REDIS_PASSWORD="your-secure-redis-password"
```

These are configured as secret inputs and will be added to vault automatically, and pulled into your Harbor instand correctly.

## Token Service Private Key

Harbor automatically generates the required private key for its token service during deployment. This ensures Docker authentication works properly without storing any sensitive keys in Git.

## Components

- **Core**: Harbor's main API server
- **Portal**: Web UI
- **Registry**: Docker registry
- **Database**: PostgreSQL (internal)
- **Redis**: Cache and session storage (internal)
- **Trivy**: Vulnerability scanner
- **Jobservice**: Background job processing

## Troubleshooting

Check component logs:

```bash
kubectl logs -n harbor -l component=core
kubectl logs -n harbor -l component=registry
kubectl logs -n harbor -l component=jobservice
```

Verify all secrets are created:

```bash
kubectl get secrets -n harbor
```

The deployment should create:

- `harbor-admin-secret` - Admin credentials (from Vault)
- `harbor-database-secret` - PostgreSQL password (from Vault)
- `harbor-redis-secret` - Redis password (from Vault)
- `harbor-core` - Core component secrets including token signing keys (auto-generated by Harbor)
10 changes: 3 additions & 7 deletions harbor/components/harbor/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,9 @@ spec:
enabled: false
# Core secret for internal components
core:
secret: "" # Let Harbor generate this
secretName: harbor-core
password: "" # Will be auto-generated
redis:
type: internal
internal:
password: "" # Will be auto-generated
secret: ""
# Don't set secretName - let Harbor generate it
# secretName: ""
metrics:
enabled: true
serviceMonitor:
Expand Down