Configuration Wrangler Globale
Configuration Wrangler Globale
Documentation technique
Type de ressource : Configuration Wrangler (Monorepo / Services Cloudflare)
Fichier source :wrangler.toml(racine) etservices/[worker-name]/wrangler.toml
Statut : Actif
1. Vue d’ensemble
1.1. Description
Configuration centralisée des ressources Cloudflare partagées (R2, KV, Queues) pour le monorepo. Ce fichier à la racine n’est pas un Worker à déployer directement, mais sert de référence pour les identifiants de ressources partagées.
1.2. Objectif
- Centraliser les identifiants des ressources Cloudflare partagées
- Fournir une référence unique pour les R2 buckets, Queues et KV namespaces
- Documenter l’architecture de déploiement du monorepo
1.3. Périmètre concerné
- Services couverts : form-handler, submission-processor
- Environnements : Development, Production
- Type de configuration : Wrangler.toml (référence), Bindings (R2, KV, Queue)
2. Architecture du Monorepo
2.1. Structure du dépôt
├── apps/│ ├── web/ # Projet Front-End Astro (Couche 02)│ │ └── wrangler.toml│ └── studio/ # Sanity Studio SPA (Couche 01)│ └── wrangler.toml├── services/│ ├── form-handler/ # Microservice formulaires│ │ ├── src/│ │ │ └── index.ts│ │ ├── wrangler.toml│ │ └── package.json│ └── submission-processor/ # Microservice traitement soumissions│ ├── src/│ │ └── index.ts│ ├── wrangler.toml│ └── package.json├── package.json # Scripts monorepo (Taskfile.yaml)├── wrangler.toml # Configuration racine (référence)└── README.md2.2. Composants impliqués
| Composant | Rôle | Type |
|---|---|---|
wrangler.toml (racine) |
Configuration globale (référence) | Config |
services/*/wrangler.toml |
Configuration par service | Config |
| Cloudflare Resources | R2, KV, Queues | Infrastructure |
| Taskfile.yaml | Scripts de déploiement | Automation |
3. Configuration par service
3.1. Worker form-handler (Traitement des Formulaires)
name = "amn-form-handler"main = "src/index.ts"compatibility_date = "2025-07-18"compatibility_flags = ["nodejs_compat"]
[vars]ENVIRONMENT = "dev"
[[queues.producers]]queue = "submissions-queue-dev"binding = "SUBMISSIONS_QUEUE"
[env.dev]name = "amn-form-handler-dev"vars = { ENVIRONMENT = "dev" }
[[env.dev.queues.producers]]queue = "submissions-queue-dev"binding = "SUBMISSIONS_QUEUE"
[env.production]name = "amn-form-handler-prod"vars = { ENVIRONMENT = "production" }
[[env.production.queues.producers]]queue = "submissions-queue-prod"binding = "SUBMISSIONS_QUEUE"3.2. Worker submission-processor (Traitement des Soumissions)
name = "amn-submission-processor"main = "src/index.ts"compatibility_date = "2025-07-18"compatibility_flags = ["nodejs_compat"]
[vars]ENVIRONMENT = "dev"
[env.dev]name = "amn-submission-processor-dev"vars = { ENVIRONMENT = "dev" }
[[env.dev.queues.consumers]]queue = "submissions-queue-dev"max_batch_size = 10max_batch_timeout = 30
[env.production]name = "amn-submission-processor-prod"vars = { ENVIRONMENT = "production" }
[[env.production.queues.consumers]]queue = "submissions-queue-prod"max_batch_size = 10max_batch_timeout = 303.3. Services non implémentés
Les services suivants du template ne sont pas implémentés dans le projet actuel :
middleware(Middleware Global)cms-webhook-receiver(Récepteur Webhooks)media-upload(Upload Présigné)media-cleanup(Nettoyage Cron)sanity-backup(Backup Cron)
4. Gestion des secrets
4.1. Matrice des secrets par service
| Service | Secret | Description | Rotation |
|---|---|---|---|
form-handler |
Aucun secret configuré | - | - |
submission-processor |
SANITY_PROJECT_ID |
ID du projet Sanity | 90 jours |
submission-processor |
SANITY_DATASET |
Nom du dataset | 90 jours |
submission-processor |
SANITY_API_WRITE_TOKEN |
Token d’écriture Sanity | 90 jours |
4.2. Commandes d’injection
# Injection des secrets pour le service submission-processorwrangler secret put SANITY_PROJECT_ID --env production --config services/submission-processor/wrangler.tomlwrangler secret put SANITY_DATASET --env production --config services/submission-processor/wrangler.tomlwrangler secret put SANITY_API_WRITE_TOKEN --env production --config services/submission-processor/wrangler.toml4.3. Règles de sécurité
- ✅ Les secrets ne sont jamais commités dans Git
- ✅ Les secrets sont injectés via
wrangler secret put(chiffrés par Cloudflare) - ✅ Rotation recommandée tous les 90 jours
- ✅ Les secrets sont spécifiques à chaque environnement (production/development)
- ✅ Les secrets ne sont jamais loggés dans les Workers
4.4. Vérification des secrets
# Liste des secrets d'un servicewrangler secret list --config services/submission-processor/wrangler.toml --env production
# Suppression d'un secretwrangler secret delete SECRET_NAME --config services/submission-processor/wrangler.toml --env production5. Scripts npm du monorepo
5.1. Scripts de déploiement
# Taskfile.yaml (utilisé à la place de package.json)tasks: dev:services: # Démarre tous les services build: # Build l'application web typecheck:services: # Typecheck les services5.2. Scripts de gestion des secrets
Non implémenté - utilisez wrangler secret put directement.
6. Configuration des environnements
6.1. Matrice des environnements
| Environnement | Usage | Déclenchement |
|---|---|---|
dev |
Développement local | task dev:services |
production |
Production publique | Merge sur main (via GitHub Actions) |
6.2. Variables d’environnement par environnement
| Variable | Dev | Production |
|---|---|---|
ENVIRONMENT |
dev |
production |
| Queue | submissions-queue-dev |
submissions-queue-prod |
6.3. Règles de déploiement
- ✅ La branche
maindéclenche le déploiement en production via GitHub Actions - ✅ Les secrets sont spécifiques à chaque environnement
- ✅ Les bindings (Queue) sont partagés ou isolés selon l’environnement
7. Bindings Cloudflare
7.1. Matrice des bindings par service
| Service | KV | R2 | Queue | Service |
|---|---|---|---|---|
form-handler |
- | - | SUBMISSIONS_QUEUE |
- |
submission-processor |
- | - | SUBMISSIONS_QUEUE |
- |
7.2. Création des ressources
# Création des Queueswrangler queues create submissions-queue-devwrangler queues create submissions-queue-prod7.3. Lifecycle Rules R2
Non implémenté - aucun bucket R2 n’est configuré dans les services actuels.
8. CI/CD et déploiement
8.1. Pipeline de déploiement
Non documenté - le déploiement est automatique via GitHub Actions (selon règles globales).
8.2. Rollback
# Liste des déploiementswrangler deployments list --config services/form-handler/wrangler.toml
# Rollback vers une version précédentewrangler deployments rollback --deployment-id=[id] --config services/form-handler/wrangler.toml8.3. Tests manuels
# Test local d'un servicetask dev:form-handler
# Test d'un endpointcurl -X POST http://localhost:8789/test-direct \ -H "Content-Type: application/json" \ -d '{"name":"Test","email":"test@example.com","message":"Test message"}'9. Monitoring et observabilité
9.1. Logs en temps réel
# Logs d'un service spécifiquewrangler tail form-handler
# Logs avec filtrewrangler tail submission-processor --format pretty9.2. Métriques clés
Non implémenté - aucune métrique ou alerte n’est configurée.
9.3. Cloudflare Logpush
Non implémenté - Logpush n’est pas configuré.
10. Débogage et troubleshooting
10.1. Problèmes courants
| Symptôme | Cause probable | Solution |
|---|---|---|
| “Binding not found” | Binding mal configuré | Vérifier le wrangler.toml et redéployer |
| “Secret not found” | Secret non injecté | Exécuter wrangler secret put |
| “Service unavailable” | Worker non déployé | Vérifier le déploiement avec wrangler deployments list |
| Erreur de compatibilité | compatibility_date trop ancien |
Mettre à jour vers 2025-07-18 |
10.2. Commandes de debug
# Vérification de la configurationwrangler deploy --dry-run --config services/form-handler/wrangler.toml
# Inspection des bindingswrangler queues list11. Bonnes pratiques
11.1. Architecture
- ✅ Séparer la configuration par service (un
wrangler.tomlpar Worker) - ✅ Utiliser des environnements distincts (dev/production)
- ✅ Documenter les bindings et secrets dans ce fichier
- ✅ Versionner les
wrangler.tomldans Git (sauf les secrets)
11.2. Sécurité
- ✅ Ne jamais commiter les secrets dans Git
- ✅ Utiliser
wrangler secret putpour injecter les secrets - ✅ Rotation régulière des secrets (tous les 90 jours)
- ✅ Valider les permissions des tokens API (principe du moindre privilège)
11.3. Performance
- ✅ Utiliser
compatibility_daterécent pour bénéficier des optimisations - ✅ Minimiser le nombre de bindings par Worker
11.4. Maintenance
- ✅ Documenter les changements de configuration dans ce fichier
- ✅ Surveiller les métriques après chaque déploiement
12. Évolutions et roadmap
12.1. Améliorations planifiées
- Ajout du service middleware (Middleware Global)
- Ajout du service cms-webhook-receiver (Webhooks Sanity)
- Ajout du service media-upload (Upload présigné)
- Ajout du service media-cleanup (Nettoyage Cron)
- Ajout du service sanity-backup (Backup Cron)
- Configuration de Logpush vers un SIEM
12.2. Limitations connues
- ❌ Les secrets ne peuvent pas être versionnés dans Git
- ❌ Pas de monitoring configuré
- ❌ Pas de Logpush configuré
- ❌ Pas de bucket R2 configuré
13. Ressources liées
- Documentation Cloudflare : Wrangler Configuration
- Documentation Cloudflare : Queues
- Fichiers concernés :
wrangler.toml(racine)services/form-handler/wrangler.tomlservices/submission-processor/wrangler.tomlapps/web/wrangler.tomlapps/studio/wrangler.toml
14. Historique des modifications
| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-15 | 1.0 | Création initiale | Devin |