foreword

Because my website needs to do full-text search function, I use mongodb as the database, but considering that the amount of data in the later stage is very large and the user experience has to keep up, so I am going to start elasticsearch as my on-site search, and now share it with Everyone.

Install

Friends who have read my article should know that helm3 has been used to install redis and rabbitmq before, so the routine is the same, let's search elasticsearch and kibana first.

Order:

 helm search repo elasticsearch
helm search repo kibana

output:

 NAME                             CHART VERSION    APP VERSION    DESCRIPTION
bitnami/elasticsearch            18.2.9           8.2.2          Elasticsearch is a distributed search and analy...
elastic/elasticsearch            7.17.3           7.17.3         Official Elastic helm chart for Elasticsearch
stable/elasticsearch             1.32.5           6.8.6          DEPRECATED Flexible and powerful open source, d...
stable/elasticsearch-curator     2.2.3            5.7.6          DEPRECATED A Helm chart for Elasticsearch Curator
stable/elasticsearch-exporter    3.7.0            1.1.0          Elasticsearch stats exporter for Prometheus
bitnami/dataplatform-bp2         12.0.3           1.0.1          This Helm chart can be used for the automated d...
bitnami/grafana                  7.6.5            8.3.4          Grafana is an open source, feature rich metrics...
bitnami/kibana                   10.1.9           8.2.2          Kibana is an open source, browser based analyti...
elastic/eck-operator             2.2.0            2.2.0          A Helm chart for deploying the Elastic Cloud on...
stable/apm-server                2.1.7            7.0.0          DEPRECATED The server receives data from the El...
stable/dmarc2logstash            1.3.1            1.0.3          DEPRECATED Provides a POP3-polled DMARC XML rep...
stable/elastabot                 1.2.1            1.1.0          DEPRECATED A Helm chart for Elastabot - a Slack...
stable/elastalert                1.5.1            0.2.4          DEPRECATED ElastAlert is a simple framework for...
stable/fluentd                   2.5.3            v2.4.0         DEPRECATED A Fluentd Elasticsearch Helm chart f...
stable/kibana                    3.2.7            6.7.0          Kibana is an open source data visualization plu...
elastic/eck-operator-crds        2.2.0            2.2.0          A Helm chart for installing the ECK operator Cu...
 NAME                         CHART VERSION    APP VERSION    DESCRIPTION
bitnami/kibana               10.1.9           8.2.2          Kibana is an open source, browser based analyti...
elastic/kibana               7.17.3           7.17.3         Official Elastic helm chart for Kibana
stable/kibana                3.2.7            6.7.0          Kibana is an open source data visualization plu...
elastic/eck-operator         2.2.0            2.2.0          A Helm chart for deploying the Elastic Cloud on...
bitnami/dataplatform-bp2     12.0.3           1.0.1          This Helm chart can be used for the automated d...
elastic/eck-operator-crds    2.2.0            2.2.0          A Helm chart for installing the ECK operator Cu...

Then find the repo you want and pull it down. For example, I chose bitnami/elasticsearch and bitnami/kibana here, and then enter the following command:

Order:

 helm pull bitnami/elasticsearch
helm pull bitnami/kibana

After downloading, we first open the values.yaml file of elasticsearch. After checking, we set the configuration we want as follows:

elasticsearch values.yaml

 global:
  storageClass: "alicloud-cnfs-nas"
  elasticsearch:
    service:
      name: elasticsearch
      ports:
        restAPI: 9200
  kibanaEnabled: false
service:
  type: NodePort
master:
  replicaCount: 1
data:
  replicaCount: 1
coordinating:
  replicaCount: 1
ingest:
  replicaCount: 1

Note: Because I am using Alibaba Cloud's K8S, I use alicloud-cnfs for storageClass. The previous article mentioned how to install it. If you are interested, you can go and check it out. After that, I use 1 for the copy. The reason is also to save money. resource.

After the configuration is complete, let's install it. The command is as follows:

 helm install -f test-values.yaml test-elasticsearch bitnami/elasticsearch --namespace elasticsearch

output:

 NAME: test-elasticsearch
LAST DEPLOYED: Wed Jun 15 10:11:40 2022
NAMESPACE: elasticsearch
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: elasticsearch
CHART VERSION: 18.2.10
APP VERSION: 8.2.2

-------------------------------------------------------------------------------
 WARNING

    Elasticsearch requires some changes in the kernel of the host machine to
    work as expected. If those values are not set in the underlying operating
    system, the ES containers fail to boot with ERROR messages.

    More information about these requirements can be found in the links below:

      https://www.elastic.co/guide/en/elasticsearch/reference/current/file-descriptors.html
      https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html

    This chart uses a privileged initContainer to change those settings in the Kernel
    by running: sysctl -w vm.max_map_count=262144 && sysctl -w fs.file-max=65536

** Please be patient while the chart is being deployed **

  Elasticsearch can be accessed within the cluster on port 9200 at test-elasticsearch.elasticsearch.svc.cluster.local

  To access from outside the cluster execute the following commands:

    export NODE_PORT=$(kubectl get --namespace elasticsearch -o jsonpath="{.spec.ports[0].nodePort}" services test-elasticsearch)
    export NODE_IP=$(kubectl get nodes --namespace elasticsearch -o jsonpath="{.items[0].status.addresses[0].address}")
    curl http://$NODE_IP:$NODE_PORT/

This is installed. Next, we get the IP and PORT through the following commands. The purpose is to access the elasticsearch we have installed.

 # 获取端口
kubectl get --namespace elasticsearch -o jsonpath="{.spec.ports[0].nodePort}" services test-elasticsearch

# 获取IP
kubectl get nodes --namespace elasticsearch -o jsonpath="{.items[0].status.addresses[0].address}"

After completing the acquisition, we open the address and the following display will appear, which proves that the installation is successful.

 {
  "name" : "test-elasticsearch-coordinating-0",
  "cluster_name" : "elastic",
  "cluster_uuid" : "fd9jc0k3QY2E5wYHgcGNbA",
  "version" : {
    "number" : "8.2.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "9876968ef3c745186b94fdabd4483e01499224ef",
    "build_date" : "2022-05-25T15:47:06.259735307Z",
    "build_snapshot" : false,
    "lucene_version" : "9.1.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

After installation, let's install kibana, similar to installing elasticsearch, let's configure the values.yaml file from the pull

 service:
  type: NodePort
elasticsearch:
  hosts: [your-elasticsearch-ip]
  port: your-elasticsearch-port
persistence:
  storageClass: "alicloud-cnfs-nas"
  size: 10Gi

After configuration, we execute the following command:

 helm install -f test-values.yaml test-kibana bitnami/kibana --namespace elasticsearch

output:

 NAME: test-kibana
LAST DEPLOYED: Wed Jun 15 21:55:26 2022
NAMESPACE: elasticsearch
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kibana
CHART VERSION: 10.1.9
APP VERSION: 8.2.2

** Please be patient while the chart is being deployed **

1. Get the application URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace elasticsearch -o jsonpath="{.spec.ports[0].nodePort}" services test-kibana)
  export NODE_IP=$(kubectl get nodes --namespace elasticsearch -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT

WARNING: Kibana is externally accessible from the cluster but the dashboard does not contain authentication mechanisms. Make sure you follow the authentication guidelines in your Elastic stack.
+info https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-up-authentication.html

This is installed. Next, we get the IP and PORT through the following commands. The purpose is to access the elasticsearch we have installed.

 # 获取端口
kubectl get --namespace elasticsearch -o jsonpath="{.spec.ports[0].nodePort}" services test-kibana

# 获取IP
kubectl get nodes --namespace elasticsearch -o jsonpath="{.items[0].status.addresses[0].address}"

After completing the acquisition, we open the address and the following display will appear, which proves that the installation is successful, and now start your elasticsearch journey.

image.png

Summarize

1. Bitnami/elasticsearch has integrated kibana, it depends on whether you want to use the integrated or independent

quote

Springboot + ElasticSearch to build a blog retrieval system


Awbeci
3.1k 声望212 粉丝

Awbeci