# Instructions d'Installation avec Helm pour n8n ## 🎯 Installation du Node kDrive dans n8n avec Helm Ce guide explique comment déployer le node kDrive personnalisé dans une instance n8n déployée avec Helm sur Kubernetes. ## 📋 Prérequis - Kubernetes cluster opérationnel - Helm installé et configuré - Instance n8n déjà déployée avec Helm ou prête à être déployée - Accès au registry Docker si vous utilisez des images personnalisées ## 🚀 Méthode 1: Utilisation d'un ConfigMap ### 1️⃣ Builder le node ```bash # Depuis le répertoire du projet npm install npm run build ``` ### 2️⃣ Créer un ConfigMap Kubernetes Créez un fichier `kdrive-configmap.yaml`: ```yaml apiVersion: v1 kind: ConfigMap metadata: name: n8n-kdrive-node namespace: votre-namespace # Remplacez par votre namespace data: index.js: | {{ INCLURE_CONTENU_DU_FICHIER_dist_index_js }} KDrive.node.js: | {{ INCLURE_CONTENU_DU_FICHIER_dist_nodes_KDrive_KDrive.node.js }} GenericFunctions.js: | {{ INCLURE_CONTENU_DU_FICHIER_dist_nodes_KDrive_GenericFunctions.js }} KDriveCredentials.api.js: | {{ INCLURE_CONTENU_DU_FICHIER_dist_nodes_KDrive_KDriveCredentials.api.js }} kdrive.svg: | {{ INCLURE_CONTENU_DU_FICHIER_src_nodes_KDrive_kdrive.svg }} ``` Pour extraire le contenu des fichiers: ```bash # Créer un fichier temporaire avec le contenu cat > kdrive-configmap.yaml << 'EOF' apiVersion: v1 kind: ConfigMap metadata: name: n8n-kdrive-node namespace: votre-namespace data: index.js: | EOF # Ajouter le contenu du fichier index.js cat dist/index.js | sed 's/^/ /' >> kdrive-configmap.yaml # Ajouter les autres fichiers cat >> kdrive-configmap.yaml << 'EOF' KDrive.node.js: | EOF cat dist/nodes/KDrive/KDrive.node.js | sed 's/^/ /' >> kdrive-configmap.yaml # Continuer pour les autres fichiers... ``` ### 3️⃣ Appliquer le ConfigMap ```bash kubectl apply -f kdrive-configmap.yaml ``` ### 4️⃣ Mettre à jour la configuration Helm Créez ou modifiez votre fichier `values.yaml`: ```yaml # values.yaml extraVolumes: - name: custom-nodes configMap: name: n8n-kdrive-node extraVolumeMounts: - name: custom-nodes mountPath: /home/node/.n8n/custom/index.js subPath: index.js - name: custom-nodes mountPath: /home/node/.n8n/custom/nodes/KDrive/KDrive.node.js subPath: KDrive.node.js - name: custom-nodes mountPath: /home/node/.n8n/custom/nodes/KDrive/GenericFunctions.js subPath: GenericFunctions.js - name: custom-nodes mountPath: /home/node/.n8n/custom/nodes/KDrive/KDriveCredentials.api.js subPath: KDriveCredentials.api.js - name: custom-nodes mountPath: /home/node/.n8n/custom/nodes/KDrive/kdrive.svg subPath: kdrive.svg env: - name: N8N_CUSTOM_EXTENSIONS value: "/home/node/.n8n/custom" ``` ### 5️⃣ Mettre à jour le déploiement ```bash # Si n8n est déjà installé helm upgrade votre-release n8n/n8n -f values.yaml # Si c'est une nouvelle installation helm install votre-release n8n/n8n -f values.yaml ``` ## 🗃️ Méthode 2: Utilisation d'un Volume Persistant ### 1️⃣ Créer un PersistentVolumeClaim ```yaml # pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: n8n-custom-nodes-pvc namespace: votre-namespace spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi ``` ```bash kubectl apply -f pvc.yaml ``` ### 2️⃣ Modifier la configuration Helm ```yaml # values.yaml extraVolumes: - name: custom-nodes persistentVolumeClaim: claimName: n8n-custom-nodes-pvc extraVolumeMounts: - name: custom-nodes mountPath: /home/node/.n8n/custom env: - name: N8N_CUSTOM_EXTENSIONS value: "/home/node/.n8n/custom" ``` ### 3️⃣ Copier les fichiers dans le volume ```bash # Trouver le pod n8n kubectl get pods -n votre-namespace # Copier les fichiers kubectl cp dist/index.js votre-pod-n8n:/home/node/.n8n/custom/index.js -n votre-namespace kubectl cp -r dist/nodes votre-pod-n8n:/home/node/.n8n/custom/ -n votre-namespace kubectl cp src/nodes/KDrive/kdrive.svg votre-pod-n8n:/home/node/.n8n/custom/nodes/KDrive/kdrive.svg -n votre-namespace ``` ## 🐳 Méthode 3: Image Docker Personnalisée ### 1️⃣ Créer un Dockerfile ```dockerfile # Dockerfile FROM n8nio/n8n:latest # Copier les fichiers du node personnalisé COPY dist/index.js /home/node/.n8n/custom/index.js COPY dist/nodes /home/node/.n8n/custom/nodes COPY src/nodes/KDrive/kdrive.svg /home/node/.n8n/custom/nodes/KDrive/kdrive.svg # Configurer les extensions personnalisées ENV N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom ``` ### 2️⃣ Builder et pousser l'image ```bash docker build -t votre-registry/n8n-kdrive:latest . docker push votre-registry/n8n-kdrive:latest ``` ### 3️⃣ Mettre à jour les valeurs Helm ```yaml # values.yaml image: repository: votre-registry/n8n-kdrive tag: latest pullPolicy: Always ``` ### 4️⃣ Mettre à jour le déploiement ```bash helm upgrade votre-release n8n/n8n -f values.yaml ``` ## 🔄 Méthode 4: InitContainer Pour une approche plus robuste: ```yaml # values.yaml extraInitContainers: - name: copy-custom-nodes image: busybox command: ['sh', '-c', 'cp -r /config/* /custom/'] volumeMounts: - name: custom-nodes-config mountPath: /config - name: custom-nodes mountPath: /custom extraVolumes: - name: custom-nodes-config configMap: name: n8n-kdrive-node - name: custom-nodes emptyDir: {} extraVolumeMounts: - name: custom-nodes mountPath: /home/node/.n8n/custom env: - name: N8N_CUSTOM_EXTENSIONS value: "/home/node/.n8n/custom" ``` ## 🧪 Vérification de l'Installation ### 1️⃣ Vérifier que les fichiers sont présents ```bash kubectl exec -it votre-pod-n8n -n votre-namespace -- ls -la /home/node/.n8n/custom/ ``` ### 2️⃣ Vérifier les logs ```bash kubectl logs votre-pod-n8n -n votre-namespace | grep -i "custom\|kdrive" ``` ### 3️⃣ Redémarrer si nécessaire ```bash kubectl rollout restart deployment votre-deployment-n8n -n votre-namespace ``` ## 🔧 Configuration des Credentials Une fois le node installé: 1. **Accéder à l'interface n8n** 2. **Aller dans Credentials** 3. **Ajouter un nouveau credential** de type "kDrive API" 4. **Entrer votre clé API kDrive** 5. **Sauvegarder** ## 📝 Notes Importantes ### Persistance des Données - Les ConfigMaps ne sont pas conçus pour les gros fichiers - Pour les productions, préférez les volumes persistants ou images Docker - Les modifications nécessitent un redémarrage du pod ### Mises à Jour - Pour mettre à jour le node, répétez le processus avec les nouveaux fichiers - Utilisez des versions pour vos ConfigMaps/images pour faciliter les rollbacks ### Sécurité - Les credentials sont stockés de manière sécurisée dans n8n - Ne stockez jamais les credentials dans les ConfigMaps ## 🎯 Prochaines Étapes 1. **Choisir une méthode** de déploiement adaptée à votre environnement 2. **Déployer le node** en suivant les instructions 3. **Configurer les credentials** kDrive dans n8n 4. **Tester le node** avec un workflow simple 5. **Automatiser vos processus** kDrive avec n8n Pour plus d'informations: - `BUILD_INSTRUCTIONS.md` - Instructions de build - `README.md` - Guide utilisateur - `QUICK_START.md` - Guide de démarrage rapide