OpenSearch¶
Aperçu¶
OpenSearch fournit la recherche plein texte et l'indexation pour AKKO, servant principalement de backend de recherche pour OpenMetadata. Il indexe les entités de métadonnées (tables, pipelines, dashboards, utilisateurs, tags) et alimente la barre de recherche, les requêtes de graphe de lignage et les fonctionnalités de découverte de données de la couche de gouvernance.
Architecture¶
OpenMetadata Server ──→ OpenSearch (:9200)
│ (index de recherche)
│
▼
PostgreSQL (stockage des métadonnées)
OpenMetadata écrit les métadonnées des entités dans PostgreSQL pour la persistance et les indexe simultanément dans OpenSearch pour une recherche plein texte rapide. OpenSearch est un composant principalement en lecture — toutes les écritures proviennent du pipeline d'indexation d'OpenMetadata.
Ports¶
| Port | Fonction | Exposé |
|---|---|---|
| 9200 | API REST — requêtes de recherche et gestion des index | Interne uniquement |
| 9300 | Transport inter-noeud (inutilisé en mode noeud unique) | Interne uniquement |
Interne uniquement
OpenSearch n'est jamais exposé en dehors du cluster. Seul OpenMetadata communique directement avec lui.
Configuration¶
Mode noeud unique¶
En développement et pour les petits déploiements, OpenSearch fonctionne en cluster à noeud unique, ce qui évite la surcharge de coordination de cluster :
Plugin de sécurité¶
Le plugin de sécurité est désactivé en développement pour simplifier la mise en place. En production, activez-le et configurez TLS + authentification :
Sécurité en production
En environnement de production, activez le plugin de sécurité OpenSearch
avec des certificats TLS et l'authentification des utilisateurs internes.
La configuration de développement avec plugins.security.disabled: true
n'est pas adaptée à la production.
Mémoire¶
OpenSearch nécessite une quantité significative de mémoire pour l'indexation et les opérations de recherche :
Le heap par défaut de 512 Mo est suffisant pour le développement. Pour la production avec de grands catalogues de métadonnées (plus de 10 000 entités), augmentez à 1-2 Go.
Chart Helm¶
OpenSearch est déployé via le sous-chart personnalisé akko-opensearch :
helm/akko/charts/akko-opensearch/
├── Chart.yaml
├── values.yaml
└── templates/
├── statefulset.yaml
├── service.yaml
└── configmap.yaml
Valeurs clés¶
akko-opensearch:
image:
repository: opensearchproject/opensearch
tag: "2.19.1"
replicas: 1
config:
discovery.type: single-node
plugins.security.disabled: "true"
resources:
requests:
memory: 512Mi
limits:
memory: 1Gi
persistence:
enabled: true
size: 5Gi
Intégration avec OpenMetadata¶
OpenMetadata nécessite OpenSearch pour ses fonctionnalités de recherche. La connexion est configurée dans les valeurs d'OpenMetadata :
API compatible Elasticsearch
OpenMetadata utilise la bibliothèque client Elasticsearch, mais OpenSearch
maintient la compatibilité API. La clé de configuration est nommée
elasticsearch bien que le backend soit OpenSearch.
Vérification de santé¶
OpenSearch expose un point de santé du cluster :
Renvoie une réponse JSON avec status: "green" (ou "yellow" en mode noeud
unique, ce qui est normal).
Dépannage¶
Problèmes courants
- La recherche OpenMetadata ne renvoie aucun résultat : Vérifiez
qu'OpenSearch fonctionne et que l'index existe. Lancez
kubectl exec deploy/akko-opensearch -- curl -s localhost:9200/_cat/indicespour lister les index. Si vide, déclenchez une réindexation depuis l'UI d'administration d'OpenMetadata (Settings > Event Publishers > Elasticsearch). - Pod OOMKilled : OpenSearch est gourmand en mémoire. Si le pod est tué
avec OOMKilled, augmentez la limite mémoire dans
values.yamlet assurez-vous que la taille du heapOPENSEARCH_JAVA_OPTScorrespond (le heap doit être ~50% de la limite mémoire du conteneur). - Démarrage lent (>60s) : OpenSearch effectue une récupération d'index
au démarrage. Si le timeout de la sonde de disponibilité est trop court,
le pod peut redémarrer en boucle. Augmentez
initialDelaySecondsà 90s pour la sonde de disponibilité.