Aller au contenu principal

Administration Guides

Localisation​

Le service Technique est déployé dans kubernetes :

kubectl -n kosmos-search get pods
NAME READY STATUS RESTARTS AGE
keycloak-import-keycloakimporter-opensearch-hfhpcv-zj8sj 0/1 Completed 0 4d1h
opensearch-cluster-data-0 1/1 Running 0 7d8h
opensearch-cluster-manager-0 1/1 Running 0 9d
opensearch-dashboards-65fdc945d-5wblt 1/1 Running 0 17d
tileimporter-opensearch-kosmos-tileimporter-6sll-h5svf 0/1 Completed 0 4d1h

Le service Métier est déployé dans kubernetes :

kubectl -n shared-search get pods
NAME READY STATUS RESTARTS AGE
keycloak-import-keycloakimporter-opensearch-shared-jxrhpc-wgzvg 0/1 Completed 0 4d1h
opensearch-cluster-data-0 1/1 Running 0 25h
opensearch-cluster-data-1 1/1 Running 0 25h
opensearch-cluster-data-2 1/1 Running 0 25h
opensearch-cluster-manager-0 1/1 Running 0 32m
opensearch-cluster-manager-1 1/1 Running 0 32m
opensearch-cluster-manager-2 1/1 Running 0 32m
opensearch-dashboards-shared-5685c9b75b-68mzz 1/1 Running 0 11m
tileimporter-opensearch-shared-kosmos-tileimporter-1yyk-pmtbn 0/1 Completed 0 4d1h
kubectl -n kosmos-system-restricted get pods | grep iad-os
NAME READY STATUS RESTARTS AGE
iad-os-shared-86597bbd74-rps7p 1/1 Running 0 12d

Configuration Initiale​

Dimensionnement​

Le service Technique est composé de 3 pods minimum :

  • 1 pod pour le manager
  • 1 pod pour les donnĂ©es
  • 1 pod pour le dashboard

Le service Métier est composé de 8 pods minimum :

  • 3 pods pour les managers
  • 3 pods pour les donnĂ©es
  • 1 pod pour le dashboard
  • 1 pod pour l'IAD

Interfaces​

Les pods OpenSearch communiquent sur le réseau kubernetes. Les composants internes à Kubernetes communiquent directement via le service.

Fichiers clés​

Répertoire d'installation de Opensearch : /usr/share/opensearch

Fichiers de configuration​

Répertoire des fichiers de configuration : /usr/share/opensearch/configuration

NomDescription succincte
opensearch.ymlParamètres de configuration
jvm.optionsOptions pour la JVM utilisée
log4j2.propertiesconfigure le logging

Logs​

Répertoire des fichiers de logs : /usr/share/opensearch/logs

NomDescription succincte
gc.loginformations sur la collecte des ordures par la JVM

Binaires​

Répertoire des fichiers binaires : /usr/share/opensearch/bin

NomDescription succincte
opensearchinitialise le processus, en utilisant les paramètres de configuration définis dans les fichiers de configuration
opensearch-pluginUtilisé pour installer, désinstaller, lister, et gérer les plugins d'OpenSearch
opensearch-sql-cliUtilitaire en ligne de commande pour exécuter des requêtes SQL sur OpenSearch

Combinaison de défaillance​

Les données stockées dans le cluster peuvent être perdues dans certaines situations :

  • En cas de suppression/perte de tous les noeuds kubernetes constituant le cluster avec leurs disques attachĂ©s
  • En cas de nettoyage forcĂ© (par exemple avec rm -rf ou destruction des pv) des volumes attachĂ©s aux pods

Statut des Services OpenSearch​

Se connecter sur le portail d'Administration avec un Administrateur Système.

Cliquer sur la tuile Rancher.

Démarrer un Kubectl Shell.

Service Technique​

Exécuter les commandes suivantes pour le Service Technique :

kubectl get pods -n kosmos-search
kubectl get svc -n kosmos-search

Le statut des pods OpenSearch doit ĂŞtre Running:

kubectl get pods -n kosmos-search
NAME READY STATUS RESTARTS AGE
keycloak-import-keycloakimporter-opensearch-beb4si-7q5h8 0/1 Completed 0 70m
opensearch-cluster-data-0 1/1 Running 0 7d11h
opensearch-cluster-manager-0 1/1 Running 0 10d
opensearch-dashboards-65fdc945d-5wblt 1/1 Running 0 17d
tileimporter-opensearch-kosmos-tileimporter-on3n-bkh88 0/1 Completed 0 70m

Les services suivants doivent être présents:

kubectl get svc -n kosmos-search
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
opensearch-cluster-data ClusterIP 10.43.11.207 <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-cluster-data-headless ClusterIP None <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-cluster-manager ClusterIP 10.43.220.44 <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-cluster-manager-headless ClusterIP None <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-dashboards ClusterIP 10.43.180.228 <none> 5601/TCP,9601/TCP 17d

Service Métier​

Exécuter les commandes suivantes pour le Service Métier :

kubectl get pods -n shared-search
kubectl get svc -n shared-search

Le statut des pods OpenSearch doit ĂŞtre Running:

kubectl get pods -n shared-search
NAME READY STATUS RESTARTS AGE
keycloak-import-keycloakimporter-opensearch-shared-hidjhf-z7cvk 0/1 Completed 0 74m
opensearch-cluster-data-0 1/1 Running 0 27h
opensearch-cluster-data-1 1/1 Running 0 27h
opensearch-cluster-data-2 1/1 Running 0 27h
opensearch-cluster-manager-0 1/1 Running 0 171m
opensearch-cluster-manager-1 1/1 Running 0 171m
opensearch-cluster-manager-2 1/1 Running 0 171m
opensearch-dashboards-shared-b846447fb-sg85b 1/1 Running 0 115m
tileimporter-opensearch-shared-kosmos-tileimporter-qb2d-7bxp8 0/1 Completed 0 73m

Les services suivants doivent être présents:

kubectl get svc -n shared-search
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
opensearch-cluster-data ClusterIP 10.43.128.101 <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-cluster-data-headless ClusterIP None <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-cluster-manager ClusterIP 10.43.198.141 <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-cluster-manager-headless ClusterIP None <none> 9200/TCP,9300/TCP,9600/TCP 17d
opensearch-dashboards-shared ClusterIP 10.43.34.42 <none> 5601/TCP,9601/TCP 17d

Se connecter​

info

Les commandes utilisés dans ce chapître illustrent l'accès au Service Métier (namespace shared-search). Elles sont applicables également pour le Service Technique (en positionnant le namespace kosmos-search).

Les paramètres de connexion du compte technique d'accès au cluster Opensearch sont conservés dans un secret et obtenus de la façon suivante :

echo "admin login: $(kubectl -n shared-search get secret opensearch-security-secret -o jsonpath='{.data.OPENSEARCH_INITIAL_ADMIN_USERNAME}' | base64 -d )"
echo "admin password: $(kubectl -n shared-search get secret opensearch-security-secret -o jsonpath='{.data.OPENSEARCH_INITIAL_ADMIN_PASSWORD}' | base64 -d )"

D'une manière générale, les manipulations de données et les actions d'administration sont réalisées via l'outil curl sous Linux.

Pour cela, l'Administrateur se connecte sur le pod du cluster OpenSearch et saisit ensuite les différentes commandes curl.

Se connecter au pod du cluster OpenSearch :

kubectl -n shared-search exec -it opensearch-cluster-manager-0 -c opensearch -- bash
[opensearch@opensearch-cluster-manager-0 ~]$

L'administrateur est connecté, il peut exécuter ses commandes.

Consulter la liste des index​

[opensearch@opensearch-cluster-manager-0 ~]$ curl -k -XGET -u admin "https://localhost:9200/_cat/indices?pretty"
Enter host password for user 'admin':
green open .kibana_-927266439_rmladm_1 yQkuroEwQdO15ORhnsltdA 1 1 1 0 10.3kb 5.1kb
green open .ql-datasources 71KtKKoZQVuIMfZgvt8hKQ 1 2 0 0 624b 208b
green open datahub_structuredpropertyindex_v2 epO2shB1SXeh309aydNnpw 1 0 0 0 208b 208b
green open escrim-indexes_knowledge vSP8JfwCRqaICGMJil9sPg 10 2 0 0 6kb 2kb
green open .opendistro_security xo5_lRM1Suems6zvBBkCKA 1 2 9 0 78.3kb 26.1kb
green open datahub_dataprocessinstanceindex_v2 4hEoO-GvRTePho0lALG_7w 1 0 0 0 208b 208b
green open datahub_queryindex_v2 I8tAIV99Rdez6Yocuepb0Q 1 0 0 0 208b 208b
green open .kibana_-1086054742_dcyadmin_1 u6-2BzeBTnW4oxT-0_apbA 1 1 1 0 10.3kb 5.1kb
green open datahub_corpuserindex_v2 CwP7V9TDRPmXe0G1EDCNCg 1 0 6 1 66kb 66kb
green open datahub_corpgroupindex_v2 HJV8c7NnQW2i4suwy179Ug 1 0 0 0 208b 208b
green open datahub_datahub_usage_event-000001 pzn5eRpSS5OMTyUmPRk3wQ 1 1 253 0 545.5kb 253.3kb
green open .kibana_92668751_admin_1 lcDDEZtmRqOqP9kMToiRUQ 1 1 1 0 10.3kb 5.1kb
green open datahub_query_queryusagestatisticsaspect_v1 qxOOsY2DRsOuJO1SFsTk5g 1 0 0 0 208b 208b

[...]

Consulter les propriétés d'un index​

[opensearch@opensearch-cluster-manager-0 ~]$ curl -k -XGET -u admin "https://localhost:9200/datahub_queryindex_v2?pretty"
Enter host password for user 'admin':
{
"datahub_queryindex_v2" : {
"aliases" : { },
"mappings" : {
"properties" : {
"createdAt" : {
"type" : "date"
},
"createdBy" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword"
}
},
"analyzer" : "urn_component",
"search_analyzer" : "query_urn_component",
"search_quote_analyzer" : "quote_analyzer"
},
"entities" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword"
}
},
"analyzer" : "urn_component",
"search_analyzer" : "query_urn_component",
"search_quote_analyzer" : "quote_analyzer"
},
"lastModifiedAt" : {
"type" : "date"
},

[...]

Consulter les données d'un index​

Par exemple, ici on consulte l'index escrim-indexes_knowledge:

[opensearch@opensearch-cluster-manager-0 ~]$ curl -k -XGET -u admin "https://localhost:9200/escrim-indexes_knowledge/_search?pretty"
Enter host password for user 'admin':
{
"took" : 28,
"timed_out" : false,
"_shards" : {
"total" : 10,
"successful" : 10,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 0,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
}
}

Autres commandes​

Se reporter Ă  la documentation OpenSearch pour utiliser d'autres commandes.

Consulter les politiques​

astuce

Stocker le mot de passe dans une variable sans laisser de trace dans l'historique.

read -s PASSWORD

Exécuter la requête HTTP​

kubectl -n shared-search exec -it opensearch-cluster-manager-0 -c opensearch -- curl -k -XGET -u admin:${PASSWORD} "https://localhost:9200/_plugins/_ism/policies?pretty"
{
"policies" : [
{
"_id" : "datahub_datahub_usage_event_policy",
"_seq_no" : 75174,
"_primary_term" : 2,
"policy" : {
"policy_id" : "datahub_datahub_usage_event_policy",
"description" : "Datahub Usage Event Policy",
"last_updated_time" : 1758296048483,
"schema_version" : 21,
"error_notification" : null,
"default_state" : "Rollover",
"states" : [
{
"name" : "Rollover",
"actions" : [
{
"retry" : {
"count" : 3,
"backoff" : "exponential",
"delay" : "1m"
},
"rollover" : {
"min_size" : "5gb",
"copy_alias" : false
}
}
],
"transitions" : [
{
"state_name" : "ReadOnly",
"conditions" : {
"min_index_age" : "7d"
}
}
]
},
{
"name" : "ReadOnly",
"actions" : [
{
"retry" : {
"count" : 3,
"backoff" : "exponential",
"delay" : "1m"
},
"read_only" : { }
}
],
"transitions" : [ ]
}
],
"ism_template" : [
{
"index_patterns" : [
"datahub_datahub_usage_event-*"
],
"priority" : 100,
"last_updated_time" : 1758296048483
}
]
}
}
],
"total_policies" : 1
}

Changement de configuration OIDC​

Si une mise à jour d'OpenSearch inclut un changement de configuration lié au plugin de sécurité (par exemple, la configuration OIDC), alors il faut faire un geste manuel pour appliquer les changements.

$ kubectl -n shared-search exec -it opensearch-cluster-manager-0 -- bash
[opensearch@opensearch-cluster-manager-0 ~]$ cd config/opensearch-security/
[opensearch@opensearch-cluster-manager-0 opensearch-security]$ ls
OPENSEARCH_INITIAL_ADMIN_PASSWORD action_groups.yml client_secret internal_users.yml roles_mapping.yml
OPENSEARCH_INITIAL_ADMIN_USERNAME client_id config.yml roles.yml tenants.yml
[opensearch@opensearch-cluster-manager-0 opensearch-security]$ ~/plugins/opensearch-security/tools/securityadmin.sh -icl -nhnv -cacert ~/config/certs-admin/ca.crt -cert ~/config/certs-admin/tls.crt -key ~/config/certs-admin/tls.key
**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755 **
**************************************************************************
Security Admin v7
Will connect to localhost:9200 ... done
Connected as "CN=opensearch-cluster-manager-admin.shared-search"
OpenSearch Version: 2.17.1
Contacting opensearch cluster 'opensearch' and wait for YELLOW clusterstate ...
Clustername: opensearch-cluster
Clusterstate: YELLOW
Number of nodes: 2
Number of data nodes: 1
.opendistro_security index already exists, so we do not need to create one.
Populate config from /usr/share/opensearch/config/opensearch-security
Will update '/config' with ./config.yml
SUCC: Configuration for 'config' created or updated
Will update '/roles' with ./roles.yml
SUCC: Configuration for 'roles' created or updated
Will update '/rolesmapping' with ./roles_mapping.yml
SUCC: Configuration for 'rolesmapping' created or updated
Will update '/internalusers' with ./internal_users.yml
SUCC: Configuration for 'internalusers' created or updated
Will update '/actiongroups' with ./action_groups.yml
SUCC: Configuration for 'actiongroups' created or updated
Will update '/tenants' with ./tenants.yml
SUCC: Configuration for 'tenants' created or updated
ERR: Seems ./nodes_dn.yml is not in OpenSearch Security 7 format: java.io.FileNotFoundException: ./nodes_dn.yml (No such file or directory)
ERR: Seems ./whitelist.yml is not in OpenSearch Security 7 format: java.io.FileNotFoundException: ./whitelist.yml (No such file or directory)
ERR: cannot upload configuration, see errors above
[opensearch@opensearch-cluster-manager-0 opensearch-security]$