Skip to main content

Kubernetes & n8n: Setup n8n using K8S (Part 1)

Deploying n8n workflow automation with Kubernetes

 Intro

Aim of this article is to Publish n8n workflow automation tool into a Kubernetes environment.  n8n is quite flexible and can be used for IOT devices for your hobby projects to act as a SOAR tool at enterprise level.

Pre-Reqs

  • Familiarity with Kubernetes (k8s)

Package components

The deployment is split into following
  • n8n-pvc0.yaml  - PersistentVolumeClaim To mount directory for n8n database and configs
  • n8n-pvc1.yaml  - PersistentVolumeClaim To mount directory for n8n workflows
  • n8n-deployment.yaml  - Actual deployment definitions
  • n8n-svc.yaml  - Service To expose n8n for UI access

n8n-pvc0.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  creationTimestamp: null
  labels:
    io.kompose.service: n8n-claim0
  name: n8n-claim0
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
status: {}

n8n-pvc1.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  creationTimestamp: null
  labels:
    io.kompose.service: n8n-claim1
  name: n8n-claim1
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi
status: {}

n8n-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    io.kompose.service: n8n
  name: n8n
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: n8n
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        io.kompose.service: n8n
    spec:
      containers:
        - args:
            - n8n
            - start
          env:
            - name: N8N_BASIC_AUTH_ACTIVE
              value: "true"
            - name: N8N_BASIC_AUTH_PASSWORD
              value: thehive
            - name: N8N_BASIC_AUTH_USER
              value: thehive
            - name: N8N_PROTOCOL
              value: "http"
            - name: N8N_PORT
              value: "5678"
          image: n8nio/n8n
          name: n8n
          ports:
            - containerPort: 5678
          resources: {}
          volumeMounts:
            - mountPath: /root/.n8n
              name: n8n-claim0
            - mountPath: /opt/workflows
              name: n8n-claim1
      restartPolicy: Always
      volumes:
        - name: n8n-claim0
          persistentVolumeClaim:
            claimName: n8n-claim0
        - name: n8n-claim1
          persistentVolumeClaim:
            claimName: n8n-claim1
status: {}

n8n-svc.yaml


apiVersion: v1
kind: Service
metadata:
  labels:
    io.kompose.service: n8n
  name: n8n
spec:
  ports:
    - name: "5678"
      port: 5678
      targetPort: 5678
  selector:
    io.kompose.service: n8n
status:
  loadBalancer: {}

Apply in following order

kubectl create ns n8n
kubectl -n n8n apply -f n8n-pvc0.yaml
kubectl -n n8n apply -f n8n-pvc1.yaml
kubectl -n n8n apply -f n8n-deployment.yaml
kubectl -n n8n apply -f n8n-svc.yaml

After few minutes, you should be able to access n8n UI from the service IP or depending on how you have exposed the service. Or another trick is to use `minikube tunnel`, and use the same ClusterIP to access it

curl http://<cluster_ip>:5678

Popular posts from this blog

Syslog Standards: A simple Comparison between RFC3164 & RFC5424

Syslog Standards: A simple Comparison between RFC3164 (old format) & RFC5424 (new format) Though syslog standards have been for quite long time, lot of people still doesn't understand the formats in detail. The original standard document is quite lengthy to read and purpose of this article is to explain with examples Some of things you might need to understand The RFC standards can be used in any syslog daemon (syslog-ng, rsyslog etc.) Always try to capture the data in these standards. Especially when you have log aggregation like Splunk or Elastic, these templates are built-in which makes your life simple. Syslog can work with both UDP & TCP  Link to the documents the original BSD format ( RFC3164 ) the “new” format ( RFC5424 ) RFC3164 (the old format) RFC3164 originated from combining multiple implementations (Year 2001)

Create your own Passport Photo using GIMP

This tutorial is for semi-techies who knows a bit of GIMP (image editing).   This tutorial is for UK style passport photo ( 45mm x 35 mm ) which is widely used in UK, Australia, New Zealand, India etc.  This is a quick and easy process and one can create Passport photos at home If you are non-technical, use this link   .  If you want to create United States (USA) Passport photo or Overseas Citizen of India (OCI) photo, please follow this link How to Make your own Passport Photo - Prerequisite GIMP - One of the best image editing tools and its completely Free USB stick or any memory device to store and take to nearby shop A quality Digital camera Local Shops where you can print. Normally it costs (£0.15 or 25 US cents) to print 8 photos Steps (Video Tutorial attached blow of this page) Ask one of your colleague to take a photo  of you with a light background. Further details of how to take a photo  yourself       Take multiple pictures so that you can choose from th

Elastic Beats on pfSense : Installation and configuration

Summary Though in many cases syslog is preferred to transport the pfSense logs to external system, Elastic beats provides quite a niche way to send the logs while modelling the data alongside. This makes it ready-made to send to ElasticSearch directly and get ready-made outcomes like SIEM, performance etc. Pre-reqs A build server (preferably Ubuntu or Fedora) with internet connectivity shell access to pfsense server Basic knowledge of Elastic Stack (filebeat.yml configurations etc) Ensure connectivity is allowed from pfsense machine to your Elastic Stack receiver Setup Summary Connectivity tests Install dependencies in build server (vagrant, virtualbox, gmake, go etc) Download Elastic Beats source Make elastic Beats package for FreeBSD Copy binary packages to pfsense server Configure Beats to send to destination Configure ElasticSearch to view the data Installation Steps Connectivity tests Logon to pfsense server via Shel