Déployer MeiliSearch sur Cloud Run

Guillaume Loulier
4 min readJan 26, 2021

Bonjour à tous, j’espère que tout le monde va bien 👋

Dans ce court article, nous allons voir comment déployer MeiliSearch sur Cloud Run, la solution de container “serverless” sur Google Cloud Platform.

Si vous ne savez pas ce qu’est Cloud Run, je vous renvoie vers la documentation qui vous expliquera bien plus en détails ce que propose la solution, l’idée ici est de pouvoir déployer un container rapidement (par exemple pour une pré-production ou un environnement de test) afin de tester des edge-cases sans impacter la production (ou pour une démonstration par exemple)

Préparer l’image

Pour commencer, il va falloir préparer une image qui contiendra l’instance Meilisearch, en effet, Cloud Run n’autorise pas encore l’usage d’image venant de Docker Hub dans sa version “hosted”, pour ce faire, passons par Docker:

Ici, rien de compliqué, nous ne configurons pas la “master key” car MeiliSearch peut utiliser les variables d’environnement, comme nous souhaitons respecter les principes énoncés dans 12 Factor App, mettons cela de côté pour l’instant.

Il est donc temps de build l’image et la tagger (cette étape requiert que vous ayez télécharger et configurer la CLI GCP)

docker build -t eu.gcr.io/_project_identifier_/meilisearch_preprod-018 .

Ici, j’utilise la version de MeiliSearch afin de définir le nom de mon image, cela me permettra plus facilement de gérer les releases si besoin.

Publier l’image

Une fois l’image disponible, publions-là sur le registry de GCP afin de la rendre disponible pour Cloud Run:

docker push eu.gcr.io/_project_identifier_/meilisearch_preprod-018

Une fois publiée, il est temps de vérifier que l’image est disponible, pour cela, regardons dans la GUI de GCP (via l’onglet Container Registry) si tout est en place:

Démarrer un service

Maintenant que tout est en place, il est temps de lancer le service et le rendre disponible.
Pour cela, commençons par aller sur l’onglet Cloud Run et cliquons sur le bouton Create service:

Ici, je choisis de déployer mon container en Finlande, simple préférence personnelle (pour l’usage électrique notamment) et de le nommer meilisearch, dans l’onglet suivant, je choisis mon image fraichement envoyée sur le registry:

Une fois l’image sélectionnée, je prends le temps de configurer mon container sur le port utilisé et les variables d’environnement:

Pour la valeur de la MEILI_MASTER_KEY, je définis une valeur peu sécurisée ici, à vous d’en choisir une en accord avec vos principes de sécurité, par défaut, je mets le port à 7700 car il s’agit du port sur lequel MeiliSearch écoute par défaut.
Pour finir, je définis la manière dont le service est disponible, pour simplifier les tests, je mets le service en disponible “à l’extérieur” de GCP sans qu’une authentification ne soit déclenchée (attention, cela ne concerne pas la clé requise par MeiliSearch mais bien l’invocation du service en dehors de GCP!):

Une fois le tout confirmé, voyons si le service démarre bien:

Bien, le service démarre correctement, voyons via les logs si tout s’est bien passé:

Une bonne nouvelle en suivant une autre, les logs renvoyés par MeiliSearch nous indiquent que tout fonctionne, bien sûr, chaque requête requiert que nous définissions la MEILI_MASTER_KEY (vous pouvez regarder du côté des clients pour cela).
Pour accéder à l’instance créée, vous pouvez utiliser l’URL signalée juste au-dessus des logs:

Voici donc la fin de court article sur le déploiement de MeiliSearch via Cloud Run, comme vous pouvez le constater, la procédure est assez simple et rapide, bien sûr, le déploiement en production requiert des règles complémentaires mais je vous laisse explorer la documentation de MeiliSearch pour approfondir le sujet.

J’espère que tout ce tutorial vous aidera à déployer facilement vos projets utilisant MeiliSearch et vous donnera envie d’approfondir Cloud Run pour vos futurs projets.

Très bonne journée à tous 👋

PS: Une question qui pourrait se poser est le stockage des index et des documents, par défaut, chaque instance Cloud Run possède un stockage de 4Go, pour une instance de “test”, cela est largement suffisant, si vous avez besoin de plus, je ne peux que vous conseiller de regarder du côté d’un Cloud Run via Anthos, cela vous permettra de configurer plus librement le stockage requis.

PS II: N’hésitez pas à poser les questions qui pourraient survenir ou approfondir certains points.

--

--

Guillaume Loulier

PHP developer @SensioLabs, Symfony addict (3, 4, 5 & 6 certified!)