[WIP] Add elasticsearch support

Not tested WIP. Services separated on master, client and
data. Need to build and deploy it.

Change-Id: I0b9fbe28ab129ee38c14caf852249a45e582c7d0
This commit is contained in:
Peter Razumovsky 2017-03-13 11:13:27 +00:00
parent 39ba855c31
commit c9e3040cd0
6 changed files with 82 additions and 52 deletions

View File

@ -3,18 +3,24 @@ MAINTAINER {{ maintainer }}
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64/
ADD {{ url.elasticsearch.repo }}/elasticsearch-{{ elasticsearch_version }}.tar.gz /tmp/elasticsearch.tar.gz
RUN apt-get -y install --no-install-recommends -t jessie-backports openjdk-8-jre \
&& curl https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/{{ elasticsearch_version }}/elasticsearch-{{ elasticsearch_version }}.deb -o /tmp/elasticsearch.deb \
&& dpkg -i /tmp/elasticsearch.deb \
&& rm -f /tmp/elasticsearch.deb \
&& apt-get clean
RUN usermod -a -G microservices elasticsearch \
&& chown -R elasticsearch: /usr/share/elasticsearch
RUN useradd --user-group elasticsearch \
&& usermod -a -G microservices elasticsearch \
&& cd /usr/share \
&& tar xf /tmp/elasticsearch.tar.gz \
&& rm /tmp/elasticsearch.tar.gz \
&& mv elasticsearch-{{ elasticsearch_version }} elasticsearch \
&& chown -R elasticsearch:elasticsearch /usr/share/elasticsearch
# by default elasticsearch shell is /bin/false, we need
# /bin/bash to run elasticsearch as non-root
# https://discuss.elastic.co/t/running-as-non-root-user-service-wrapper-has-changed/7863
RUN usermod -s /bin/bash elasticsearch -d /usr/share/elasticsearch
RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install io.fabric8:elasticsearch-cloud-kubernetes:5.2.2
USER elasticsearch

View File

@ -0,0 +1,23 @@
dsl_version: 0.8.0
service:
name: elasticsearch-client
headless: true
ports:
- {{ elasticsearch.port }}
- {{ elasticsearch.cluster_port }}
containers:
- name: elasticsearch-client
image: elasticsearch
env:
- name: NODE_DATA
value: "false"
- name: NODE_MASTER
value: "false"
daemon:
files:
- elasticsearch.yml
command: /usr/share/elasticsearch/bin/elasticsearch
files:
elasticsearch.yml:
path: /usr/share/elasticsearch/config/elasticsearch.yml
content: elasticsearch.yml.j2

View File

@ -0,0 +1,28 @@
dsl_version: 0.8.0
service:
name: elasticsearch-data
headless: true
ports:
- {{ elasticsearch.port }}
- {{ elasticsearch.cluster_port }}
containers:
- name: elasticsearch-data
image: elasticsearch
volumes:
- name: elasticsearch-data
path: /usr/share/elasticsearch/data
type: empty-dir
readOnly: false
env:
- name: NODE_DATA
value: "true"
- name: NODE_MASTER
value: "false"
daemon:
files:
- elasticsearch.yml
command: /usr/share/elasticsearch/bin/elasticsearch
files:
elasticsearch.yml:
path: /usr/share/elasticsearch/config/elasticsearch.yml
content: elasticsearch.yml.j2

View File

@ -1,36 +0,0 @@
dsl_version: 0.7.0
service:
name: elasticsearch
ports:
- {{ elasticsearch.port }}
- {{ elasticsearch.cluster_port }}
containers:
- name: elasticsearch
image: elasticsearch
daemon:
command: /usr/share/elasticsearch/bin/elasticsearch
files:
- elasticsearch.yml
- name: cron
image: cron
daemon:
command: cron -f
files:
- es-curator-config
- es-curator-action-delete-indice
- es-curator-cronjob
files:
elasticsearch.yml:
path: /usr/share/elasticsearch/config/elasticsearch.yml
content: elasticsearch.yml.j2
es-curator-config:
path: /etc/curator/curator.yaml
content: curator.yaml.j2
es-curator-action-delete-indice:
path: /etc/curator/action-delete-indice.yaml
content: curator-action-delete-indice.yaml.j2
es-curator-cronjob:
path: /etc/cron.d/curator
content: curator-cronjob
perm: "0644"

View File

@ -5,6 +5,12 @@ configs:
cluster_port:
cont: 9300
retention_period: 30
namespace: ccp
url:
elasticsearch:
repo: https://artifacts.elastic.co/downloads/elasticsearch
versions:
elasticsearch_version: "2.4.0"
elasticsearch_version: "5.2.2"
elasticsearch_curator_version: "4.1.0"

View File

@ -1,11 +1,14 @@
node.name: "{{ network_topology["private"]["address"] }}"
network.host: [ "127.0.0.1", "{{ network_topology["private"]["address"] }}" ]
cluster.name: "ELASTIC"
node.master: true
node.data: true
gateway.expected_nodes: 1
node.data: ${NODE_DATA}
node.master: ${NODE_MASTER}
path.conf: "/etc/elasticsearch"
path.data: "/var/lib/elasticsearch/data"
path.logs: "/var/log/elasticsearch"
path.scripts: "/etc/elasticsearch/scripts"
network.host: 0.0.0.0
cloud:
kubernetes:
service: elasticsearch
namespace: {{ namespace }}
discovery:
type: kubernetes
plugin.mandatory: discovery-kubernetes