Setting Up Elasticsearch Cluster on Kubernetes - Part 3 - Configuration File
February 14, 2018 - 2 min read
- Part 1 - Setting up Single Node Elasticsearch
- Part 2 - Setting up Kibana Service
- Part 3 - Kubernetes Configuration Files
Now that we have a single node elasticsearch service and kibana to monitor the cluster, lets try to capture the work so far into kubernetes configuration file.
Kubernetes Configuration File
Our current elasticsearch deployment configuration looks like:
apiVersion: apps/v1beta2 kind: Deployment metadata: name: elasticsearch spec: selector: matchLabels: component: elasticsearch template: metadata: labels: component: elasticsearch spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:6.2.1 env: - name: discovery.type value: single-node ports: - containerPort: 9200 name: http protocol: TCP
Our elasticsearch service configuration looks like:
apiVersion: v1 kind: Service metadata: name: elasticsearch labels: component: elasticsearch spec: type: LoadBalancer selector: component: elasticsearch ports: - name: http port: 9200 protocol: TCP
Let’s save these two configurations into a file called
elasticsearch_service.yaml respectively into a folder called
elasticsearch-k8s ├── elasticsearch_deployment.yaml └── elasticsearch_service.yaml
Let’s delete the elasticsearch deployment and service that was created before:
kubectl delete deployment elasticsearch kubectl delete service elasticsearch
To create the resources from the configuration files, run the command from the
kubectl create -f .
deployment "elasticsearch" created service "elasticsearch" created
Let’s do the same for kibana.
apiVersion: apps/v1beta2 kind: Deployment metadata: name: kibana spec: selector: matchLabels: run: kibana template: metadata: labels: run: kibana spec: containers: - name: kibana image: docker.elastic.co/kibana/kibana:6.2.1 env: - name: ELASTICSEARCH_URL value: http://elasticsearch:9200 - name: XPACK_SECURITY_ENABLED value: true ports: - containerPort: 5601 name: http protocol: TCP
apiVersion: v1 kind: Service metadata: name: kibana labels: run: kibana spec: type: LoadBalancer selector: run: kibana ports: - name: http port: 5601 protocol: TCP
Now you can easily delete and recreate these resource using the commands
kubectl delete -f . and
kubectl create -f . respectively.
In the next post of the series, I will try to change the elasticsearch deployment configuration into a statefulset.
Written by Harish H. Babu who lives and works in Cardiff engineering software things. You should follow him on Twitter