- Add KDriveCredentials to n8n.credentials in package.json to make credentials discoverable - Update build script to copy kdrive.svg to dist directory for proper logo display - Update SVG logo with improved design - Fix TypeScript types and error handling in GenericFunctions and KDrive node - Add default values to node properties for better UX
303 lines
7.2 KiB
Markdown
303 lines
7.2 KiB
Markdown
# 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 |