ElasticSearch installation

Document version: 250. Automatically generated.

๐Ÿ“˜

Elasticsearch is a search engine based on the Lucene library.

It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.

ElasticSearch 7.17.18 is used as a storage for transcriptions of all conversations conducted with bots.

Our installation is designed to run inside the Kubernetes cluster.

Prerequisites

  • Kubernetes cluster
  • Helm (version 3 or higher)
  • Access to Automate HELM Charts repository charts.sentione.com is granted
  • Access to harbor-vm-proxy.sentione.com docker images repository is granted
  • Local-path-provisioner (this is optional, but highly reccomended for data persistence. It may also be replaced with other dynamic PV provisioner like OpenEBS)

Steps

Add helm repository

To add the helm repository, use:

helm repo add sentione-hub https://charts.sentione.com/repository/helm --username USERNAME --password PASSWORD

and fetch repository data:

helm repo update

Container images repo access

The chart is based on images available on harbor-vm-proxy.sentione.com which requires authorization. Secret should be created by;

kubectl create secret \
docker-registry sec-harbor-vm-proxy.sentione.com \
--docker-server=<PRIVATE_REPO_ADDRESS> \
--docker-username=<USER> \
--docker-password=<PASSOWRD> \
--docker-email=<EMAIL> \
--namespace <NAMESPACE>

Values preparation

Before deploying the chart prepare values.yaml file, according to this minimal template:

clusterDomain: cluster.local
elasticPassword: password
elasticUsername: elastic
replicas: 2
minimumMasterNodes: 1
volumeClaimTemplate:
  storageClassName: local-path

Elasticsearch cluster size
The default deployment creates a 2 replicas

replicas: n

Data persistence

Elasticsearch is used as a storage for transcriptions of all conversations conducted with bots.
We recommend not turning off persistence as it causes data loss.

Deployment

In order to deploy the chart run, while replacing $ELASTICSEARCH_NAMESPACE with the desired namespace in Kubernetes:

helm -n $ELASTICSEARCH_NAMESPACE upgrade --install elasticsearch sentione-hub/elasticsearch -f ./values.yaml --version 7.17.9-v2

Elasticsearch post-install

Copy elastic-stack-ca secret to namespace with sentione applications

kubectl get secret elastic-stack-ca --namespace=elasticsearch -o yaml | sed 's/namespace: .*/namespace: sentione/' | kubectl apply -f -