Files
homelab/cluster/platform/harbor/values.yaml
Hermes Agent service account d99ebca829 Add external-dns annotations to Harbor Ingress
DNS was pointing to Gateway (10.1.71.90) instead of NGINX Ingress (10.1.71.80)
after we removed the HTTPRoute manifests. This caused traffic to hit the
Gateway's wildcard cert and get 'no healthy upstream' errors.

Added external-dns annotations to Ingress to direct DNS to correct IP:
- external-dns.alpha.kubernetes.io/hostname: the-seas.local.mk-labs.cloud
- external-dns.alpha.kubernetes.io/target: 10.1.71.80

This will update Technitium DNS to point to NGINX Ingress Controller.
2026-06-04 23:16:06 -05:00

265 lines
5.6 KiB
YAML

# ------------------------------------------------------------------------------
# Harbor Helm Chart Values
# Service: the-seas (The Seas with Nemo & Friends)
# Architecture: Embedded PostgreSQL, embedded Redis, single instance
# ------------------------------------------------------------------------------
# External URL for Harbor - primary DNS name
externalURL: https://the-seas.local.mk-labs.cloud
# Expose Harbor via Ingress (nginx-ingress controller)
expose:
type: ingress
tls:
enabled: true
certSource: secret
secret:
secretName: harbor-tls
notarySecretName: harbor-tls
ingress:
hosts:
core: the-seas.local.mk-labs.cloud
notary: notary-the-seas.local.mk-labs.cloud
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "0"
external-dns.alpha.kubernetes.io/hostname: the-seas.local.mk-labs.cloud
external-dns.alpha.kubernetes.io/target: "10.1.71.80"
# Admin credentials from ExternalSecret
harborAdminPassword: ""
existingSecretAdminPassword: "harbor-credentials"
existingSecretAdminPasswordKey: "HARBOR_ADMIN_PASSWORD"
# Disable internal TLS (Gateway terminates TLS)
internalTLS:
enabled: false
# Embedded PostgreSQL configuration
database:
type: internal
internal:
image:
repository: docker.io/goharbor/harbor-db
tag: "v2.15.1"
# Password auto-generated by Harbor Helm chart
resources:
requests:
memory: 1Gi
cpu: 500m
limits:
memory: 2Gi
cpu: 2000m
shmSizeLimit: 512Mi
maxIdleConns: 100
maxOpenConns: 900
podAnnotations: {}
podLabels: {}
# Embedded Redis configuration
redis:
type: internal
internal:
image:
repository: docker.io/goharbor/redis-photon
tag: "v2.15.1"
# Password auto-generated by Harbor Helm chart
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 512Mi
cpu: 500m
podAnnotations: {}
podLabels: {}
# Storage configuration - use nfs-emporium StorageClass
persistence:
enabled: true
resourcePolicy: "keep"
persistentVolumeClaim:
registry:
storageClass: nfs-emporium
accessMode: ReadWriteOnce
size: 100Gi
jobservice:
jobLog:
storageClass: nfs-emporium
accessMode: ReadWriteOnce
size: 5Gi
database:
storageClass: nfs-emporium
accessMode: ReadWriteOnce
size: 10Gi
redis:
storageClass: nfs-emporium
accessMode: ReadWriteOnce
size: 5Gi
trivy:
storageClass: nfs-emporium
accessMode: ReadWriteOnce
size: 10Gi
# Image chart storage - use local filesystem (on PVC)
imageChartStorage:
disableredirect: false
type: filesystem
filesystem:
rootdirectory: /storage
# Portal (UI) configuration - single replica
portal:
image:
repository: docker.io/goharbor/harbor-portal
tag: "v2.15.1"
replicas: 1
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 512Mi
cpu: 500m
podAnnotations: {}
podLabels: {}
# Core service configuration - single replica
core:
image:
repository: docker.io/goharbor/harbor-core
tag: "v2.15.1"
replicas: 1
# Core secret auto-generated by Harbor Helm chart
resources:
requests:
memory: 512Mi
cpu: 500m
limits:
memory: 1Gi
cpu: 1000m
podAnnotations: {}
podLabels: {}
# Job service configuration - single replica
jobservice:
image:
repository: docker.io/goharbor/harbor-jobservice
tag: "v2.15.1"
replicas: 1
# Job service secret auto-generated by Harbor Helm chart
resources:
requests:
memory: 512Mi
cpu: 500m
limits:
memory: 1Gi
cpu: 1000m
podAnnotations: {}
podLabels: {}
# Registry configuration - single replica
registry:
image:
repository: docker.io/goharbor/registry-photon
tag: "v2.15.1"
replicas: 1
# Registry credentials auto-generated by Harbor Helm chart
resources:
requests:
memory: 1Gi
cpu: 500m
limits:
memory: 2Gi
cpu: 1000m
podAnnotations: {}
podLabels: {}
# Registry controller
registryctl:
image:
repository: docker.io/goharbor/harbor-registryctl
tag: "v2.15.1"
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 512Mi
cpu: 500m
# Trivy vulnerability scanner
trivy:
enabled: true
image:
repository: docker.io/goharbor/trivy-adapter-photon
tag: "v2.15.1"
resources:
requests:
memory: 512Mi
cpu: 500m
limits:
memory: 1Gi
cpu: 1000m
podAnnotations: {}
podLabels: {}
# Exporter for metrics
exporter:
image:
repository: docker.io/goharbor/harbor-exporter
tag: "v2.15.1"
replicas: 1
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 512Mi
cpu: 500m
podAnnotations: {}
podLabels: {}
# Metrics configuration
metrics:
enabled: true
core:
path: /metrics
port: 8001
registry:
path: /metrics
port: 8001
jobservice:
path: /metrics
port: 8001
exporter:
path: /metrics
port: 8001
# Cache configuration (for performance)
cache:
enabled: true
expireHours: 24
# Update strategy
updateStrategy:
type: RollingUpdate
# NGINX (proxy in front of Harbor)
nginx:
image:
repository: docker.io/goharbor/nginx-photon
tag: "v2.15.1"
replicas: 1
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 512Mi
cpu: 500m
podAnnotations: {}
podLabels: {}