diff --git a/docker/elasticsearch/Dockerfile.j2 b/docker/elasticsearch/Dockerfile.j2 index d886791..b80bdbe 100644 --- a/docker/elasticsearch/Dockerfile.j2 +++ b/docker/elasticsearch/Dockerfile.j2 @@ -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 diff --git a/service/elasticsearch-client.yaml b/service/elasticsearch-client.yaml new file mode 100644 index 0000000..a5bb209 --- /dev/null +++ b/service/elasticsearch-client.yaml @@ -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 diff --git a/service/elasticsearch-data.yaml b/service/elasticsearch-data.yaml new file mode 100644 index 0000000..c67ac91 --- /dev/null +++ b/service/elasticsearch-data.yaml @@ -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 diff --git a/service/elasticsearch.yaml b/service/elasticsearch.yaml deleted file mode 100644 index 1969012..0000000 --- a/service/elasticsearch.yaml +++ /dev/null @@ -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" diff --git a/service/files/defaults.yaml b/service/files/defaults.yaml index 176491e..2055f7e 100644 --- a/service/files/defaults.yaml +++ b/service/files/defaults.yaml @@ -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" diff --git a/service/files/elasticsearch.yml.j2 b/service/files/elasticsearch.yml.j2 index 6179552..1b2125d 100644 --- a/service/files/elasticsearch.yml.j2 +++ b/service/files/elasticsearch.yml.j2 @@ -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