n8n is primarily used for:
1. Automating repetitive tasks across different tools
2. Building complex data pipelines
3. Creating custom integrations between applications
4. Developing AI-powered workflows by incorporating LLM chains
n8n is considered a "low-code" platform. While it offers a visual interface for creating workflows without coding, it also provides the flexibility to add custom JavaScript code for more advanced use cases. This hybrid approach caters to users with varying technical expertise.
Yes, n8n offers a free, self-hosted version. This allows organizations to run n8n on their own infrastructure, maintaining full control over their data and workflows. However, n8n also provides cloud-hosted options for those preferring a managed solution.
Shakudo integrates n8n into its comprehensive data platform, amplifying its potential in data science workflows. By combining n8n's automation capabilities with Shakudo's managed infrastructure and tool interoperability, data scientists can create sophisticated, AI-driven pipelines. This integration streamlines the process of connecting data sources, preprocessing steps, and model deployment, all within a cohesive, scalable environment.
<aside>📌 Command-first runbook for customer deployment calls. Replace placeholders before running. For production environments, run changes through the customer-approved change process.
</aside>
Run:
export KUBECONFIG=/path/to/customer-kubeconfig
export KUBE_CONTEXT=<customer-context>
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" config current-context
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get nodes
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get namespace hyperplane-n8n || kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" create namespace hyperplane-n8n
Run:
git clone --depth=1 --branch <release-branch> <https://github.com/devsentient/monorepo.git> /tmp/monorepo
cd /tmp/monorepo/stack-components/n8n/helm
helm dependency update .
Run:
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" create secret generic n8n-secrets -n hyperplane-n8n --from-literal=N8N_ENCRYPTION_KEY='<32+ char key>' --from-literal=DB_POSTGRESDB_PASSWORD='<postgres-password>'
Run:
cat > /tmp/n8n-values.yaml <<'EOF_VALUES'
n8n:
main:
config:
n8n:
host: n8n.<customer-domain>
protocol: https
db:
type: postgresdb
postgresdb:
host: <postgres-host>
database: n8n
user: n8n
executions:
mode: regular
secret:
existingSecret: n8n-secrets
worker:
enabled: false
persistence:
enabled: true
size: 10Gi
ingress:
enabled: true
host: n8n.<customer-domain>
EOF_VALUES
Run:
helm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" upgrade --install n8n /tmp/monorepo/stack-components/n8n/helm \\
--namespace hyperplane-n8n \\
--create-namespace \\
--values /tmp/n8n-values.yaml \\
--timeout 15m \\
--wait
Run:
helm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" status n8n -n hyperplane-n8n
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get pods,svc,pvc,ingress,virtualservice -n hyperplane-n8n
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get events -n hyperplane-n8n --sort-by=.lastTimestamp | tail -n 60
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" logs -n hyperplane-n8n -l app.kubernetes.io/instance=n8n --tail=100
Run:
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" port-forward -n hyperplane-n8n svc/n8n 5678:5678
# In another terminal:
curl <http://localhost:5678/healthz>
Run:
helm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" history n8n -n hyperplane-n8nhelm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" rollback n8n <REVISION> -n hyperplane-n8nkubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" rollout status deployment/n8n -n hyperplane-n8n || true