--- apiVersion: apps/v1 kind: Deployment metadata: name: n8n-runner labels: app: n8n component: runner spec: replicas: 2 selector: matchLabels: app: n8n component: runner template: metadata: labels: app: n8n component: runner spec: serviceAccountName: n8n containers: - name: n8n-runner image: docker.n8n.io/n8nio/n8n:latest command: - /bin/sh - -c - /usr/local/bin/task-runner-launcher javascript env: - name: PATH value: "/opt/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" - name: HOME value: "/home/node" - name: N8N_RUNNERS_TASK_BROKER_URI value: "n8n:5679" - name: N8N_RUNNERS_MODE value: "external" - name: N8N_RUNNERS_MAX_CONCURRENCY value: "10" - name: N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT value: "30" - name: NODE_OPTIONS value: "--max-old-space-size=1024" - name: GENERIC_TIMEZONE value: "Europe/Moscow" - name: TZ value: "Europe/Moscow" - name: N8N_RUNNERS_AUTH_TOKEN valueFrom: secretKeyRef: name: credentials key: runnertoken volumeMounts: - name: n8n-data mountPath: /home/node/.n8n - name: tools mountPath: /opt/tools resources: requests: cpu: 500m memory: 512Mi limits: cpu: 2000m memory: 2048Mi livenessProbe: httpGet: path: /healthz port: 5680 initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /healthz port: 5680 initialDelaySeconds: 15 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 volumes: - name: n8n-data persistentVolumeClaim: claimName: n8n-data - name: tools persistentVolumeClaim: claimName: n8n-tools securityContext: runAsUser: 1000 runAsGroup: 1000 runAsNonRoot: true fsGroup: 1000