diff --git a/charts/apps/charts/harbor/Chart.yaml b/charts/apps/charts/harbor/Chart.yaml new file mode 100644 index 0000000..9683fee --- /dev/null +++ b/charts/apps/charts/harbor/Chart.yaml @@ -0,0 +1,3 @@ +apiVersion: v2 +version: 1.0.0 +name: monitoring diff --git a/charts/apps/charts/harbor/templates/helm.yaml b/charts/apps/charts/harbor/templates/helm.yaml new file mode 100644 index 0000000..56d6b28 --- /dev/null +++ b/charts/apps/charts/harbor/templates/helm.yaml @@ -0,0 +1,38 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: '{{ .Release.Name }}' +spec: + interval: 1h + url: https://helm.goharbor.io + +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: '{{ .Release.Name }}' +spec: + chart: + spec: + chart: harbor + reconcileStrategy: ChartVersion + sourceRef: + apiVersion: source.toolkit.fluxcd.io/v1 + kind: HelmRepository + name: '{{ .Release.Name }}' + namespace: '{{ .Release.Namespace }}' + interval: 1h + values: + persistence: + persistentVolumeClaim: + registry: + storageClass: '{{ .Values.globals.environment }}' + jobservice: + jobLog: + storageClass: '{{ .Values.globals.environment }}' + database: + storageClass: '{{ .Values.globals.environment }}' + redis: + storageClass: '{{ .Values.globals.environment }}' + trivy: + storageClass: '{{ .Values.globals.environment }}' diff --git a/charts/apps/charts/harbor/templates/http-service.yaml b/charts/apps/charts/harbor/templates/http-service.yaml new file mode 100644 index 0000000..2233b00 --- /dev/null +++ b/charts/apps/charts/harbor/templates/http-service.yaml @@ -0,0 +1,11 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: HttpService +metadata: + name: '{{ .Release.Name }}' +spec: + environment: '{{ .Values.globals.environment }}' + subdomain: '{{ .Values.subdomain }}' + destination: + host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local' + port: + number: 80 diff --git a/charts/apps/charts/harbor/values.yaml b/charts/apps/charts/harbor/values.yaml new file mode 100644 index 0000000..38f1ce5 --- /dev/null +++ b/charts/apps/charts/harbor/values.yaml @@ -0,0 +1,3 @@ +globals: + environment: prod +subdomain: harbor \ No newline at end of file diff --git a/src/resources/core/pvc/pvc.ts b/src/resources/core/pvc/pvc.ts index 7d67349..10be5b6 100644 --- a/src/resources/core/pvc/pvc.ts +++ b/src/resources/core/pvc/pvc.ts @@ -4,6 +4,7 @@ import { StorageClass } from '../storage-class/storage-class.ts'; import { PersistentVolume } from '../pv/pv.ts'; import { Resource, ResourceService, type ResourceOptions } from '#services/resources/resources.ts'; +import { chmod, mkdir } from 'fs/promises'; const PROVISIONER = 'homelab-operator'; @@ -41,6 +42,12 @@ class PVC extends Resource { const resourceService = this.services.get(ResourceService); const pv = resourceService.get(PersistentVolume, pvName); + try { + await mkdir(target, { recursive: true }); + } catch (error) { + console.error('Error creating directory', error); + } + await pv.ensure({ metadata: { name: pvName, @@ -74,6 +81,11 @@ class PVC extends Resource { }, }, }); + try { + await chmod(target, 0o777); + } catch (error) { + console.error('Error changing directory permissions', error); + } }; }