Comment installer n8n sur Kubernetes ?
Kubernetes permet de déployer, de gérer et de mettre à l’échelle des applications comme n8n dans des conteneurs. Dans ce guide, vous découvrez comment installer n8n sur Kubernetes afin de créer une base propre et compréhensible pour son utilisation future.
Étape 1 : vérifier les prérequis et choisir le serveur adapté
Avant d’installer n8n avec Kubernetes, vous avez d’abord besoin d’un serveur Linux, idéalement avec une adresse IP publique fixe, votre propre domaine ou sous-domaine et un accès root. Pour ce guide, le plus simple est d’utiliser un seul serveur basé sur Ubuntu, sur lequel un Kubernetes léger comme K3s sera ensuite configuré. K3s est bien adapté pour débuter et intègre déjà plusieurs composants typiques de Kubernetes.
De plus, il est important de choisir une taille de serveur réaliste. Vous devez tenir compte du fait que Kubernetes apporte lui-même des composants système supplémentaires et que n8n a aussi besoin de mémoire ainsi que de CPU. Vous trouverez ci-après quelques cas d’usage typiques et les serveurs adaptés.
Si vous ne connaissez pas encore n8n ou si vous souhaitez comparer des alternatives, il peut être utile de consulter une comparaison n8n vs Zapier ou n8n vs Make. Alors que Zapier et Make sont davantage orientés vers des automatisations Cloud simples, n8n offre, grâce à l’auto-hébergement, nettement plus de contrôle et de flexibilité.
Environnement d’apprentissage et de test pour un usage privé
Si vous souhaitez d’abord découvrir n8n sur Kubernetes, une petite configuration de serveur suffit largement. Dans ce scénario, l’objectif principal est de créer vos premiers workflows n8n, de comprendre l’interface et de tester des automatisations simples. La charge reste généralement faible, car seuls quelques workflows s’exécutent en parallèle et aucune utilisation permanente n’a lieu en arrière-plan. Pour cela, un VPS avec 2 vCores, 2 Go de RAM et 80 Go NVMe est le plus souvent suffisant. Gardez toutefois à l’esprit que Kubernetes consomme déjà des ressources, ce qui limite les performances disponibles. Cette variante n’est donc que partiellement adaptée aux workflows productifs ou exécutés en continu.
Utilisateurs privés avec usage en production ou petites startups
Si vous souhaitez utiliser n8n Kubernetes activement au quotidien, par exemple pour des automatisations entre des outils, des API ou vos propres projets, vous devriez prévoir un peu plus de performances. Dans ce cas d’usage, les workflows s’exécutent ou sont déclenchés par des webhooks. Les premières utilisations en équipe ou les petits projets sont aussi envisageables. Une configuration avec 4 vCores, 4 Go de RAM et 120 Go NVMe offre un bon compromis entre performances et coûts. Vous disposez ainsi de réserves suffisantes pour plusieurs exécutions de workflows en parallèle. Cette variante constitue donc une bonne base pour un usage en production.
PME avec plusieurs workflows et exécutions régulières
Pour les petites et moyennes entreprises, n8n est souvent utilisé pour automatiser des processus métier. Des exemples typiques sont l’intégration de systèmes de CRM, les automatisations d’email ou le traitement des commandes provenant d’une boutique en ligne. Dans de tels scénarios, les workflows s’exécutent régulièrement et parfois en parallèle, ce qui augmente nettement la charge du système. Une configuration avec 6 vCores, 8 Go de RAM et 240 Go NVMe fournit ici une base stable pour un fonctionnement en production. Vous bénéficiez d’exécutions plus rapides et évitez les goulets d’étranglement lorsque plusieurs processus tournent simultanément. Vous disposez en outre d’une marge suffisante pour étendre l’installation ultérieurement.
Équipes en croissance, agences ou environnements fortement automatisés
Lorsque n8n Kubernetes est utilisé de manière intensive et que de nombreux workflows fonctionnent simultanément, les exigences augmentent considérablement. Dans les agences ou les équipes plus importantes, de nombreuses automatisations s’exécutent souvent en parallèle, car elles couvrent le marketing, le traitement des données et les processus internes. Les workflows plus complexes, avec plusieurs appels d’API ou des durées d’exécution plus longues, sont également courants. Une configuration plus puissante avec 8 vCores, 16 Go de RAM et 480 Go NVMe garantit la stabilité et de bonnes performances système. Cette variante offre des réserves suffisantes pour la croissance et les pics de charge plus élevés. Elle constitue une bonne base pour une extension ultérieure vers des configurations Kubernetes plus évolutives.
Tableau récapitulatif : serveurs et scénarios d’utilisation
| Domaine d’application | Utilisation typique | Configuration recommandée |
|---|---|---|
| Environnements d’apprentissage et de test | Premiers pas avec Kubernetes, quelques workflows n8n, pas de fonctionnement continu à forte charge | 2 vCores CPU, 2 Go de RAM, 80 Go NVMe |
| Utilisateurs privés avec usage en production ou petites startups | Automatisations propres, webhooks, petites connexions API, premiers usages en équipe | 4 vCores CPU, 4 Go de RAM, 120 Go NVMe |
| PME avec plusieurs workflows et exécutions régulières | Automatisations internes, connexions CRM/boutique/email, plusieurs utilisateurs | 6 vCores CPU, 8 Go de RAM, 240 Go NVMe |
| Équipes en croissance, agences ou environnements fortement automatisés | De nombreux workflows actifs, webhooks fréquents, réserves pour une mise à l’échelle ultérieure | 8 vCores CPU, 16 Go de RAM, 480 Go NVMe |
Pour des scénarios particulièrement étendus, avec de nombreuses exécutions simultanées ou des services supplémentaires sur le même serveur, une configuration plus importante avec 12 vCores, 24 Go de RAM et 720 Go NVMe peut être pertinente.
- Automatisation des tâches manuelles pour les équipes techniques
- Hébergement sur votre propre serveur : pas de limite de tâches, contrôle total des coûts
- Plus de 500 intégrations d'applications et outils grâce à l'open source
Étape 2 : préparer le serveur et installer les paquets de base
Connectez-vous à votre serveur Ubuntu via SSH, puis mettez à jour les sources de paquets ainsi que les paquets déjà installés. Cette étape est importante pour démarrer sur une base propre et à jour.
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget nano opensslbashVous pouvez ensuite vérifier que le serveur est joignable et qu’il dispose déjà d’une adresse IP publique :
hostname -IbashVérifiez l’adresse IP publique auprès de votre hébergeur. Notez cette adresse, car vous en aurez besoin dans un instant pour l’entrée DNS de votre sous-domaine.
Étape 3 : faire pointer le sous-domaine vers le serveur
Créez chez votre fournisseur de domaine un enregistrement A pour le sous-domaine de votre choix. Si votre instance n8n Kubernetes doit ensuite être accessible sous n8n.votre-domaine.fr, ce sous-domaine doit pointer précisément vers l’adresse IP publique de votre serveur. Ce n’est que lorsque cet enregistrement DNS est actif que le HTTPS et l’accès externe peuvent fonctionner de manière fiable.
Un enregistrement DNS typique ressemble à ceci :
Type : A
Nom : n8n
Valeur : 203.0.113.10
TTL : 3600txtÉtape 4 : installer K3s
Pour les débutants, K3s est généralement l’une des solutions les plus simples pour déployer Kubernetes sur un serveur unique. K3s intègre par défaut plusieurs composants importants sous forme d’addons, notamment Traefik comme contrôleur d’ingress et une prise en charge du stockage persistant local.
Installez d’abord K3s avec la commande suivante :
curl -sfL https://get.k3s.io | sh -bashVérifiez ensuite avec la commande suivante si le service est en cours d’exécution :
sudo systemctl status k3sbashLes clusters Kubernetes utilisent différents contrôleurs d’ingress pour acheminer le trafic externe vers les services. Dans K3s, Traefik est activé par défaut. D’autres contrôleurs, comme NGINX ou HAProxy, sont également souvent utilisés, mais ils se distinguent par leur comportement, leur logique de routage et les paramètres nécessaires.
Si tout a démarré correctement, vous pouvez récupérer l’état du cluster :
sudo k3s kubectl get nodesbash
Pour faciliter l’utilisation de kubectl, il est préférable de définir un alias :
echo 'alias kubectl="sudo k3s kubectl"' >> ~/.bashrc
source ~/.bashrc
kubectl get nodesbashSi votre serveur apparaît ici avec l’état « Ready », Kubernetes est prêt à être utilisé.
Si vous ne souhaitez pas exploiter un environnement Kubernetes, il existe aussi des méthodes d’installation plus simples, comme une installation n8n Docker ou des configurations via d’autres plateformes : vous pouvez utiliser n8n avec CapRover ou n8n avec CasaOS. Celles-ci sont particulièrement adaptées aux petits projets ou aux débutants. Une installation n8n Plesk est également envisageable.
Étape 5 : installer Helm
Le Helm Chart officiel de n8n nécessite Helm 3.12 ou une version plus récente. Helm est un gestionnaire de paquets pour Kubernetes et joue un rôle similaire à celui d’apt sous Ubuntu. Au lieu de créer et de gérer manuellement des fichiers de configuration individuels, vous pouvez installer avec Helm des applications complètes sous forme de « charts ». L’installation devient ainsi nettement plus simple, plus claire et moins sujette aux erreurs.
Helm est particulièrement utile pour les débutants, car vous n’avez pas besoin de comprendre ou d’écrire chaque fichier YAML séparément. Vous adaptez seulement quelques paramètres centraux, et Helm se charge automatiquement du reste. Les mises à jour ou modifications ultérieures sont plus simples, car Helm gère l’état de votre installation.
Installez Helm directement sur votre serveur. La documentation officielle de Helm décrit l’installation via des binaires précompilés. Sous Ubuntu, l’installation au moyen du script fourni est toutefois courante et particulièrement simple :
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.shbashAvec la première commande, vous téléchargez le script d’installation. Ensuite, vous rendez le fichier exécutable et vous l’exécutez. Le script installe automatiquement Helm dans la version appropriée sur votre système.
Vérifiez ensuite si l’installation a réussi en affichant la version installée :
helm versionbash
Si un numéro de version compatible s’affiche, Helm est correctement installé et vous pouvez utiliser le chart n8n.
De nombreux utilisateurs commencent avec des outils d’automatisation simples, puis passent à n8n. Une évolution typique est la migration de Zapier vers n8n, afin d’obtenir davantage de contrôle sur les données, les workflows et l’hébergement.
Étape 6 : créer un namespace pour n8n
Pour séparer clairement les ressources n8n des autres objets Kubernetes, créez maintenant un namespace dédié. Il s’agit d’une bonne pratique courante dans Kubernetes.
kubectl create namespace n8nbashVérifiez ensuite si le namespace existe bien :
kubectl get namespacesbash
Étape 7 : installer cert-manager pour les certificats TLS
Pour une installation accessible publiquement, n8n doit être disponible via HTTPS. Pour le TLS, n8n recommande l’utilisation d’un reverse proxy ou d’une couche HTTP/HTTPS en amont. Dans ce tutoriel, Traefik remplit ce rôle dans Kubernetes, tandis que cert-manager automatise l’émission et le renouvellement des certificats. Vous pouvez aussi installer cert-manager via un chart Helm. Utilisez pour cela la commande suivante :
helm install cert-manager oci://quay.io/jetstack/charts/cert-manager \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=truebashVérifiez ensuite les pods. Les pods sont la plus petite unité exécutable dans Kubernetes. Ils contiennent un ou plusieurs conteneurs qui s’exécutent ensemble sur un même nœud et partagent certaines ressources, comme le réseau et le stockage.
kubectl get pods -n cert-managerbash
Attendez que tous les pods aient atteint le statut « Running » ou « Completed ».
Étape 8 : créer un ClusterIssuer Let’s Encrypt
Pour que cert-manager puisse ensuite créer automatiquement des certificats pour votre domaine, créez maintenant un ClusterIssuer Let’s Encrypt. Un ClusterIssuer est une configuration centrale dans Kubernetes qui définit auprès de quel fournisseur les certificats sont obtenus et comment la vérification de votre domaine est effectuée. Dans ce cas, Let’s Encrypt est utilisé comme fournisseur gratuit de certificats TLS.
Pour les débutants, la validation via HTTP-01 est généralement la plus simple, car elle ne nécessite aucune connexion à une API DNS. Let’s Encrypt vérifie à la place si votre domaine est joignable en récupérant un fichier spécifique via votre site Web. Si cette requête aboutit, le domaine est considéré comme vérifié et le certificat est émis.
Créez un fichier nommé clusterissuer.yaml :
nano clusterissuer.yamlbashDans ce fichier, définissez ensuite les paramètres suivants :
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: votre-adresseemail@exemple.fr
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
ingressClassName: traefikyamlRemplacez l’adresse email par la vôtre. Elle sera utilisée par Let’s Encrypt pour vous informer d’éléments importants, comme l’expiration prochaine de certificats.
Appliquez ensuite le fichier à votre cluster Kubernetes :
kubectl apply -f clusterissuer.yamlbashAinsi, le ClusterIssuer est créé et disponible pour toutes les applications du cluster. Vérifiez ensuite que la ressource a bien été créée :
kubectl get clusterissuerbash
Si le ClusterIssuer s’affiche, la configuration a réussi. L’émission du certificat se fera ensuite automatiquement dès que n8n sera accessible via un domaine et qu’un Ingress correspondant aura été configuré.
Étape 9 : créer le Secret n8n avec les principales variables d’environnement
Le chart Helm officiel attend plusieurs valeurs centrales sous forme de Secret, notamment N8N_ENCRYPTION_KEY, N8N_HOST, N8N_PORT et N8N_PROTOCOL. Ces valeurs sont toujours requises. Remplacez n8n.votre-domaine.fr par votre véritable sous-domaine, puis exécutez la commande suivante :
kubectl create secret generic n8n-secrets -n n8n \
--from-literal=N8N_ENCRYPTION_KEY=$(openssl rand -hex 32) \
--from-literal=N8N_HOST=n8n.votre-domaine.fr \
--from-literal=N8N_PORT=5678 \
--from-literal=N8N_PROTOCOL=https \
--from-literal=WEBHOOK_URL=https://n8n.votre-domaine.fr/ \
--from-literal=N8N_PROXY_HOPS=1bashÉtape 10 : créer le fichier values pour l’installation de n8n
Nous allons installer n8n Kubernetes en mode Standalone. Cela signifie que n8n fonctionne avec une configuration simple : il s’exécute dans un seul Pod et ne nécessite pas de services supplémentaires comme une base de données externe ou Redis. Une base de données SQLite intégrée est utilisée à la place. Cette variante est idéale pour les premiers projets, les petites installations ou l’apprentissage, car elle est nettement moins complexe.
Pour que Helm sache comment n8n doit être configuré, créez maintenant un fichier de configuration nommé n8n-values.yaml.
nano n8n-values.yamlbashDans ce fichier, vous définissez les principaux paramètres de votre installation, par exemple les variables d’environnement, l’espace de stockage ou le domaine.
queueMode:
enabled: false
database:
type: sqlite
useExternal: false
redis:
enabled: false
persistence:
enabled: true
size: 10Gi
secretRefs:
existingSecret: n8n-secrets
main:
extraEnv:
- name: TZ
value: Europe/Paris
ingress:
enabled: true
className: traefik
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: n8n.votre-domaine.fr
paths:
- path: /
pathType: Prefix
tls:
- secretName: n8n-tls
hosts:
- n8n.votre-domaine.fryamlRemplacez impérativement n8n.votre-domaine.fr par votre propre domaine. Ce fichier sert de point de contrôle central pour votre installation et peut être modifié à tout moment par la suite si vous souhaitez étendre votre configuration ou faire monter en charge n8n Kubernetes.
Le chart propose nettement plus d’options, notamment le Queue Mode, les workers, le HPA et des processeurs de webhook dédiés. Pour une première installation de n8n Kubernetes, cette configuration allégée constitue toutefois généralement le point de départ le plus pertinent. La documentation officielle de n8n distingue clairement le mode Standalone pour les petits environnements et le Queue Mode pour des configurations évolutives avec PostgreSQL et Redis.
Étape 11 : installer n8n avec le chart Helm officiel
Vient maintenant l’installation proprement dite de n8n Kubernetes à l’aide du chart Helm. Pour cela, exécutez la commande d’installation suivante :
helm install n8n oci://ghcr.io/n8n-io/n8n-helm-chart/n8n \
--version 1.0.0 \
-n n8n \
-f n8n-values.yamlbashVérifiez ensuite que les ressources ont bien été créées :
kubectl get all -n n8nbashPuis, examinez plus en détail les pods pour vous assurer que n8n a démarré correctement et qu’aucune erreur ne s’est produite.
kubectl get pods -n n8n -wbashDès que le pod principal est en cours d’exécution et prêt, n8n est installé sur Kubernetes dans le cluster.
Outre le chart OCI de ghcr.io/n8n-io utilisé dans ce guide, il existe d’autres sources de charts Helm pour installer n8n sur Kubernetes. Parmi elles figurent notamment un chart maintenu par la communauté via le projet GitHub Community Charts, régulièrement mis à jour, ainsi que le chart 8gears, très répandu, proposé comme projet open source sur GitHub et répertorié sur ArtifactHub.
Étape 12 : vérifier l’Ingress et le certificat
Comme vous avez déjà configuré l’Ingress et le TLS dans le fichier values, cert-manager devrait demander un certificat pour votre sous-domaine. Vérifiez d’abord l’Ingress :
kubectl get ingress -n n8nbashEnsuite, vérifiez le certificat :
kubectl get certificate -n n8n
kubectl describe certificate n8n-tls -n n8nbashÉtape 13 : ouvrir n8n dans le navigateur et terminer la configuration initiale
Dès que l’Ingress est actif et que le certificat a été créé avec succès, ouvrez votre instance dans le navigateur :
https://n8n.votre-domaine.fr
Lors du premier accès, n8n vous guide à travers la configuration initiale. En général, vous créez d’abord le premier utilisateur pour l’instance.

Étape 14 : tester l’installation
Après la configuration initiale, vous devriez vérifier brièvement si l’installation fonctionne réellement correctement. Pour cela, ouvrez l’éditeur n8n Kubernetes, créez un simple workflow de test et enregistrez-le. Il est également utile de consulter les journaux du pod principal.
kubectl logs -n n8n -l app.kubernetes.io/component=main --tail=100bashSi l’éditeur est accessible, que la connexion fonctionne et qu’aucune erreur évidente n’apparaît dans les journaux, l’installation de base est terminée avec succès.
Étape 15 : ce qu’il faut savoir pour l’exploitation en production
Pour les petites installations, le mode Standalone constitue un bon point de départ. Le chart officiel et la documentation de n8n sur Kubernetes distinguent toutefois clairement le mode Standalone du Queue Mode. Dès que plusieurs utilisateurs, davantage d’exécutions simultanées ou une forte charge de webhooks entrent en jeu, le Queue Mode devient généralement l’option la plus robuste. Dans ce cas, PostgreSQL et Redis s’ajoutent à l’architecture. Les workers peuvent alors être mis à l’échelle indépendamment.

