From ad500513437ec7688bb514ee8e9837c1a1793186 Mon Sep 17 00:00:00 2001 From: Gorden Mende Date: Tue, 16 Dec 2025 08:34:20 +0000 Subject: [PATCH] added deployment --- mail-archiver/deploy/deployment.yaml | 111 ++++++++++++++++++ mail-archiver/deploy/pv.yaml | 48 ++++++++ mail-archiver/deploy/pvc.yaml | 28 +++++ mail-archiver/deploy/secrets.yaml | 18 +++ mail-archiver/deploy/service.yaml | 17 +++ ...hive-app-claim0-persistentvolumeclaim.yaml | 12 -- ...postgres-claim0-persistentvolumeclaim.yaml | 12 -- monitoring/deploy/grafana-k8s-monitoring.yaml | 61 ++++++++++ monitoring/deploy/prometheus-argo.yaml | 14 +++ 9 files changed, 297 insertions(+), 24 deletions(-) create mode 100644 mail-archiver/deploy/deployment.yaml create mode 100644 mail-archiver/deploy/pv.yaml create mode 100644 mail-archiver/deploy/pvc.yaml create mode 100644 mail-archiver/deploy/secrets.yaml create mode 100644 mail-archiver/deploy/service.yaml delete mode 100644 mail-archiver/mailarchive-app-claim0-persistentvolumeclaim.yaml delete mode 100644 mail-archiver/postgres-claim0-persistentvolumeclaim.yaml create mode 100644 monitoring/deploy/grafana-k8s-monitoring.yaml create mode 100644 monitoring/deploy/prometheus-argo.yaml diff --git a/mail-archiver/deploy/deployment.yaml b/mail-archiver/deploy/deployment.yaml new file mode 100644 index 0000000..334fd62 --- /dev/null +++ b/mail-archiver/deploy/deployment.yaml @@ -0,0 +1,111 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.34.0 (cbf2835db) + labels: + io.kompose.service: postgres + name: postgres +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: postgres + strategy: + type: Recreate + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.34.0 (cbf2835db) + labels: + io.kompose.service: postgres + spec: + containers: + - env: + - name: POSTGRES_DB + value: MailArchiver + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: secret-ma-postgres + key: password + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: secret-ma-postgres + key: username + image: postgres:17-alpine + livenessProbe: + exec: + command: + - pg_isready -U mailuser -d MailArchiver + failureThreshold: 5 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + name: postgres + volumeMounts: + - mountPath: /var/lib/postgresql/data + name: ma-postgres-data + restartPolicy: Always + volumes: + - name: ma-postgres-data + persistentVolumeClaim: + claimName: ma-postgres-data-pvc +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.34.0 (cbf2835db) + labels: + io.kompose.service: mailarchive-app + name: mailarchive-app +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: mailarchive-app + strategy: + type: Recreate + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.34.0 (cbf2835db) + labels: + io.kompose.service: mailarchive-app + spec: + containers: + - env: + - name: Authentication__Password + valueFrom: + secretKeyRef: + name: + key: + - name: Authentication__Username + valueFrom: + secretKeyRef: + name: + key: + - name: ConnectionStrings__DefaultConnection + value: Host=postgres;Database=MailArchiver;Username=archivadm;Password=cEkYJ3DsVGWbRWpD; + - name: TimeZone__DisplayTimeZoneId + value: Europe/Berlin + image: s1t5/mailarchiver:latest + name: mailarchive-app + ports: + - containerPort: 5000 + protocol: TCP + volumeMounts: + - mountPath: /app/DataProtection-Keys + name: ma-data-protection-keys + restartPolicy: Always + volumes: + - name: ma-data-protection-keys + persistentVolumeClaim: + claimName: ma-data-protection-keys-pvc diff --git a/mail-archiver/deploy/pv.yaml b/mail-archiver/deploy/pv.yaml new file mode 100644 index 0000000..9e070ed --- /dev/null +++ b/mail-archiver/deploy/pv.yaml @@ -0,0 +1,48 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + annotations: + pv.kubernetes.io/provisioned-by: nfs.csi.k8s.io + name: ma-data-protection-keys-pv +spec: + capacity: + storage: 300Mi + accessModes: + - ReadWriteMany + persistentVolumeReclaimPolicy: Retain + storageClassName: nfs-csi + mountOptions: + - nfsvers=4.1 + csi: + driver: nfs.csi.k8s.io + # volumeHandle format: {nfs-server-address}#{sub-dir-name}#{share-name} + # make sure this value is unique for every share in the cluster + volumeHandle: nfs-server.default.svc.cluster.local/share## + volumeAttributes: + server: 192.168.0.40 + share: /volume1/kubernetes/mail-archiver/data-protection-keys +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + annotations: + pv.kubernetes.io/provisioned-by: nfs.csi.k8s.io + name: ma-postgres-data-pv +spec: + capacity: + storage: 300Gi + accessModes: + - ReadWriteMany + persistentVolumeReclaimPolicy: Retain + storageClassName: nfs-csi + mountOptions: + - nfsvers=4.1 + csi: + driver: nfs.csi.k8s.io + # volumeHandle format: {nfs-server-address}#{sub-dir-name}#{share-name} + # make sure this value is unique for every share in the cluster + volumeHandle: nfs-server.default.svc.cluster.local/share## + volumeAttributes: + server: 192.168.0.40 + share: /volume1/kubernetes/mail-archiver/postgres-data diff --git a/mail-archiver/deploy/pvc.yaml b/mail-archiver/deploy/pvc.yaml new file mode 100644 index 0000000..9954700 --- /dev/null +++ b/mail-archiver/deploy/pvc.yaml @@ -0,0 +1,28 @@ +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: ma-data-protection-keys-pvc + namespace: homeassistant +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 300Mi + volumeName: ma-data-protection-keys-pv + storageClassName: nfs-csi +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: ma-postgres-data-pvc + namespace: homeassistant +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 300Gi + volumeName: ma-postgres-data-pv + storageClassName: nfs-csi diff --git a/mail-archiver/deploy/secrets.yaml b/mail-archiver/deploy/secrets.yaml new file mode 100644 index 0000000..b2688bb --- /dev/null +++ b/mail-archiver/deploy/secrets.yaml @@ -0,0 +1,18 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: secret-ma-admin +type: kubernetes.io/basic-auth +stringData: + username: admin + password: PteF8WDum2xsKfUZ +--- +apiVersion: v1 +kind: Secret +metadata: + name: secret-ma-postgres +type: kubernetes.io/basic-auth +stringData: + username: archivadm + password: cEkYJ3DsVGWbRWpD diff --git a/mail-archiver/deploy/service.yaml b/mail-archiver/deploy/service.yaml new file mode 100644 index 0000000..6a09a43 --- /dev/null +++ b/mail-archiver/deploy/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.34.0 (cbf2835db) + labels: + io.kompose.service: mailarchive-app + name: mailarchive-app +spec: + ports: + - name: "5000" + port: 5000 + targetPort: 5000 + selector: + io.kompose.service: mailarchive-app + type: LoadBalancer diff --git a/mail-archiver/mailarchive-app-claim0-persistentvolumeclaim.yaml b/mail-archiver/mailarchive-app-claim0-persistentvolumeclaim.yaml deleted file mode 100644 index 14aea46..0000000 --- a/mail-archiver/mailarchive-app-claim0-persistentvolumeclaim.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - labels: - io.kompose.service: mailarchive-app-claim0 - name: mailarchive-app-claim0 -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 100Mi diff --git a/mail-archiver/postgres-claim0-persistentvolumeclaim.yaml b/mail-archiver/postgres-claim0-persistentvolumeclaim.yaml deleted file mode 100644 index c974039..0000000 --- a/mail-archiver/postgres-claim0-persistentvolumeclaim.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - labels: - io.kompose.service: postgres-claim0 - name: postgres-claim0 -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 100Mi diff --git a/monitoring/deploy/grafana-k8s-monitoring.yaml b/monitoring/deploy/grafana-k8s-monitoring.yaml new file mode 100644 index 0000000..bac88d5 --- /dev/null +++ b/monitoring/deploy/grafana-k8s-monitoring.yaml @@ -0,0 +1,61 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: grafana-k8s-monitoring + namespace: "{argocd-namespace}" +finalizers: + - resources-finalizer.argocd.argoproj.io +spec: +destination: + name: '' + namespace: "{namespace}" + server: 'https://kubernetes.default.svc' +source: + path: '' + repoURL: 'https://grafana.github.io/helm-charts' + targetRevision: '' + chart: k8s-monitoring + helm: + valuesObject: + cluster: + name: "{cluster-name}" + destinations: + - name: grafana-cloud-metrics + type: prometheus + host: "{prometheus-url}/api/prom/push" + auth: + type: basic + username: "{prometheus-username}" + password: "{cloud-access-token}" + - name: grafana-cloud-logs + type: loki + host: "{loki-url}" + auth: + type: basic + username: "{loki-username}" + password: "{cloud-access-token}" + + clusterMetrics: + enabled: true + kepler: + enabled: true + opencost: + enabled: true + metricsSource: grafana-cloud-metrics + opencost: + exporter: + defaultClusterId: "{cluster-name}" + prometheus: + existingSecretName: grafana-cloud-metrics-grafana-k8s-monitoring + external: + url: "{prometheus-url}/api/prom" + clusterEvents: + enabled: true + podLogs: + enabled: true + alloy-metrics: + enabled: true + alloy-singleton: + enabled: true + alloy-logs: + enabled: true diff --git a/monitoring/deploy/prometheus-argo.yaml b/monitoring/deploy/prometheus-argo.yaml new file mode 100644 index 0000000..677cdbe --- /dev/null +++ b/monitoring/deploy/prometheus-argo.yaml @@ -0,0 +1,14 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: prometheus + namespace: argocd +spec: + project: default + source: + repoURL: https://prometheus-community.github.io/helm-charts + targetRevision: 27.50.0 + chart: kube-prometheus-stack +destination: + server: https://kubernetes.default.svc + namespace: prometheus