Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9cc8b39
chore(chart-deps): update harbor to version 1.19.0
svcAPLBot May 7, 2026
a9b8792
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
05b1d16
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
db44077
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
00aa963
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
6a6fe23
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
cf1dc30
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
6d36a83
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
53f8be5
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 7, 2026
623aefb
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
93d0eb8
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
175a449
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
2569696
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
e19a04f
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
0363599
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
4637ed3
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
c863fce
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 8, 2026
72491d4
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 11, 2026
6b02c29
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 11, 2026
c33f19b
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 11, 2026
461214a
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 11, 2026
e6b1a05
Merge branch 'main' into ci-update-harbor-to-1.19.0
svcAPLBot May 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ appsInfo:
integration: App Platform uses Grafana to visualize Prometheus metrics and Loki logs. Team members are automatically given the Editor role, while admins are also given the Admin role. It is possible to make configuration changes directly in Grafana, but only to non-conflicting settings. Data sources are preconfigured and must not be edited as changes will be gone when Grafana is redeployed.
harbor:
title: Harbor
appVersion: 2.14.3
appVersion: 2.15.0
repo: https://github.com/goharbor/harbor
maintainers: Project Harbor
relatedLinks:
Expand Down
2 changes: 1 addition & 1 deletion chart/chart-index/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ dependencies:
version: 12.5.3
repository: https://dl.gitea.io/charts
- name: harbor
version: 1.18.3
version: 1.19.0
repository: https://helm.goharbor.io
- name: ingress-nginx
version: 4.14.3
Expand Down
4 changes: 2 additions & 2 deletions charts/harbor/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
apiVersion: v1
appVersion: 2.14.3
appVersion: 2.15.0
description: An open source trusted cloud native registry that stores, signs, and
scans content
home: https://goharbor.io
Expand All @@ -19,4 +19,4 @@ name: harbor
sources:
- https://github.com/goharbor/harbor
- https://github.com/goharbor/harbor-helm
version: 1.18.3
version: 1.19.0
382 changes: 23 additions & 359 deletions charts/harbor/README.md

Large diffs are not rendered by default.

31 changes: 29 additions & 2 deletions charts/harbor/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -193,14 +193,41 @@ app: "{{ template "harbor.name" . }}"
{{- end -}}
{{- end -}}

{{- define "harbor.redis.usernameForRegistry" -}}
{{- with .Values.redis }}
{{- if eq .type "internal" }}
{{- "" -}}
{{- else if .external.existingSecret }}
{{- include "harbor.redis.usernamefromsecret" $ | trim -}}
{{- else }}
{{- .external.username | default "" -}}
{{- end }}
{{- end }}
{{- end -}}

{{- define "harbor.redis.pwdfromsecret" -}}
{{- (lookup "v1" "Secret" .Release.Namespace (.Values.redis.external.existingSecret)).data.REDIS_PASSWORD | b64dec }}
{{- $existingSecret := (lookup "v1" "Secret" .Release.Namespace (.Values.redis.external.existingSecret)) -}}
{{- if and (not (empty $existingSecret)) (hasKey $existingSecret.data "REDIS_PASSWORD") -}}
{{- printf "%s" ($existingSecret.data.REDIS_PASSWORD | b64dec | trim) -}}
{{- end -}}
{{- end -}}

{{- define "harbor.redis.passwordForRegistry" -}}
{{- with .Values.redis }}
{{- if eq .type "internal" }}
{{- "" -}}
{{- else if .external.existingSecret }}
{{- include "harbor.redis.pwdfromsecret" $ -}}
{{- else }}
{{- .external.password | default "" -}}
{{- end }}
{{- end }}
{{- end -}}

{{- define "harbor.redis.cred" -}}
{{- with .Values.redis }}
{{- if (and (eq .type "external" ) (.external.existingSecret)) }}
{{- printf "%s:%s@" (include "harbor.redis.usernamefromsecret" $) (include "harbor.redis.pwdfromsecret" $) -}}
{{- printf "%s:%s@" ((include "harbor.redis.usernamefromsecret" $) | urlquery) ((include "harbor.redis.pwdfromsecret" $) | urlquery) -}}
{{- else }}
{{- ternary (printf "%s:%s@" (.external.username | urlquery) (.external.password | urlquery)) "" (and (eq .type "external" ) (not (not .external.password))) }}
{{- end }}
Expand Down
20 changes: 14 additions & 6 deletions charts/harbor/templates/core/core-dpl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,24 +72,32 @@ spec:
path: /api/v2.0/ping
scheme: {{ include "harbor.component.scheme" . | upper }}
port: {{ template "harbor.core.containerPort" . }}
failureThreshold: 360
initialDelaySeconds: {{ .Values.core.startupProbe.initialDelaySeconds }}
periodSeconds: 10
periodSeconds: {{ .Values.core.startupProbe.periodSeconds }}
timeoutSeconds: {{ .Values.core.startupProbe.timeoutSeconds }}
failureThreshold: {{ .Values.core.startupProbe.failureThreshold }}
successThreshold: {{ .Values.core.startupProbe.successThreshold }}
{{- end }}
livenessProbe:
httpGet:
path: /api/v2.0/ping
scheme: {{ include "harbor.component.scheme" . | upper }}
port: {{ template "harbor.core.containerPort" . }}
failureThreshold: 2
periodSeconds: 10
initialDelaySeconds: {{ .Values.core.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.core.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.core.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.core.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.core.livenessProbe.successThreshold }}
readinessProbe:
httpGet:
path: /api/v2.0/ping
scheme: {{ include "harbor.component.scheme" . | upper }}
port: {{ template "harbor.core.containerPort" . }}
failureThreshold: 2
periodSeconds: 10
initialDelaySeconds: {{ .Values.core.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.core.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.core.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.core.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.core.readinessProbe.successThreshold }}
envFrom:
- configMapRef:
name: "{{ template "harbor.core" . }}"
Expand Down
19 changes: 19 additions & 0 deletions charts/harbor/templates/core/core-pdb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- if and .Values.core.podDisruptionBudget.enabled (gt (int .Values.core.replicas) 1) }}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ template "harbor.core" . }}
labels:
{{ include "harbor.labels" . | indent 4 }}
spec:
{{- if .Values.core.podDisruptionBudget.minAvailable }}
minAvailable: {{ .Values.core.podDisruptionBudget.minAvailable }}
{{- end }}
{{- if .Values.core.podDisruptionBudget.maxUnavailable }}
maxUnavailable: {{ .Values.core.podDisruptionBudget.maxUnavailable }}
{{- end }}
selector:
matchLabels:
{{ include "harbor.matchLabels" . | indent 6 }}
component: core
{{- end }}
14 changes: 9 additions & 5 deletions charts/harbor/templates/database/database-ss.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,16 +78,20 @@ spec:
exec:
command:
- /docker-healthcheck.sh
initialDelaySeconds: 300
periodSeconds: 10
initialDelaySeconds: {{ .Values.database.internal.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.database.internal.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.database.internal.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.database.internal.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.database.internal.livenessProbe.successThreshold }}
readinessProbe:
exec:
command:
- /docker-healthcheck.sh
initialDelaySeconds: 1
periodSeconds: 10
initialDelaySeconds: {{ .Values.database.internal.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.database.internal.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.database.internal.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.database.internal.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.database.internal.readinessProbe.successThreshold }}
{{- if .Values.database.internal.resources }}
resources:
{{ toYaml .Values.database.internal.resources | indent 10 }}
Expand Down Expand Up @@ -139,7 +143,7 @@ spec:
{{- end }}
{{- if and .Values.persistence.enabled (not $database.existingClaim) }}
volumeClaimTemplates:
- apiVersion: v1
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: "database-data"
Expand Down
14 changes: 10 additions & 4 deletions charts/harbor/templates/exporter/exporter-dpl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,20 @@ spec:
httpGet:
path: /
port: {{ .Values.metrics.exporter.port }}
initialDelaySeconds: 300
periodSeconds: 10
initialDelaySeconds: {{ .Values.exporter.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.exporter.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.exporter.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.exporter.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.exporter.livenessProbe.successThreshold }}
readinessProbe:
httpGet:
path: /
port: {{ .Values.metrics.exporter.port }}
initialDelaySeconds: 30
periodSeconds: 10
initialDelaySeconds: {{ .Values.exporter.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.exporter.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.exporter.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.exporter.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.exporter.readinessProbe.successThreshold }}
args: ["-log-level", "{{ .Values.logLevel }}"]
envFrom:
- configMapRef:
Expand Down
19 changes: 19 additions & 0 deletions charts/harbor/templates/exporter/exporter-pdb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- if and .Values.exporter.podDisruptionBudget.enabled (gt (int .Values.exporter.replicas) 1) }}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ template "harbor.exporter" . }}
labels:
{{ include "harbor.labels" . | indent 4 }}
spec:
{{- if .Values.exporter.podDisruptionBudget.minAvailable }}
minAvailable: {{ .Values.exporter.podDisruptionBudget.minAvailable }}
{{- end }}
{{- if .Values.exporter.podDisruptionBudget.maxUnavailable }}
maxUnavailable: {{ .Values.exporter.podDisruptionBudget.maxUnavailable }}
{{- end }}
selector:
matchLabels:
{{ include "harbor.matchLabels" . | indent 6 }}
component: exporter
{{- end }}
8 changes: 7 additions & 1 deletion charts/harbor/templates/gateway-apis/route.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ metadata:
spec:
parentRefs:
{{- toYaml $route.parentRefs | nindent 2 }}
hostnames:
hostnames:
{{- toYaml $route.hosts | nindent 2 }}
rules:
- matches:
Expand All @@ -43,6 +43,9 @@ spec:
backendRefs:
- name: {{ template "harbor.core" . }}
namespace: {{ .Release.Namespace | quote }}
group: ""
kind: Service
weight: 1
port: {{ template "harbor.core.servicePort" . }}
- matches:
- path:
Expand All @@ -51,5 +54,8 @@ spec:
backendRefs:
- name: {{ template "harbor.portal" . }}
namespace: {{ .Release.Namespace | quote }}
group: ""
kind: Service
weight: 1
port: {{ template "harbor.portal.servicePort" . }}
{{- end }}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ data:
REGISTRY_URL: "{{ template "harbor.registryURL" . }}"
REGISTRY_CONTROLLER_URL: "{{ template "harbor.registryControllerURL" . }}"
REGISTRY_CREDENTIAL_USERNAME: "{{ .Values.registry.credentials.username }}"
REGISTRY_HTTP_CLIENT_TIMEOUT: "{{ .Values.jobservice.registryHttpClientTimeout }}"

JOBSERVICE_WEBHOOK_JOB_MAX_RETRY: "{{ .Values.jobservice.notification.webhook_job_max_retry }}"
JOBSERVICE_WEBHOOK_JOB_HTTP_CLIENT_TIMEOUT: "{{ .Values.jobservice.notification.webhook_job_http_client_timeout }}"
Expand Down
14 changes: 10 additions & 4 deletions charts/harbor/templates/jobservice/jobservice-dpl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,21 @@ spec:
path: /api/v1/stats
scheme: {{ include "harbor.component.scheme" . | upper }}
port: {{ template "harbor.jobservice.containerPort" . }}
initialDelaySeconds: 300
periodSeconds: 10
initialDelaySeconds: {{ .Values.jobservice.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.jobservice.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.jobservice.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.jobservice.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.jobservice.livenessProbe.successThreshold }}
readinessProbe:
httpGet:
path: /api/v1/stats
scheme: {{ include "harbor.component.scheme" . | upper }}
port: {{ template "harbor.jobservice.containerPort" . }}
initialDelaySeconds: 20
periodSeconds: 10
initialDelaySeconds: {{ .Values.jobservice.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.jobservice.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.jobservice.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.jobservice.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.jobservice.readinessProbe.successThreshold }}
{{- if .Values.jobservice.resources }}
resources:
{{ toYaml .Values.jobservice.resources | indent 10 }}
Expand Down
19 changes: 19 additions & 0 deletions charts/harbor/templates/jobservice/jobservice-pdb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- if and .Values.jobservice.podDisruptionBudget.enabled (gt (int .Values.jobservice.replicas) 1) }}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ template "harbor.jobservice" . }}
labels:
{{ include "harbor.labels" . | indent 4 }}
spec:
{{- if .Values.jobservice.podDisruptionBudget.minAvailable }}
minAvailable: {{ .Values.jobservice.podDisruptionBudget.minAvailable }}
{{- end }}
{{- if .Values.jobservice.podDisruptionBudget.maxUnavailable }}
maxUnavailable: {{ .Values.jobservice.podDisruptionBudget.maxUnavailable }}
{{- end }}
selector:
matchLabels:
{{ include "harbor.matchLabels" . | indent 6 }}
component: jobservice
{{- end }}
14 changes: 10 additions & 4 deletions charts/harbor/templates/nginx/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,21 @@ spec:
scheme: {{ .scheme }}
path: /
port: {{ .port }}
initialDelaySeconds: 300
periodSeconds: 10
initialDelaySeconds: {{ .Values.nginx.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.nginx.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.nginx.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.nginx.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.nginx.livenessProbe.successThreshold }}
readinessProbe:
httpGet:
scheme: {{ .scheme }}
path: /
port: {{ .port }}
initialDelaySeconds: 1
periodSeconds: 10
initialDelaySeconds: {{ .Values.nginx.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.nginx.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.nginx.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.nginx.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.nginx.readinessProbe.successThreshold }}
{{- if .Values.nginx.resources }}
resources:
{{ toYaml .Values.nginx.resources | indent 10 }}
Expand Down
19 changes: 19 additions & 0 deletions charts/harbor/templates/nginx/nginx-pdb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- if and .Values.nginx.podDisruptionBudget.enabled (gt (int .Values.nginx.replicas) 1) }}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ template "harbor.nginx" . }}
labels:
{{ include "harbor.labels" . | indent 4 }}
spec:
{{- if .Values.nginx.podDisruptionBudget.minAvailable }}
minAvailable: {{ .Values.nginx.podDisruptionBudget.minAvailable }}
{{- end }}
{{- if .Values.nginx.podDisruptionBudget.maxUnavailable }}
maxUnavailable: {{ .Values.nginx.podDisruptionBudget.maxUnavailable }}
{{- end }}
selector:
matchLabels:
{{ include "harbor.matchLabels" . | indent 6 }}
component: nginx
{{- end }}
2 changes: 2 additions & 0 deletions charts/harbor/templates/nginx/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ spec:
{{- else if eq .Values.expose.type "nodePort" }}
{{- $nodePort := .Values.expose.nodePort }}
name: {{ $nodePort.name }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{ include "harbor.labels" . | indent 4 }}
{{- if .Values.expose.nodePort.labels }}
Expand Down Expand Up @@ -67,6 +68,7 @@ spec:
{{- else if eq .Values.expose.type "loadBalancer" }}
{{- $loadBalancer := .Values.expose.loadBalancer }}
name: {{ $loadBalancer.name }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{ include "harbor.labels" . | indent 4 }}
{{- if .Values.expose.loadBalancer.labels }}
Expand Down
14 changes: 10 additions & 4 deletions charts/harbor/templates/portal/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,21 @@ spec:
path: /
scheme: {{ include "harbor.component.scheme" . | upper }}
port: {{ template "harbor.portal.containerPort" . }}
initialDelaySeconds: 300
periodSeconds: 10
initialDelaySeconds: {{ .Values.portal.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.portal.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.portal.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.portal.livenessProbe.failureThreshold }}
successThreshold: {{ .Values.portal.livenessProbe.successThreshold }}
readinessProbe:
httpGet:
path: /
scheme: {{ include "harbor.component.scheme" . | upper }}
port: {{ template "harbor.portal.containerPort" . }}
initialDelaySeconds: 1
periodSeconds: 10
initialDelaySeconds: {{ .Values.portal.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.portal.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.portal.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.portal.readinessProbe.failureThreshold }}
successThreshold: {{ .Values.portal.readinessProbe.successThreshold }}
ports:
- containerPort: {{ template "harbor.portal.containerPort" . }}
volumeMounts:
Expand Down
Loading
Loading