Nasadenie a konfigurácia n8n na K3s pomocou Helm

Vytvorené: 24. 8. 2025 08:43 Aktualizované: 27. 8. 2025 13:14
Vyriešené
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

  1. 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.

  2. 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
  3. Kľúčové postupy a konfiguračné kroky:

    • Vytvorenie a aplikácia values.yaml sú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
  4. 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
  5. 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 pod naznač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úcu storageClass (nfs-client). Proces si vyžiadal niekoľko cyklov helm uninstall, kubectl delete pvc a helm install, kým sa podarilo nájsť správnu konfiguráciu.
  • Problém: Po nasadení nebol n8n dostupný z internetu a HTTPS nefungovalo.
  • Riešenie: Bolo potrebné vytvoriť a aplikovať samostatný IngressRoute manifest pre Traefik, ktorý správne nasmeroval doménu n8n.oit.sk na internú službu n8n a aktivoval certResolver pre automatické generovanie TLS certifikátu.
  1. 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.sk s platným Let's Encrypt certifikátom.
Vyriešené: 20. 8. 2025