From c47e7ed3d0bedc71ea0d3956ffd7c32eac137ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20Groothuis?= Date: Thu, 30 Oct 2025 10:47:16 +0100 Subject: [PATCH] chore(kener): First implementation of Kener --- clusters/artemis/apps/kener/app-project.yaml | 17 ++++ clusters/artemis/apps/kener/application.yaml | 24 ++++++ .../artemis/apps/kener/kustomization.yaml | 7 ++ clusters/artemis/apps/kustomization.yaml | 1 + manifests/artemis/kener/db-cluster.yaml | 21 +++++ manifests/artemis/kener/deployment.yaml | 80 +++++++++++++++++++ manifests/artemis/kener/ingress.yaml | 22 +++++ manifests/artemis/kener/pvc.yaml | 11 +++ manifests/artemis/kener/secret.yaml | 74 +++++++++++++++++ manifests/artemis/kener/service.yaml | 12 +++ 10 files changed, 269 insertions(+) create mode 100644 clusters/artemis/apps/kener/app-project.yaml create mode 100644 clusters/artemis/apps/kener/application.yaml create mode 100644 clusters/artemis/apps/kener/kustomization.yaml create mode 100644 manifests/artemis/kener/db-cluster.yaml create mode 100644 manifests/artemis/kener/deployment.yaml create mode 100644 manifests/artemis/kener/ingress.yaml create mode 100644 manifests/artemis/kener/pvc.yaml create mode 100644 manifests/artemis/kener/secret.yaml create mode 100644 manifests/artemis/kener/service.yaml diff --git a/clusters/artemis/apps/kener/app-project.yaml b/clusters/artemis/apps/kener/app-project.yaml new file mode 100644 index 0000000..8595e9a --- /dev/null +++ b/clusters/artemis/apps/kener/app-project.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: argoproj.io/v1alpha1 +kind: AppProject +metadata: + name: kener +spec: + description: Monitoring tool + sourceRepos: + - '*' + sourceNamespaces: + - '*' + destinations: + - namespace: 'kener' + server: '*' + clusterResourceWhitelist: + - group: '*' + kind: '*' diff --git a/clusters/artemis/apps/kener/application.yaml b/clusters/artemis/apps/kener/application.yaml new file mode 100644 index 0000000..9903999 --- /dev/null +++ b/clusters/artemis/apps/kener/application.yaml @@ -0,0 +1,24 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: kener + namespace: kener + labels: + platform.dgse.cloud/cluster: artemis + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: kener + source: + repoURL: 'https://git.dgse.cloud/DGSE/kubernetes.git' + path: manifests/artemis/kener + targetRevision: main + destination: + namespace: kener + name: in-cluster + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + prune: true + selfHeal: true diff --git a/clusters/artemis/apps/kener/kustomization.yaml b/clusters/artemis/apps/kener/kustomization.yaml new file mode 100644 index 0000000..f9b2a4b --- /dev/null +++ b/clusters/artemis/apps/kener/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - app-project.yaml + - application.yaml diff --git a/clusters/artemis/apps/kustomization.yaml b/clusters/artemis/apps/kustomization.yaml index 32553fb..aea3486 100644 --- a/clusters/artemis/apps/kustomization.yaml +++ b/clusters/artemis/apps/kustomization.yaml @@ -16,3 +16,4 @@ resources: - ntfy - penpot - immich + - kener diff --git a/manifests/artemis/kener/db-cluster.yaml b/manifests/artemis/kener/db-cluster.yaml new file mode 100644 index 0000000..187a242 --- /dev/null +++ b/manifests/artemis/kener/db-cluster.yaml @@ -0,0 +1,21 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: kener-postgres +spec: + instances: 1 + managed: + roles: + - name: kener + superuser: true + login: true + bootstrap: + initdb: + database: kener + owner: kener + secret: + name: kener-postgres-user + + storage: + size: 4Gi + storageClass: local-path diff --git a/manifests/artemis/kener/deployment.yaml b/manifests/artemis/kener/deployment.yaml new file mode 100644 index 0000000..531c42a --- /dev/null +++ b/manifests/artemis/kener/deployment.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kener +spec: + selector: + matchLabels: + app: kener + template: + metadata: + labels: + app: kener + spec: + containers: + - name: kener + image: rajnandan1/kener:latest + ports: + - containerPort: 3000 + name: http + volumeMounts: + - name: kener-uploads + mountPath: "/app/uploads" + restartPolicy: unless-stopped + env: + - name: ORIGIN + valueFrom: + secretKeyRef: + name: kener-secret + key: ORIGIN + - name: DATABASE_URL + valueFrom: + secretKeyRef: + name: kener-secret + key: DATABASE_URL + - name: KENER_SECRET_KEY + valueFrom: + secretKeyRef: + name: kener-secret + key: KENER_SECRET_KEY + - name: SMTP_HOST + valueFrom: + secretKeyRef: + name: kener-secret + key: SMTP_HOST + - name: SMTP_PORT + valueFrom: + secretKeyRef: + name: kener-secret + key: SMTP_PORT + - name: SMTP_USER + valueFrom: + secretKeyRef: + name: kener-secret + key: SMTP_USER + - name: SMTP_PASS + valueFrom: + secretKeyRef: + name: kener-secret + key: SMTP_PASS + - name: SMTP_SECURE + valueFrom: + secretKeyRef: + name: kener-secret + key: SMTP_SECURE + - name: SMTP_FROM_EMAIL + valueFrom: + secretKeyRef: + name: kener-secret + key: SMTP_FROM_EMAIL + - name: TZ + valueFrom: + secretKeyRef: + name: kener-secret + key: TZ + + volumes: + - name: kener-uploads + persistentVolumeClaim: + claimName: kener-pvc diff --git a/manifests/artemis/kener/ingress.yaml b/manifests/artemis/kener/ingress.yaml new file mode 100644 index 0000000..c5ac670 --- /dev/null +++ b/manifests/artemis/kener/ingress.yaml @@ -0,0 +1,22 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + cert-manager.io/cluster-issuer: letsencrypt + name: kener-ingress +spec: + rules: + - host: monitor.dgse.cloud + http: + paths: + - backend: + service: + name: kener + port: + number: 3000 + path: / + pathType: Prefix + tls: + - hosts: + - monitor.dgse.cloud + secretName: letsencrypt diff --git a/manifests/artemis/kener/pvc.yaml b/manifests/artemis/kener/pvc.yaml new file mode 100644 index 0000000..2719d00 --- /dev/null +++ b/manifests/artemis/kener/pvc.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: kener-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi diff --git a/manifests/artemis/kener/secret.yaml b/manifests/artemis/kener/secret.yaml new file mode 100644 index 0000000..5a8f18f --- /dev/null +++ b/manifests/artemis/kener/secret.yaml @@ -0,0 +1,74 @@ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: kener-secret +spec: + refreshInterval: 1h + secretStoreRef: + name: platform + kind: ClusterSecretStore + target: + name: kener-secret + data: + - secretKey: ORIGIN + remoteRef: + key: kener + property: ORIGIN + - secretKey: DATABASE_URL + remoteRef: + key: kener + property: DATABASE_URL + - secretKey: KENER_SECRET_KEY + remoteRef: + key: kener + property: KENER_SECRET_KEY + - secretKey: SMTP_HOST + remoteRef: + key: kener + property: SMTP_HOST + - secretKey: SMTP_PORT + remoteRef: + key: kener + property: SMTP_PORT + - secretKey: SMTP_USER + remoteRef: + key: kener + property: SMTP_USER + - secretKey: SMTP_PASS + remoteRef: + key: kener + property: SMTP_PASS + - secretKey: SMTP_SECURE + remoteRef: + key: kener + property: SMTP_SECURE + - secretKey: SMTP_FROM_EMAIL + remoteRef: + key: kener + property: SMTP_FROM_EMAIL + - secretKey: TZ + remoteRef: + key: kener + property: TZ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: kener-postgres-user +spec: + refreshInterval: 1h + secretStoreRef: + name: platform + kind: ClusterSecretStore + target: + name: kener-postgres-user + data: + - secretKey: username + remoteRef: + key: kener + property: postgres_username + - secretKey: password + remoteRef: + key: kener + property: postgres_password diff --git a/manifests/artemis/kener/service.yaml b/manifests/artemis/kener/service.yaml new file mode 100644 index 0000000..5e66d1b --- /dev/null +++ b/manifests/artemis/kener/service.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: kener +spec: + selector: + app: kener + ports: + - protocol: TCP + port: 3000 + targetPort: 3000