From 69c228997d98fbeba0f81702f8c6915937f83288 Mon Sep 17 00:00:00 2001 From: = <=> Date: Sat, 2 May 2026 16:50:55 +0000 Subject: [PATCH] added n8n --- kubernetes-templates/n8n.yml | 200 +++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 kubernetes-templates/n8n.yml diff --git a/kubernetes-templates/n8n.yml b/kubernetes-templates/n8n.yml new file mode 100644 index 0000000..20c93a2 --- /dev/null +++ b/kubernetes-templates/n8n.yml @@ -0,0 +1,200 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: n8n +--- +apiVersion: v1 +kind: Secret +metadata: + name: n8n-secrets + namespace: n8n +type: Opaque +data: + # Base64 values from your previous manifest + N8N_ADMIN_USER: a2h3ZXpp + N8N_ADMIN_PASSWORD: cWVaVllWQ20wOEhaWmU= + POSTGRES_PASSWORD: RmJsV0xPTlM4alVjNUE= + N8N_ENCRYPTION_KEY: Tm90U2VjcmV0S2V5MTIzIQ== + N8N_TASKS_RUNNER_AUTH_TOKEN: bXktc2hhcmVkLXNlY3JldC10b2tlbi0xMjM= +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: n8n-config + namespace: n8n +data: + N8N_HOST: "n8n.khongisa.co.za" + N8N_PROTOCOL: "https" + NODE_ENV: "production" + WEBHOOK_URL: "https://n8n.khongisa.co.za/" + GENERIC_TIMEZONE: "Africa/Johannesburg" + DB_TYPE: "postgresdb" + DB_POSTGRESDB_HOST: "n8n-db-service" + DB_POSTGRESDB_PORT: "5432" + DB_POSTGRESDB_DATABASE: "n8n_db" + DB_POSTGRESDB_USER: "n8n_user" + N8N_PROXY_HOPS: "1" + # DEFINITIVE FIX: Force n8n to listen on all interfaces + N8N_LISTEN_ADDRESS: "0.0.0.0" + N8N_PORT: "5678" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: n8n-data-pvc + namespace: n8n +spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 10Gi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: n8n-db-pvc + namespace: n8n +spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 10Gi +--- +# Database Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: n8n-db + namespace: n8n +spec: + replicas: 1 + selector: + matchLabels: + app: n8n-db + template: + metadata: + labels: + app: n8n-db + spec: + containers: + - name: postgres + image: postgres:14-alpine + env: + - name: POSTGRES_USER + value: "n8n_user" + - name: POSTGRES_DB + value: "n8n_db" + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: n8n-secrets + key: POSTGRES_PASSWORD + ports: + - containerPort: 5432 + volumeMounts: + - name: db-storage + mountPath: /var/lib/postgresql/data + volumes: + - name: db-storage + persistentVolumeClaim: + claimName: n8n-db-pvc +--- +# Database Internal Service +apiVersion: v1 +kind: Service +metadata: + name: n8n-db-service + namespace: n8n +spec: + ports: + - port: 5432 + selector: + app: n8n-db +--- +# n8n Application Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: n8n + namespace: n8n +spec: + replicas: 1 + selector: + matchLabels: + app: n8n-app # Standardized label selector + template: + metadata: + labels: + app: n8n-app # Matches selector and service + spec: + containers: + - name: n8n + image: docker.n8n.io/n8nio/n8n:latest + ports: + - containerPort: 5678 + - containerPort: 5679 # Explicitly open the Task Broker port + envFrom: + - configMapRef: + name: n8n-config + env: + # DEFINITIVE FIX: Align communication between main process and Task Runner + - name: N8N_TASKS_RUNNER_BROKER_HOST + value: "127.0.0.1" + - name: N8N_TASKS_RUNNER_BROKER_PORT + value: "5679" + - name: N8N_TASKS_RUNNER_AUTH_TOKEN + valueFrom: + secretKeyRef: + name: n8n-secrets + key: N8N_TASKS_RUNNER_AUTH_TOKEN + # Database and Admin overrides + - name: DB_POSTGRESDB_PASSWORD + valueFrom: + secretKeyRef: + name: n8n-secrets + key: POSTGRES_PASSWORD + - name: N8N_ENCRYPTION_KEY + valueFrom: + secretKeyRef: + name: n8n-secrets + key: N8N_ENCRYPTION_KEY + - name: N8N_USER_MANAGEMENT_ADMIN_USER + valueFrom: + secretKeyRef: + name: n8n-secrets + key: N8N_ADMIN_USER + - name: N8N_USER_MANAGEMENT_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: n8n-secrets + key: N8N_ADMIN_PASSWORD + - name: N8N_SECURE_COOKIE + value: "false" + - name: N8N_COOKIES_SAME_SITE + value: "lax" + - name: N8N_PROXY_HOPS + value: "1" + volumeMounts: + - name: n8n-data + mountPath: /home/node/.n8n + volumes: + - name: n8n-data + persistentVolumeClaim: + claimName: n8n-data-pvc +--- +# NodePort Service +apiVersion: v1 +kind: Service +metadata: + name: n8n-service + namespace: n8n +spec: + type: NodePort + selector: + app: n8n-app # Correctly targets the refactored Deployment labels + ports: + - protocol: TCP + port: 5678 + targetPort: 5678 + nodePort: 30567 \ No newline at end of file