Obsah článku
title: "Nasadenie a konfigurácia n8n na K3s pomocou Helm"
slug: "k3s-nasadenie-n8n-helm-pvc-ingress"
technologies: ["Kubernetes", "K3s", "Helm", "YAML", "Traefik", "NFS", "cert-manager"]
tags: ["devops", "k3s", "n8n", "helm", "automation", "pvc", "ingress"]
date_solved: "2025-08-20"
Projekt/Téma: Nasadenie a konfigurácia n8n na K3s pomocou Helm
-
Cieľ / Problém na vyriešenie: Cieľom bolo nasadiť a nakonfigurovať automatizačnú platformu n8n do existujúceho K3s klastra. Požiadavky zahŕňali perzistentné úložisko pre dáta, prístup cez HTTPS s platným certifikátom a správne nastavenie sieťových parametrov.
-
Použité technológie a nástroje:
- Orchestrácia: Kubernetes (K3s)
- Deployment: Helm
- Konfigurácia: YAML (values.yaml, Kubernetes manifesty)
- Ingress Controller: Traefik
- Perzistentné úložisko: NFS Client Provisioner (
nfs-client) - TLS Certifikáty: cert-manager
- Nástroje:
kubectl,helm,sed
-
Kľúčové postupy a konfiguračné kroky:
- Vytvorenie a aplikácia
values.yamlsúboru pre Helm chart n8n. - Inštalácia a upgrade Helm releasu pre n8n, špecifikácia verzie a vlastného konfiguračného súboru.
helm install my-n8n oci://8gears.container-registry.com/library/n8n --version 1.0.0 -f /opt/k3s/n8n-values.yaml --namespace n8n --create-namespace helm upgrade my-n8n oci://8gears.container-registry.com/library/n8n --version 1.0.0 -f /opt/k3s/n8n-values.yaml --namespace n8n - Diagnostika stavu podov, perzistentných zväzkov (PVC) a logov.
kubectl get pods -n n8n kubectl get pvc -n n8n kubectl logs -n n8n $(kubectl get pods -n n8n -o name | head -1) kubectl describe deployment my-n8n -n n8n - Vytvorenie Kubernetes manifestu pre IngressRoute, ktorý zabezpečí externý prístup k n8n cez Traefik s automatickým vystavením Let's Encrypt certifikátu.
kubectl apply -f /opt/k3s/n8n-ingress-cert.yaml - Opakované odstraňovanie a znovuvytváranie releasu a PVC pri riešení problémov s perzistenciou.
helm uninstall my-n8n -n n8n kubectl delete pvc my-n8n -n n8n
- Vytvorenie a aplikácia
-
Výsledné kódy a skripty:
-
Príklad
n8n-values.yaml:image: tag: "1.99.1" main: persistence: enabled: true type: "dynamic" storageClass: "nfs-client" size: 5Gi config: generic: timezone: "Europe/Bratislava" service: port: 80 - Príklad
n8n-ingress-cert.yaml:# Obsah tohto súboru nebol v histórii priamo viditeľný, # ale na základe kontextu by vyzeral približne takto: apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: n8n-ingress-secure namespace: n8n spec: entryPoints: - websecure routes: - match: Host(`n8n.oit.sk`) kind: Rule services: - name: my-n8n # Názov služby vytvorenej Helm chartom port: 80 tls: certResolver: letsencrypt-prod
-
-
Zistené problémy a riešenia (Gotchas):
- Problém: Aplikácia n8n sa opakovane reštartovala alebo sa nespustila správne po nasadení. Logy a
describe podnaznačovali problém s pripojením perzistentného zväzku (PVC). - Riešenie: Problém bol v konfigurácii perzistencie v
values.yaml. Bolo nutné explicitne povoliť perzistenciu, zvoliť správny typ (dynamic) a definovať existujúcustorageClass(nfs-client). Proces si vyžiadal niekoľko cyklovhelm uninstall,kubectl delete pvcahelm install, kým sa podarilo nájsť správnu konfiguráciu.
- Problém: Aplikácia n8n sa opakovane reštartovala alebo sa nespustila správne po nasadení. Logy a
- Problém: Po nasadení nebol n8n dostupný z internetu a HTTPS nefungovalo.
- Riešenie: Bolo potrebné vytvoriť a aplikovať samostatný
IngressRoutemanifest pre Traefik, ktorý správne nasmeroval doménun8n.oit.skna internú službu n8n a aktivovalcertResolverpre automatické generovanie TLS certifikátu.
- Finálny výsledok / Záver:
Aplikácia n8n bola úspešne nasadená v K3s klastri. Dáta sú perzistentne ukladané na zdieľanom NFS úložisku a služba je bezpečne vystavená do internetu na adrese
https://n8n.oit.sks platným Let's Encrypt certifikátom.