From 2ae346e8efd972e540aa2bf27980ec62f050700b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatrice=20Dellac=C3=A0?= Date: Fri, 4 Apr 2025 20:59:32 +0200 Subject: [PATCH] add n8n --- deploy/n8n/kustomization.yaml | 11 +++ .../n8n/n8n-claim0-persistentvolumeclaim.yaml | 14 ++++ deploy/n8n/n8n-deployment.yaml | 78 +++++++++++++++++++ deploy/n8n/n8n-ingress.yaml | 25 ++++++ deploy/n8n/n8n-service.yaml | 16 ++++ deploy/n8n/namespace.yaml | 4 + deploy/rocket-chat/values-custom.yaml | 23 ++++++ 7 files changed, 171 insertions(+) create mode 100644 deploy/n8n/kustomization.yaml create mode 100644 deploy/n8n/n8n-claim0-persistentvolumeclaim.yaml create mode 100644 deploy/n8n/n8n-deployment.yaml create mode 100644 deploy/n8n/n8n-ingress.yaml create mode 100644 deploy/n8n/n8n-service.yaml create mode 100644 deploy/n8n/namespace.yaml create mode 100644 deploy/rocket-chat/values-custom.yaml diff --git a/deploy/n8n/kustomization.yaml b/deploy/n8n/kustomization.yaml new file mode 100644 index 0000000..7a0a834 --- /dev/null +++ b/deploy/n8n/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: n8n + +resources: + - n8n-claim0-persistentvolumeclaim.yaml + - n8n-ingress.yaml + - namespace.yaml + - n8n-deployment.yaml + - n8n-service.yaml diff --git a/deploy/n8n/n8n-claim0-persistentvolumeclaim.yaml b/deploy/n8n/n8n-claim0-persistentvolumeclaim.yaml new file mode 100644 index 0000000..91e423e --- /dev/null +++ b/deploy/n8n/n8n-claim0-persistentvolumeclaim.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + service: n8n-claim0 + name: n8n-claim0 + namespace: n8n +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 2Gi diff --git a/deploy/n8n/n8n-deployment.yaml b/deploy/n8n/n8n-deployment.yaml new file mode 100644 index 0000000..013def8 --- /dev/null +++ b/deploy/n8n/n8n-deployment.yaml @@ -0,0 +1,78 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + service: n8n + name: n8n + namespace: n8n +spec: + replicas: 1 + selector: + matchLabels: + service: n8n + strategy: + type: Recreate + template: + metadata: + labels: + service: n8n + spec: + initContainers: + - name: volume-permissions + image: busybox:1.36 + command: ["sh", "-c", "chown 1000:1000 /data"] + volumeMounts: + - name: n8n-claim0 + mountPath: /data + containers: + - command: + - /bin/sh + args: + - -c + - sleep 5; n8n start + env: + - name: DB_TYPE + value: postgresdb + - name: DB_POSTGRESDB_HOST + value: postgres-base-rw.postgres.svc.cluster.local + - name: DB_POSTGRESDB_PORT + value: "5432" + - name: DB_POSTGRESDB_DATABASE + value: n8ndb + - name: DB_POSTGRESDB_USER + valueFrom: + secretKeyRef: + name: n8n-db-secret + key: username + - name: DB_POSTGRESDB_PASSWORD + valueFrom: + secretKeyRef: + name: n8n-db-secret + key: password + - name: N8N_PROTOCOL + value: http + - name: N8N_PORT + value: "5678" + image: n8nio/n8n + name: n8n + ports: + - containerPort: 5678 + resources: + requests: + memory: "250Mi" + limits: + memory: "500Mi" + volumeMounts: + - mountPath: /home/node/.n8n + name: n8n-claim0 + restartPolicy: Always + volumes: + - name: n8n-claim0 + persistentVolumeClaim: + claimName: n8n-claim0 + - name: n8n-secret + secret: + secretName: n8n-secret + - name: n8n-db-secret + secret: + secretName: n8n-db-secret diff --git a/deploy/n8n/n8n-ingress.yaml b/deploy/n8n/n8n-ingress.yaml new file mode 100644 index 0000000..4dbec9e --- /dev/null +++ b/deploy/n8n/n8n-ingress.yaml @@ -0,0 +1,25 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: keycloak + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" +# nginx.ingress.kubernetes.io/backend-protocol: "HTTP" + nginx.ingress.kubernetes.io/force-ssl-redirect: "true" +spec: + ingressClassName: nginx + tls: + - hosts: + - n8n.prod.panic.haus + secretName: n8n-tls + rules: + - host: n8n.prod.panic.haus + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: n8n + port: + number: 5678 diff --git a/deploy/n8n/n8n-service.yaml b/deploy/n8n/n8n-service.yaml new file mode 100644 index 0000000..bd3748a --- /dev/null +++ b/deploy/n8n/n8n-service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + service: n8n + name: n8n + namespace: n8n +spec: + type: LoadBalancer + ports: + - name: "5678" + port: 5678 + targetPort: 5678 + protocol: TCP + selector: + service: n8n diff --git a/deploy/n8n/namespace.yaml b/deploy/n8n/namespace.yaml new file mode 100644 index 0000000..8389695 --- /dev/null +++ b/deploy/n8n/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: n8n diff --git a/deploy/rocket-chat/values-custom.yaml b/deploy/rocket-chat/values-custom.yaml new file mode 100644 index 0000000..25ed17b --- /dev/null +++ b/deploy/rocket-chat/values-custom.yaml @@ -0,0 +1,23 @@ +image: + pullPolicy: IfNotPresent + repository: registry.rocket.chat/rocketchat/rocket.chat + +mongodb: + enabled: true # For testing, deploy a single MongoDB pod; consider an external MongoDB cluster for production. + auth: + passwords: + - rocketchat + rootPassword: rocketchatroot + +microservices: + enabled: false # Set to false for a monolithic deployment +host: chat.panic.haus # Replace with your Rocket.Chat domain +ingress: + enabled: true + ingressClassName: nginx # Specify the installed ingress controller in the K8s cluster + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod # Replace with your ClusterIssuer name + tls: + - secretName: rckube # Use a different name if preferred + hosts: + - chat.panic.haus # Replace with your Rocket.Chat domain