Kuzzle Release du printemps 2019

Bonjour à tous !

Juste avant le début de l’été et des vacances, voilà les dernières nouveautés de Kuzzle: Kuzzle Core (Vault, refreshToken...), Admin Console (vues colonnes, port SDK JS 6...), plugin S3 et un boilerplate React.

 

English version

 

Kuzzle Core

Kuzzle est maintenant en version 1.8.0. Cette version apporte beaucoup de nouvelles fonctionnalités pour développer vos projets toujours plus rapidement!

Vous pouvez consulter les dernières notes de release en détails sur Github.

Secrets Vault pour clés d’API

Kuzzle intègre maintenant un outil pour gérer les secrets de votre application. A présent, vous allez pouvoir partager vos clés d’API avec vos collègues développeurs et devops directement en les versionant dans votre dépôt!

 

Ces secrets sont bien sûr chiffrés, ainsi la clé de déchiffrement est le seul secret à partager avec vos collègues, tout le reste est stocké en sécurité.

 

Les secrets ainsi stockés sont ensuite exposés par Kuzzle dans le contexte des plugins.

 

Créez d'abord un fichier avec vos secrets:

{
  "aws": {
    "secretKeyId": "lfiduras"
  },  
  "cloudinaryKey": "ho-chi-minh"  
}

 

Générez un fichier contenant ces secrets chiffrés et ajoutés le au dépôt:

 

./bin/kuzzle encryptSecrets config/secrets.json --vault-key strongpassword

 

{
  "aws": { 
    "secretKeyId": "536553f3181ada6f700cac98100f1266.3181ada66536553f"
  },
  "cloudinaryKey": "f700cac98100f1266536553f3181ada6.6536553f3181ada"
}

 

Le fichier de secrets chiffrés sera chargé au démarrage de Kuzzle

 

./bin/kuzzle start --vault-key strongpassword

 

Voir la documentation et la PR associée.

 

Nouvelle méthode API: auth:refreshToken

Cette méthode rafraîchit un token de connexion sans renseigner à nouveau les credentials de l’utilisateur.

Elle est aussi disponible dans le SDK Javascript 6.

Voir la documentation et la PR associée.

 

Nouvelle méthode API: bulk:write and bulk:mWrite

Ces deux nouvelles méthodes du contrôleur bulk permettent d’écrire directement un ou plusieurs documents dans la base de données.

Ces méthodes bas niveau ne passent pas par le système de validation de documents, ne déclenchent pas de notifications temps réel et les métadonnées de Kuzzle ne sont pas ajoutés aux documents.

Grâce à elle, il est par exemple possible de créer un document avec des métadonnées arbitraires.

Voir la documentation de write et mWrite et la PR associée.

 

Support de la politique de mapping dynamique d’Elasticsearch

Ceux qui ont travaillé avec Kuzzle savent qu’une fois que le type d’un mapping a été défini, il est impossible de le changer.

Cela peut poser des problèmes quand des nouveaux champs sont introduits alors qu’ils n’avaient pas été défini. Par défaut, Elasticsearch va tenter de deviner le mapping de ces nouveaux champs: c’est la politique de mapping dynamique

 

Il est maintenant possible de définir le comportement d’Elasticsearch face à ces nouveaux champs:

 

  • tenter de deviner le type du champ et mettre à jour le mapping (défaut)
  • ne pas modifier le mapping
  • rejeter l’introduction du champ

 

Le support des métadonnées de collection est à présent également disponible.

Voir la nouvelle page dédiée aux mappings et la PR associée.

 

Support pour Redis 4 et 5

Kuzzle est maintenant compatible avec Redis 4 et 5. À vrai dire nous n’avons pas fait grand chose... Les développeurs de Redis font extrêmement attention à rester rétro-compatible.

Nous utilisons à présent Redis 5 par défaut mais les anciennes versions continueront à être testées dans nos nightly builds.

 

Évènements génériques pour plugins

Les plugins supportent à présent les évènements de type wildcard. Cette fonctionnalité permet aux développeurs d’utiliser un hook ou un pipe sur toute une famille d'événements.

Par exemple, pour modifier la réponse renvoyée par chaque action du contrôleur document il est maintenant possible d’utiliser un seul pipe avec wildcard au lieu de déclarer un pipe pour chaque action:

 

this.pipes = {
  'document:after*': 'addMetadata'  
};

 

Voir la documentation et la PR associée.

 

Configuration des headers CORS

Il est maintenant possible de configurer finement les headers CORS pour répondre au mieux aux besoins des applications clientes de type SPA et PWA.

Notamment les headers Accept-Control-Allow-Methods et Accept-Control-Allow-Headers sont à présent configurables dans le fichier de configuration de Kuzzle.

Voir la PR associée.

 

Admin Console

Comme vous avez peut-être pu le constater, nous avons beaucoup travaillé sur l’Admin Console.

De nombreux bug fixes et améliorations ont été apportées ces derniers mois tel que l’ajout de boutons “Refresh” et “Replace” ou l’affichage des dates dans un format lisible.

Nous avons également porté l’Admin Console sur la dernière version de notre SDK Javascript. L’Admin Console est donc un excellent modèle d’une Single Page Application complète développée avec Vue.js et le SDK Javascript.

 

Nouvelle vue colonnes

Une nouvelle vue est disponible pour vos données: la vue colonne.

Cette vue est entièrement personnalisable, elle donne la possibilité de sélectionner les champs que vous souhaitez afficher pour chaque document.

 

nouvelle-vue-colonne-personnalisable

 

Voir la PR associée.

 

Import et export d’environnements

Comme vous le savez peut-être, les différents environnements Kuzzle que vous sauvegardez avec l’Admin Console sont stockés dans le local storage de votre navigateur.

Cela signifie que si vous changez de navigateur, ou que vous utilisez une version de l’Admin Console hébergée à un endroit différent vous perdez tous les environnements que vous avez sauvegardés.

Cette fonctionnalité permet d’exporter les environnements enregistrés pour une version de l’Admin Console et de les importer dans une autre.

Cela donne également la possibilité de partager ses environnements avec ses collègues, simplement en leur envoyant un fichier.

 

 

import-export-environnement

 

Voir la PR associée.

 

Plugins

Comme vous le savez, nous maintenons déjà un certain nombre de plugins pour Kuzzle.

Nous avons décidé de développer des nouveaux plugins répondant à des problématiques très courantes pour nos utilisateurs.

Les fonctionnalités apportées par ces plugins ne pouvaient pas être incluses directement au coeur car elles reposent sur des services tiers.

 

Plugin S3

La plupart des applications ont besoin de pouvoir stocker des fichiers.

Le problème c'est qu'avec Kuzzle en mode cluster, il n'est pas possible de stocker ces fichiers directement sur le système de fichiers.

Ce plugin propose une solution pour que les applications clientes puissent facilement envoyer des fichiers sur S3 tout en économisant la bande passant.

Voir le plugin.

 

Cloudinary et Prometheus

Deux autres plugins sont également en préparation et seront release dans les prochaines semaines.

Le premier est un plugin pour le service de gestion d’images Cloudinary et le deuxième pour le logiciel de monitoring Prometheus, stay tuned!

 

Kuzzle <3 React.js

Chez Kuzzle même si nous avons une préférence pour Vue.js, nous aimons aussi beaucoup la librairie React.js.

Nous avons décidé de mettre à disposition un boilerplate pour que vous puissiez commencer rapidement vos applications avec React.js et Kuzzle.

Ce boilerplate contient:

 

  • un boilerplate de plugin métier Kuzzle dans Docker
  • Redux et Redux Saga pour le store (frontend)
  • l’implémentation de l’authentification (frontend)
  • la gestion du mode offline côté (frontend)

 

Ce boilerplate est disponible sur Github et vient agrandir la liste de nos boilerplate disponibles.

 

Wrap things up

Je tiens à remercier l’ensemble de l’équipe Kuzzle pour le travail accompli ces derniers mois. Comme toujours nous avons à coeur la qualité des produits que nous proposons et nous espérons que ceux-ci répondent à vos attentes !

 

Depuis quelques mois, nous accompagnons des développeurs dans la prise en main de Kuzzle, on vous propose maintenant une formation packagée sur 3 jours, cliquez ici pour en savoir +

 

Pour consulter nos anciennes releases, cliquez sur ces liens:

- Winter Release 2019

- Equinoxe Release 2018

 

Adrien Maret

Postes associés