Commit graph

5 commits

Author SHA1 Message Date
CTO Agent
56e598f66c fix(harbor): set updateStrategy=Recreate for RWO PVC rollouts
Harbor's jobservice and registry Deployments have RWO PVCs (Hetzner
Cloud Volumes). The default RollingUpdate strategy deadlocks: the new
pod cannot attach the volume while the old pod still holds it on a
different node. This has left the harbor Argo CD Application in a
Degraded state since 2026-08-07.

The goharbor chart exposes a top-level updateStrategy specifically for
this case ("Set it as Recreate when RWM for volumes isn't supported").

Refs DEV-458.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 15:51:06 +00:00
CTO Agent
2eaf4db8c4 Fix Harbor ArgoCD degraded status by ignoring unsealed secret
Add argocd.argoproj.io/compare-options: IgnoreExtraneous annotation to
harbor-secrets sealed secret template to prevent ArgoCD from seeing the
unsealed secret (created by sealed-secrets controller) as extraneous.

This is the same fix applied in DEV-377 for Directus and previously in
DEV-289, DEV-290 for other services.

Resolves: DEV-378

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-25 15:05:37 +00:00
CTO Agent
c6b14ff0bc Fix Harbor PostgreSQL data directory permissions
Add securityContext configuration to the database StatefulSet to ensure
PostgreSQL can access its data directory with correct permissions.

The issue was that the PVC mount permissions did not match PostgreSQL's
requirements (u=rwx/0700 or u=rwx,g=rx/0750). This fix sets:
- runAsUser: 999 (postgres user)
- fsGroup: 999 (postgres group)
- fsGroupChangePolicy: OnRootMismatch (only change ownership when needed)

This resolves the crash loop where harbor-database-0 failed with:
'data directory has invalid permissions'

Fixes: DEV-364

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-25 08:46:33 +00:00
CTO Agent
60dc1ac0a0 Refactor Harbor deployment to follow project structure pattern
Move Helm chart configuration from inline values in app-harbor.yaml to
separate files in apps/harbor/ subdirectory, following the same pattern
as forgejo and other apps.

Changes:
- Create apps/harbor/Chart.yaml defining dependency on Harbor Helm chart
- Create apps/harbor/values.yaml with all Helm values configuration
- Update app-harbor.yaml to use git path source instead of direct Helm chart
- Add apps/harbor/README.md documenting OIDC setup procedure

OIDC authentication must be configured via Harbor UI after deployment,
as the Helm chart does not support OIDC configuration at deployment time.
The README provides step-by-step instructions for Pocket ID integration.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-18 14:02:31 +00:00
CTO Agent
daa8112e27 Add Harbor container registry deployment
- Created Argo CD Application for Harbor (app-harbor.yaml)
- Configured Harbor Helm chart with:
  - Ingress at harbor.basicstack.de with TLS via cert-manager
  - PVCs using hcloud-volumes-encrypted storage class
  - OIDC authentication via Pocket ID
  - Resource limits for all components
- Created sealed secret with Harbor admin password, database password, and OIDC client secret
- Configured DNS A record for harbor.basicstack.de -> 178.105.17.239
- Created Pocket ID OIDC client for Harbor with callback URL

Harbor will be available at https://harbor.basicstack.de after Argo CD sync.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-18 13:36:03 +00:00