6.3. Configuration de l'entrepôt de données
Le sous-système de journalisation de Red Hat OpenShift utilise Elasticsearch 6 (ES) pour stocker et organiser les données de journalisation.
Vous pouvez apporter des modifications à votre magasin de journaux, notamment :
- stockage pour votre cluster Elasticsearch
- la réplication de la pile de données entre les nœuds de données du cluster, de la réplication complète à l'absence de réplication
- accès externe aux données Elasticsearch
Elasticsearch est une application gourmande en mémoire. Chaque nœud Elasticsearch a besoin d'au moins 16G de mémoire pour les requêtes et les limites de mémoire, sauf si vous spécifiez autre chose dans la ressource personnalisée ClusterLogging
. L'ensemble initial de nœuds OpenShift Container Platform peut ne pas être assez grand pour supporter le cluster Elasticsearch. Vous devez ajouter des nœuds supplémentaires au cluster OpenShift Container Platform pour qu'il fonctionne avec la mémoire recommandée ou supérieure, jusqu'à un maximum de 64G pour chaque nœud Elasticsearch.
Chaque nœud Elasticsearch peut fonctionner avec un paramètre de mémoire inférieur, bien que cela ne soit pas recommandé pour les environnements de production.
6.3.1. Transmission des journaux d'audit à la base de données des journaux
Par défaut, OpenShift Logging ne stocke pas les logs d'audit dans le log store interne d'OpenShift Container Platform Elasticsearch. Vous pouvez envoyer les logs d'audit vers ce log store afin, par exemple, de les visualiser dans Kibana.
Pour envoyer les journaux d'audit au magasin de journaux Elasticsearch interne par défaut, par exemple pour afficher les journaux d'audit dans Kibana, vous devez utiliser l'API Log Forwarding.
Le magasin interne de journaux Elasticsearch de OpenShift Container Platform ne fournit pas de stockage sécurisé pour les journaux d'audit. Vérifiez que le système vers lequel vous transmettez les journaux d'audit est conforme aux réglementations de votre organisation et du gouvernement et qu'il est correctement sécurisé. Le sous-système de journalisation de Red Hat OpenShift n'est pas conforme à ces réglementations.
Procédure
Pour utiliser l'API Log Forward afin de transmettre les journaux d'audit à l'instance Elasticsearch interne :
Créez ou modifiez un fichier YAML qui définit l'objet
ClusterLogForwarder
CR :Créez un CR pour envoyer tous les types de journaux à l'instance Elasticsearch interne. Vous pouvez utiliser l'exemple suivant sans y apporter de modifications :
apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance namespace: openshift-logging spec: pipelines: 1 - name: all-to-default inputRefs: - infrastructure - application - audit outputRefs: - default
- 1
- Un pipeline définit le type de journaux à transmettre à l'aide de la sortie spécifiée. La sortie par défaut transmet les journaux à l'instance Elasticsearch interne.
NoteVous devez spécifier les trois types de journaux dans le pipeline : application, infrastructure et audit. Si vous ne spécifiez pas un type de journal, ces journaux ne sont pas stockés et seront perdus.
Si vous disposez d'un CR
ClusterLogForwarder
existant, ajoutez un pipeline à la sortie par défaut des journaux d'audit. Il n'est pas nécessaire de définir la sortie par défaut. Par exemple, il n'est pas nécessaire de définir la sortie par défaut :apiVersion: "logging.openshift.io/v1" kind: ClusterLogForwarder metadata: name: instance namespace: openshift-logging spec: outputs: - name: elasticsearch-insecure type: "elasticsearch" url: http://elasticsearch-insecure.messaging.svc.cluster.local insecure: true - name: elasticsearch-secure type: "elasticsearch" url: https://elasticsearch-secure.messaging.svc.cluster.local secret: name: es-audit - name: secureforward-offcluster type: "fluentdForward" url: https://secureforward.offcluster.com:24224 secret: name: secureforward pipelines: - name: container-logs inputRefs: - application outputRefs: - secureforward-offcluster - name: infra-logs inputRefs: - infrastructure outputRefs: - elasticsearch-insecure - name: audit-logs inputRefs: - audit outputRefs: - elasticsearch-secure - default 1
- 1
- Ce pipeline envoie les journaux d'audit à l'instance Elasticsearch interne en plus d'une instance externe.
Ressources complémentaires
- Pour plus d'informations sur l'API de transfert de journaux, voir Transfert de journaux à l'aide de l'API de transfert de journaux.
6.3.2. Configuration de la durée de conservation des journaux
Vous pouvez configurer une adresse retention policy qui spécifie la durée pendant laquelle le magasin de logs Elasticsearch par défaut conserve des index pour chacune des trois sources de logs : logs d'infrastructure, logs d'application et logs d'audit.
Pour configurer la politique de rétention, vous définissez un paramètre maxAge
pour chaque source de journal dans la ressource personnalisée (CR) ClusterLogging
. La CR applique ces valeurs au calendrier de reconduction d'Elasticsearch, qui détermine quand Elasticsearch supprime les index reconduits.
Elasticsearch effectue le roulement d'un index, en déplaçant l'index actuel et en créant un nouvel index, lorsqu'un index répond à l'une des conditions suivantes :
-
L'index est plus ancien que la valeur
rollover.maxAge
dans le CRElasticsearch
. - La taille de l'index est supérieure à 40 Go × le nombre de disques primaires.
- Le nombre de documents de l'index est supérieur à 40960 Ko × le nombre de disques primaires.
Elasticsearch supprime les index prorogés en fonction de la politique de rétention que vous configurez. Si vous ne créez pas de politique de rétention pour les sources de logs, les logs sont supprimés par défaut au bout de sept jours.
Conditions préalables
- Le sous-système de journalisation pour Red Hat OpenShift et l'opérateur OpenShift Elasticsearch doivent être installés.
Procédure
Pour configurer la durée de conservation des journaux :
Editer le CR
ClusterLogging
pour ajouter ou modifier le paramètreretentionPolicy
:apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" ... spec: managementState: "Managed" logStore: type: "elasticsearch" retentionPolicy: 1 application: maxAge: 1d infra: maxAge: 7d audit: maxAge: 7d elasticsearch: nodeCount: 3 ...
- 1
- Spécifiez la durée pendant laquelle Elasticsearch doit conserver chaque source de journal. Saisissez un nombre entier et une désignation de temps : semaines(w), heures(h/H), minutes(m) et secondes(s). Par exemple,
1d
pour un jour. Les journaux antérieurs àmaxAge
sont supprimés. Par défaut, les journaux sont conservés pendant sept jours.
Vous pouvez vérifier les paramètres dans la ressource personnalisée (CR)
Elasticsearch
.Par exemple, l'opérateur de journalisation Red Hat OpenShift a mis à jour le document suivant
Elasticsearch
CR pour configurer une politique de rétention qui inclut des paramètres permettant de renouveler les index actifs pour les journaux d'infrastructure toutes les huit heures et les index renouvelés sont supprimés sept jours après le renouvellement. OpenShift Container Platform vérifie toutes les 15 minutes si les index doivent être reconduits.apiVersion: "logging.openshift.io/v1" kind: "Elasticsearch" metadata: name: "elasticsearch" spec: ... indexManagement: policies: 1 - name: infra-policy phases: delete: minAge: 7d 2 hot: actions: rollover: maxAge: 8h 3 pollInterval: 15m 4 ...
- 1
- Pour chaque source de logs, la politique de conservation indique quand supprimer et reconduire les logs de cette source.
- 2
- Lorsque OpenShift Container Platform supprime les index reportés. Ce paramètre est le
maxAge
que vous avez défini dans le CRClusterLogging
. - 3
- L'âge de l'index pour OpenShift Container Platform à prendre en compte lors de la reconduction des index. Cette valeur est déterminée par la valeur
maxAge
que vous avez définie dans le CRClusterLogging
. - 4
- Quand OpenShift Container Platform vérifie si les indices doivent être reconduits. Ce paramètre est par défaut et ne peut pas être modifié.
NoteLa modification de la CR
Elasticsearch
n'est pas prise en charge. Toutes les modifications apportées aux politiques de conservation doivent être effectuées dans le CRClusterLogging
.L'OpenShift Elasticsearch Operator déploie un job cron pour rouler les index pour chaque mapping en utilisant la politique définie, planifiée en utilisant le
pollInterval
.$ oc get cronjob
Exemple de sortie
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 4s elasticsearch-im-audit */15 * * * * False 0 <none> 4s elasticsearch-im-infra */15 * * * * False 0 <none> 4s
6.3.3. Configuration des demandes de CPU et de mémoire pour le log store
Chaque spécification de composant permet d'ajuster les demandes de CPU et de mémoire. Vous ne devriez pas avoir à ajuster manuellement ces valeurs car l'OpenShift Elasticsearch Operator définit des valeurs suffisantes pour votre environnement.
Dans les clusters à grande échelle, la limite de mémoire par défaut pour le conteneur de proxy Elasticsearch peut ne pas être suffisante, ce qui entraîne l'annulation du conteneur de proxy (OOMKilled). Si vous rencontrez ce problème, augmentez les demandes et les limites de mémoire pour le proxy Elasticsearch.
Chaque nœud Elasticsearch peut fonctionner avec un paramètre de mémoire inférieur, bien que cela soit recommandé pour les déploiements en production ( not ). Pour une utilisation en production, vous ne devriez pas avoir moins que les 16Gi par défaut alloués à chaque pod. Il est préférable d'allouer autant de mémoire que possible, jusqu'à 64Gi par pod.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Modifiez la ressource personnalisée (CR)
ClusterLogging
dans le projetopenshift-logging
:$ oc edit ClusterLogging instance
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" .... spec: logStore: type: "elasticsearch" elasticsearch:1 resources: limits: 2 memory: "32Gi" requests: 3 cpu: "1" memory: "16Gi" proxy: 4 resources: limits: memory: 100Mi requests: memory: 100Mi
- 1
- Spécifiez les demandes de CPU et de mémoire pour Elasticsearch si nécessaire. Si vous laissez ces valeurs vides, OpenShift Elasticsearch Operator définit des valeurs par défaut qui devraient être suffisantes pour la plupart des déploiements. Les valeurs par défaut sont
16Gi
pour la demande de mémoire et1
pour la demande de CPU. - 2
- Quantité maximale de ressources qu'un module peut utiliser.
- 3
- Les ressources minimales requises pour planifier un pod.
- 4
- Spécifiez les demandes de CPU et de mémoire pour le proxy Elasticsearch si nécessaire. Si vous laissez ces valeurs vides, OpenShift Elasticsearch Operator définit des valeurs par défaut qui sont suffisantes pour la plupart des déploiements. Les valeurs par défaut sont
256Mi
pour la demande de mémoire et100m
pour la demande de CPU.
Lors de l'ajustement de la quantité de mémoire Elasticsearch, la même valeur doit être utilisée pour requests
et limits
.
Par exemple :
resources: limits: 1 memory: "32Gi" requests: 2 cpu: "8" memory: "32Gi"
Kubernetes adhère généralement à la configuration du nœud et ne permet pas à Elasticsearch d'utiliser les limites spécifiées. En définissant la même valeur pour requests
et limits
, vous vous assurez qu'Elasticsearch peut utiliser la mémoire que vous souhaitez, en supposant que le nœud dispose de la mémoire nécessaire.
6.3.4. Configuration de la politique de réplication pour le magasin de journaux
Vous pouvez définir comment les shards Elasticsearch sont répliqués sur les nœuds de données du cluster.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Modifiez la ressource personnalisée (CR)
ClusterLogging
dans le projetopenshift-logging
:$ oc edit clusterlogging instance
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" .... spec: logStore: type: "elasticsearch" elasticsearch: redundancyPolicy: "SingleRedundancy" 1
- 1
- Spécifiez une politique de redondance pour les shards. La modification est appliquée lors de l'enregistrement des changements.
- FullRedundancy. Elasticsearch réplique entièrement les shards primaires de chaque index sur chaque nœud de données. Cette méthode offre la plus grande sécurité, mais au prix de la plus grande quantité de disque nécessaire et de la plus faible performance.
- MultipleRedundancy. Elasticsearch réplique entièrement les shards primaires de chaque index sur la moitié des nœuds de données. Cela permet d'obtenir un bon compromis entre sécurité et performance.
- SingleRedundancy. Elasticsearch fait une copie des shards primaires pour chaque index. Les logs sont toujours disponibles et récupérables tant qu'il existe au moins deux nœuds de données. Meilleure performance que MultipleRedundancy, lors de l'utilisation de 5 nœuds ou plus. Vous ne pouvez pas appliquer cette politique aux déploiements d'un seul nœud Elasticsearch.
- ZeroRedundancy. Elasticsearch n'effectue pas de copies des shards primaires. Les journaux peuvent être indisponibles ou perdus en cas d'arrêt ou de défaillance d'un nœud. Utilisez ce mode si vous êtes plus préoccupé par les performances que par la sécurité, ou si vous avez mis en œuvre votre propre stratégie de sauvegarde/restauration sur disque/PVC.
Le nombre d'unités primaires pour les modèles d'index est égal au nombre de nœuds de données Elasticsearch.
6.3.5. Réduire la taille des pods Elasticsearch
La réduction du nombre de pods Elasticsearch dans votre cluster peut entraîner une perte de données ou une dégradation des performances d'Elasticsearch.
Si vous réduisez l'échelle, vous devez réduire l'échelle d'un pod à la fois et permettre au cluster de rééquilibrer les shards et les réplicas. Une fois que l'état de santé d'Elasticsearch est revenu à green
, vous pouvez procéder à une réduction d'échelle pour un autre module.
Si votre cluster Elasticsearch est défini sur ZeroRedundancy
, vous ne devez pas réduire vos pods Elasticsearch.
6.3.6. Configuration du stockage persistant pour le magasin de journaux
Elasticsearch nécessite un stockage persistant. Plus le stockage est rapide, plus les performances d'Elasticsearch sont élevées.
L'utilisation du stockage NFS en tant que volume ou volume persistant (ou via un NAS tel que Gluster) n'est pas prise en charge pour le stockage Elasticsearch, car Lucene s'appuie sur un comportement du système de fichiers que NFS ne fournit pas. Une corruption des données et d'autres problèmes peuvent survenir.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Modifiez la CR
ClusterLogging
pour spécifier que chaque nœud de données dans le cluster est lié à une revendication de volume persistant.apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" # ... spec: logStore: type: "elasticsearch" elasticsearch: nodeCount: 3 storage: storageClassName: "gp2" size: "200G"
Cet exemple précise que chaque nœud de données du cluster est lié à une réclamation de volume persistant qui demande "200G" de stockage AWS General Purpose SSD (gp2).
Si vous utilisez un volume local pour le stockage persistant, n'utilisez pas de volume de blocs bruts, qui est décrit avec volumeMode: block
dans l'objet LocalVolume
. Elasticsearch ne peut pas utiliser de volumes de blocs bruts.
6.3.7. Configuration du magasin de journaux pour le stockage de emptyDir
Vous pouvez utiliser emptyDir avec votre log store, ce qui crée un déploiement éphémère dans lequel toutes les données d'un pod sont perdues au redémarrage.
Lorsque vous utilisez emptyDir, si le stockage des journaux est redémarré ou redéployé, vous perdrez des données.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Modifiez le CR
ClusterLogging
pour spécifier emptyDir :spec: logStore: type: "elasticsearch" elasticsearch: nodeCount: 3 storage: {}
6.3.8. Redémarrage d'un cluster Elasticsearch en continu
Effectuez un redémarrage progressif lorsque vous modifiez la carte de configuration elasticsearch
ou l'une des configurations de déploiement elasticsearch-*
.
En outre, il est recommandé de procéder à un redémarrage progressif si les nœuds sur lesquels fonctionne un pod Elasticsearch doivent être redémarrés.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Pour effectuer un redémarrage progressif de la grappe :
Modification du projet
openshift-logging
:$ oc project openshift-logging
Obtenir les noms des pods Elasticsearch :
$ oc get pods -l component=elasticsearch-
Réduire les pods collecteurs afin qu'ils cessent d'envoyer de nouveaux journaux à Elasticsearch :
$ oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "false"}}}}}'
Effectuer un shard synced flush à l'aide de l'outil OpenShift Container Platform es_util pour s'assurer qu'il n'y a pas d'opérations en attente d'écriture sur le disque avant l'arrêt :
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_flush/synced" -XPOST
Par exemple :
$ oc exec -c elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_flush/synced" -XPOST
Exemple de sortie
{"_shards":{"total":4,"successful":4,"failed":0},".security":{"total":2,"successful":2,"failed":0},".kibana_1":{"total":2,"successful":2,"failed":0}}
Empêcher l'équilibrage des shards lors de l'arrêt volontaire des nœuds à l'aide de l'outil es_util d'OpenShift Container Platform :
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent" : { "cluster.routing.allocation.enable" : \N- "primaries\N" } }'
Par exemple :
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'
Exemple de sortie
{"acknowledged":true,"persistent":{"cluster":{"routing":{"allocation":{"enable":"primaries"}}}},"transient":
Une fois la commande terminée, pour chaque déploiement que vous avez pour un cluster ES :
Par défaut, le cluster Elasticsearch d'OpenShift Container Platform bloque les déploiements sur ses nœuds. Utilisez la commande suivante pour autoriser les déploiements et permettre au pod de récupérer les modifications :
oc rollout resume deployment/<deployment-name> $ oc rollout resume deployment/<deployment-name>
Par exemple :
$ oc rollout resume deployment/elasticsearch-cdm-0-1
Exemple de sortie
deployment.extensions/elasticsearch-cdm-0-1 resumed
Un nouveau pod est déployé. Une fois que le pod a un conteneur prêt, vous pouvez passer au déploiement suivant.
$ oc get pods -l component=elasticsearch-
Exemple de sortie
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj7 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr 2/2 Running 0 22h
Une fois les déploiements terminés, réinitialisez le pod pour interdire les déploiements :
oc rollout pause deployment/<deployment-name>
Par exemple :
$ oc rollout pause deployment/elasticsearch-cdm-0-1
Exemple de sortie
deployment.extensions/elasticsearch-cdm-0-1 paused
Vérifiez que le cluster Elasticsearch est dans un état
green
ouyellow
:$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query=_cluster/health?pretty=true
NoteSi vous avez effectué un déploiement sur le pod Elasticsearch que vous avez utilisé dans les commandes précédentes, le pod n'existe plus et vous avez besoin d'un nouveau nom de pod ici.
Par exemple :
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query=_cluster/health?pretty=true
{ "cluster_name" : "elasticsearch", "status" : "yellow", 1 "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 3, "active_primary_shards" : 8, "active_shards" : 16, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 1, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
- 1
- Assurez-vous que la valeur de ce paramètre est
green
ouyellow
avant de poursuivre.
- Si vous avez modifié la carte de configuration d'Elasticsearch, répétez ces étapes pour chaque module d'Elasticsearch.
Une fois que tous les déploiements de la grappe ont été effectués, réactivez l'équilibrage de la grappe :
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent" : { "cluster.routing.allocation.enable" : "tous" } }'
Par exemple :
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'
Exemple de sortie
{ "acknowledged" : true, "persistent" : { }, "transient" : { "cluster" : { "routing" : { "allocation" : { "enable" : "all" } } } } }
Augmenter les pods collecteurs pour qu'ils envoient de nouveaux journaux à Elasticsearch.
$ oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "true"}}}}}'
6.3.9. Exposer le service de stockage de logs en tant que route
Par défaut, le magasin de journaux qui est déployé avec le sous-système de journalisation pour Red Hat OpenShift n'est pas accessible depuis l'extérieur du cluster de journalisation. Vous pouvez activer un itinéraire avec terminaison de rechiffrement pour l'accès externe au service de stockage de journaux pour les outils qui accèdent à ses données.
En externe, vous pouvez accéder au log store en créant une route reencrypt, votre token OpenShift Container Platform et le certificat CA du log store installé. Accédez ensuite à un nœud hébergeant le service de stockage de journaux à l'aide d'une requête cURL contenant :
-
Les
Authorization: Bearer ${token}
- La route Elasticsearch reencrypt et une demande d'API Elasticsearch.
En interne, vous pouvez accéder au service de stockage de logs en utilisant l'IP du cluster de stockage de logs, que vous pouvez obtenir à l'aide de l'une des commandes suivantes :
$ oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
Exemple de sortie
172.30.183.229
$ oc get service elasticsearch -n openshift-logging
Exemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE elasticsearch ClusterIP 172.30.183.229 <none> 9200/TCP 22h
Vous pouvez vérifier l'adresse IP du cluster à l'aide d'une commande similaire à la suivante :
$ oc exec elasticsearch-cdm-oplnhinv-1-5746475887-fj2f8 -n openshift-logging -- curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://172.30.183.229:9200/_cat/health"
Exemple de sortie
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
- Vous devez avoir accès au projet pour pouvoir accéder aux journaux.
Procédure
Pour exposer le magasin de journaux à l'extérieur :
Modification du projet
openshift-logging
:$ oc project openshift-logging
Extraire le certificat de l'autorité de certification de la base de données et l'écrire dans le fichier admin-ca dans le fichier
$ oc extract secret/elasticsearch --to=. --keys=admin-ca
Exemple de sortie
admin-ca
Créez la route pour le service de stockage de journaux sous la forme d'un fichier YAML :
Créez un fichier YAML avec ce qui suit :
apiVersion: route.openshift.io/v1 kind: Route metadata: name: elasticsearch namespace: openshift-logging spec: host: to: kind: Service name: elasticsearch tls: termination: reencrypt destinationCACertificate: | 1
- 1
- Ajoutez le certificat de l'autorité de certification du magasin de journaux ou utilisez la commande de l'étape suivante. Il n'est pas nécessaire de définir les paramètres
spec.tls.key
,spec.tls.certificate
etspec.tls.caCertificate
requis par certains itinéraires reencrypt.
Exécutez la commande suivante pour ajouter le certificat de l'autorité de certification du magasin de journaux à l'itinéraire YAML créé à l'étape précédente :
$ cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
Créer l'itinéraire :
oc create -f <nom-de-fichier>.yaml
Exemple de sortie
route.route.openshift.io/elasticsearch created
Vérifier que le service Elasticsearch est exposé :
Obtenir le jeton de ce compte de service à utiliser dans la demande :
$ token=$(oc whoami -t)
Définissez la route elasticsearch que vous avez créée comme variable d'environnement.
$ routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
Pour vérifier que la route a été créée avec succès, exécutez la commande suivante qui accède à Elasticsearch via la route exposée :
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"
La réponse ressemble à ce qui suit :
Exemple de sortie
{ "name" : "elasticsearch-cdm-i40ktba0-1", "cluster_name" : "elasticsearch", "cluster_uuid" : "0eY-tJzcR3KOdpgeMJo-MQ", "version" : { "number" : "6.8.1", "build_flavor" : "oss", "build_type" : "zip", "build_hash" : "Unknown", "build_date" : "Unknown", "build_snapshot" : true, "lucene_version" : "7.7.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "<tagline>" : "<for search>" }