This is an automated email from the ASF dual-hosted git repository.

jjacob pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-sdap-nexus.git


The following commit(s) were added to refs/heads/master by this push:
     new 9439f1b  SDAP-215 Use k8s as Spark scheduler and create helm chart. 
Fix HTTP connection timeout bug. (#88)
9439f1b is described below

commit 9439f1bdfa6e99c600b0c0a6417576fa9ec26688
Author: Eamon Ford <[email protected]>
AuthorDate: Wed Jan 22 16:52:01 2020 -0800

    SDAP-215 Use k8s as Spark scheduler and create helm chart. Fix HTTP 
connection timeout bug. (#88)
---
 .gitignore                                         |   3 +
 analysis/conda-requirements.txt                    |  15 +++
 analysis/requirements.txt                          |  53 --------
 analysis/setup.py                                  |  42 +++----
 analysis/webservice/algorithms/TimeAvgMap.py       |   2 -
 analysis/webservice/algorithms/doms/domsconfig.ini |   2 +-
 analysis/webservice/webapp.py                      |  26 ++--
 data-access/nexustiles/config/datastores.ini       |   4 +-
 .../dao/{CassandraProxy.pyx => CassandraProxy.py}  |   0
 .../dao/{DynamoProxy.pyx => DynamoProxy.py}        |   0
 .../nexustiles/dao/{S3Proxy.pyx => S3Proxy.py}     |   0
 .../nexustiles/dao/{SolrProxy.pyx => SolrProxy.py} |   0
 data-access/requirements.txt                       |  46 +------
 data-access/setup.py                               |  24 ++--
 docker/nexus-webapp/Dockerfile                     |  90 ++++++++++++++
 docker/nexus-webapp/install_conda.sh               |  33 +++--
 docker/nexus-webapp/install_java.sh                |  25 ----
 docker/nexus-webapp/install_nexus.sh               |  35 ------
 docker/nexus-webapp/install_spark.sh               |  31 -----
 docker/nexus-webapp/mesos/agent/Dockerfile         |  31 -----
 .../nexus-webapp/mesos/agent/docker-entrypoint.sh  |  39 ------
 docker/nexus-webapp/mesos/base/Dockerfile          | 107 ----------------
 docker/nexus-webapp/mesos/base/install_mesos.sh    |  72 -----------
 docker/nexus-webapp/mesos/master/Dockerfile        |  30 -----
 docker/nexus-webapp/mesos/webapp/Dockerfile        |  24 ----
 .../nexus-webapp/mesos/webapp/docker-entrypoint.sh |  38 ------
 docker/nexus-webapp/standalone/Dockerfile          |  87 -------------
 .../nexus-webapp/standalone/docker-entrypoint.sh   |  40 ------
 helm/.gitignore                                    |   3 +
 helm/.helmignore                                   |  22 ++++
 helm/Chart.yaml                                    |   5 +
 helm/requirements.yaml                             |   6 +
 helm/templates/cassandra.yml                       |  99 +++++++++++++++
 helm/templates/ingress.yaml                        |  30 +++++
 helm/templates/onearth.yml                         |  13 ++
 helm/templates/root-webpage.yaml                   |  42 +++++++
 helm/templates/solr.yml                            | 121 ++++++++++++++++++
 helm/templates/spark-serviceaccount.yml            |  17 +++
 helm/templates/webapp.yaml                         |  48 ++++++++
 helm/templates/zookeeper.yml                       | 136 +++++++++++++++++++++
 helm/values.yaml                                   |  53 ++++++++
 41 files changed, 775 insertions(+), 719 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bb1c70f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.vscode
+*.code-workspace
+*.idea
\ No newline at end of file
diff --git a/analysis/conda-requirements.txt b/analysis/conda-requirements.txt
new file mode 100644
index 0000000..aa9fafb
--- /dev/null
+++ b/analysis/conda-requirements.txt
@@ -0,0 +1,15 @@
+tornado
+singledispatch
+pytz
+utm
+Shapely
+mock
+backports.functools_lru_cache
+netCDF4
+boto3
+pyproj<1.9.5
+Pillow
+GDAL>=3.0.2
+basemap
+scipy
+mpld3
\ No newline at end of file
diff --git a/analysis/requirements.txt b/analysis/requirements.txt
deleted file mode 100644
index 793208f..0000000
--- a/analysis/requirements.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-awscli==1.14.22
-backports-abc==0.4
-backports.functools-lru-cache==1.3
-backports.ssl-match-hostname==3.5.0.1
-basemap==1.0.7
-botocore==1.8.26
-boto3==1.5.12
-Cartopy==0.14.2
-cassandra-driver==3.7.1
-certifi==2016.2.28
-colorama==0.3.7
-configobj==5.0.6
-cycler==0.10.0
-Cython==0.24
-descartes==1.0.2
-docutils==0.14
-funcsigs==1.0.2
-futures==3.1.1
-GDAL==2.0.0
-Jinja2==2.8
-jmespath==0.9.3
-MarkupSafe==0.23
-matplotlib==1.5.1
-mock==2.0.0
-mpld3==0.2
-netCDF4==1.2.4
-nexus-data-access==0.32
-nexusproto==0.3
-numpy==1.11.2
-pbr==1.10.0
-pillow==5.0.0
-protobuf==2.6.1
-pyasn1==0.3.3
-pyface==4.5.2
-Pygments==2.1.3
-pyparsing==2.1.4
-pyproj==1.9.5.1
-pyshp==1.2.10
-python-dateutil==2.6.1
-pytz==2016.6.1
-PyYAML==3.12
-requests==2.11.0
-rsa==3.4.2
-s3transfer==0.1.10
-scipy==0.17.1
-Shapely==1.5.16
-singledispatch==3.4.0.3
-six==1.10.0
-solrpy==0.9.7
-tornado==4.3
-traits==4.5.0
-traitsui==4.5.1
-utm==0.4.1
diff --git a/analysis/setup.py b/analysis/setup.py
index 1a9f845..57089fc 100644
--- a/analysis/setup.py
+++ b/analysis/setup.py
@@ -15,44 +15,42 @@
 
 
 import setuptools
+from subprocess import check_call, CalledProcessError
 
 __version__ = '1.6'
 
+
+try:
+    check_call(['conda', 'install', '-y', '-c', 'conda-forge', '--file', 
'conda-requirements.txt'])
+except (CalledProcessError, IOError) as e:
+    raise EnvironmentError("Error installing conda packages", e)
+
+
 setuptools.setup(
     name="nexusanalysis",
     version=__version__,
-    url="https://github.jpl.nasa.gov/thuang/nexus";,
+    url="https://github.com/apache/incubator-sdap-nexus";,
 
     author="Team Nexus",
 
     description="NEXUS API.",
     long_description=open('README.md').read(),
 
-    packages=['webservice', 'webservice.algorithms', 
'webservice.algorithms.doms', 'webservice.algorithms_spark'],
-    package_data={'webservice': ['config/web.ini', 'config/algorithms.ini'],
-                  'webservice.algorithms.doms': ['domsconfig.ini']},
+    packages=[
+        'webservice',
+        'webservice.algorithms',
+        'webservice.algorithms.doms',
+        'webservice.algorithms_spark'
+    ],
+    package_data={
+        'webservice': ['config/web.ini', 'config/algorithms.ini'],
+        'webservice.algorithms.doms': ['domsconfig.ini']
+    },
     data_files=[
         ('static', ['static/index.html'])
     ],
     platforms='any',
-
-    install_requires=[
-        'nexus-data-access',
-        'tornado',
-        'singledispatch',
-        'pytz',
-        'cython',
-        'requests',
-        'utm',
-        'shapely',
-        'mock',
-        'backports.functools-lru-cache==1.3',
-        'netcdf4',
-        'boto3',
-        'pyproj==1.9.5.1',
-        'pillow==5.0.0'
-    ],
-
+    python_requires='~=2.7',
     classifiers=[
         'Development Status :: 1 - Pre-Alpha',
         'Intended Audience :: Developers',
diff --git a/analysis/webservice/algorithms/TimeAvgMap.py 
b/analysis/webservice/algorithms/TimeAvgMap.py
index eaa8408..3855f0b 100644
--- a/analysis/webservice/algorithms/TimeAvgMap.py
+++ b/analysis/webservice/algorithms/TimeAvgMap.py
@@ -15,9 +15,7 @@
 
 
 # distutils: include_dirs = /usr/local/lib/python2.7/site-packages/cassandra
-import pyximport
 
-pyximport.install()
 
 import sys
 import numpy as np
diff --git a/analysis/webservice/algorithms/doms/domsconfig.ini 
b/analysis/webservice/algorithms/doms/domsconfig.ini
index 06ddf7d..34712b4 100644
--- a/analysis/webservice/algorithms/doms/domsconfig.ini
+++ b/analysis/webservice/algorithms/doms/domsconfig.ini
@@ -1,5 +1,5 @@
 [cassandra]
-host=127.0.0.1
+host=sdap-cassandra
 port=9042
 keyspace=doms
 local_datacenter=datacenter1
diff --git a/analysis/webservice/webapp.py b/analysis/webservice/webapp.py
index 8b324b1..ad5c1a7 100644
--- a/analysis/webservice/webapp.py
+++ b/analysis/webservice/webapp.py
@@ -20,7 +20,6 @@ import json
 import logging
 import sys
 import traceback
-from multiprocessing.pool import ThreadPool
 
 import matplotlib
 import pkg_resources
@@ -47,14 +46,14 @@ class BaseHandler(tornado.web.RequestHandler):
 
     def initialize(self, thread_pool):
         self.logger = logging.getLogger('nexus')
-        self.request_thread_pool = thread_pool
+        self.executor = thread_pool
 
-    @tornado.web.asynchronous
+    @tornado.gen.coroutine
     def get(self):
-
         self.logger.info("Received request %s" % self._request_summary())
-        self.request_thread_pool.apply_async(self.run)
+        yield self.run()
 
+    @tornado.concurrent.run_on_executor
     def run(self):
         reqObject = NexusRequestObject(self)
         try:
@@ -80,7 +79,7 @@ class BaseHandler(tornado.web.RequestHandler):
         self.finish()
 
     def async_callback(self, result):
-        self.finish()
+        pass
 
     ''' Override me for standard handlers! '''
 
@@ -200,20 +199,17 @@ if __name__ == "__main__":
 
     max_request_threads = webconfig.getint("global", 
"server.max_simultaneous_requests")
     log.info("Initializing request ThreadPool to %s" % max_request_threads)
-    request_thread_pool = ThreadPool(processes=max_request_threads)
+    request_thread_pool = 
tornado.concurrent.futures.ThreadPoolExecutor(max_request_threads)
 
     spark_context = None
     for clazzWrapper in NexusHandler.AVAILABLE_HANDLERS:
         if issubclass(clazzWrapper.clazz(), NexusHandler.SparkHandler):
             if spark_context is None:
-                from pyspark import SparkContext, SparkConf
-
-                # Configure Spark
-                sp_conf = SparkConf()
-                sp_conf.setAppName("nexus-analysis")
-                sp_conf.set("spark.scheduler.mode", "FAIR")
-                sp_conf.set("spark.executor.memory", "6g")
-                spark_context = SparkContext(conf=sp_conf)
+                from pyspark import SparkConf
+                from pyspark.sql import SparkSession
+
+                spark = 
SparkSession.builder.appName("nexus-analysis").getOrCreate()
+                spark_context = spark.sparkContext
 
             handlers.append(
                 (clazzWrapper.path(), ModularNexusHandlerWrapper,
diff --git a/data-access/nexustiles/config/datastores.ini 
b/data-access/nexustiles/config/datastores.ini
index a1959bd..4795a79 100644
--- a/data-access/nexustiles/config/datastores.ini
+++ b/data-access/nexustiles/config/datastores.ini
@@ -1,5 +1,5 @@
 [cassandra]
-host=127.0.0.1
+host=sdap-cassandra
 port=9042
 keyspace=nexustiles
 local_datacenter=datacenter1
@@ -14,7 +14,7 @@ table=nexus-jpl-table
 region=us-west-2
 
 [solr]
-host=localhost:8983
+host=sdap-solr:8983
 core=nexustiles
 
 [datastore]
diff --git a/data-access/nexustiles/dao/CassandraProxy.pyx 
b/data-access/nexustiles/dao/CassandraProxy.py
similarity index 100%
rename from data-access/nexustiles/dao/CassandraProxy.pyx
rename to data-access/nexustiles/dao/CassandraProxy.py
diff --git a/data-access/nexustiles/dao/DynamoProxy.pyx 
b/data-access/nexustiles/dao/DynamoProxy.py
similarity index 100%
rename from data-access/nexustiles/dao/DynamoProxy.pyx
rename to data-access/nexustiles/dao/DynamoProxy.py
diff --git a/data-access/nexustiles/dao/S3Proxy.pyx 
b/data-access/nexustiles/dao/S3Proxy.py
similarity index 100%
rename from data-access/nexustiles/dao/S3Proxy.pyx
rename to data-access/nexustiles/dao/S3Proxy.py
diff --git a/data-access/nexustiles/dao/SolrProxy.pyx 
b/data-access/nexustiles/dao/SolrProxy.py
similarity index 100%
rename from data-access/nexustiles/dao/SolrProxy.pyx
rename to data-access/nexustiles/dao/SolrProxy.py
diff --git a/data-access/requirements.txt b/data-access/requirements.txt
index 651f776..e0486ad 100644
--- a/data-access/requirements.txt
+++ b/data-access/requirements.txt
@@ -1,41 +1,5 @@
-appnope==0.1.0
-awscli==1.11.141
-backports.shutil-get-terminal-size==1.0.0
-botocore==1.6.8
-cassandra-driver==3.5.0
-colorama==0.3.7
-ConfigArgParse==0.11.0
-contextlib2==0.5.4
-Cython==0.24
-decorator==4.0.11
-docutils==0.14
-enum34==1.1.6
-futures==3.1.1
-ipython==5.3.0
-ipython-genutils==0.2.0
-jmespath==0.9.3
-nexusproto==1.0.0
-numpy==1.11.1
-pathlib2==2.2.1
-pexpect==4.2.1
-pickleshare==0.7.4
-prompt-toolkit==1.0.14
-protobuf==2.6.1
-ptyprocess==0.5.1
-pyasn1==0.3.3
-Pygments==2.2.0
-python-dateutil==2.6.1
-pytz==2016.6.1
-PyYAML==3.12
-requests==2.13.0
-rsa==3.4.2
-s3transfer==0.1.10
-scandir==1.5
-semver==2.7.6
-Shapely==1.5.17
-simplegeneric==0.8.1
-six==1.10.0
-solrcloudpy==2.4.1
-pysolr==3.7.0
-traitlets==4.3.2
-wcwidth==0.1.7
+      cassandra-driver==3.5.0
+      pysolr==3.7.0
+      requests
+      nexusproto
+      Shapely
\ No newline at end of file
diff --git a/data-access/setup.py b/data-access/setup.py
index 031ccb0..87754ff 100644
--- a/data-access/setup.py
+++ b/data-access/setup.py
@@ -13,15 +13,18 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import setuptools
-from Cython.Build import cythonize
+from setuptools import setup
 
 __version__ = '0.33'
 
-setuptools.setup(
+
+with open('requirements.txt') as f:
+    pip_requirements = f.readlines()
+
+setup(
     name="nexus-data-access",
     version=__version__,
-    url="https://github.jpl.nasa.gov/thuang/nexus";,
+    url="https://github.com/apache/incubator-sdap-nexus";,
 
     author="Team Nexus",
 
@@ -31,22 +34,13 @@ setuptools.setup(
     packages=['nexustiles', 'nexustiles.model', 'nexustiles.dao'],
     package_data={'nexustiles': ['config/datastores.ini']},
     platforms='any',
-    setup_requires=['cython'],
-    install_requires=[
-        'cassandra-driver==3.5.0',
-        'pysolr==3.7.0',
-        'requests',
-        'nexusproto==1.0.0',
-        'shapely'
-    ],
-
+    python_requires='~=2.7',
+    install_requires=pip_requirements,
     classifiers=[
         'Development Status :: 1 - Pre-Alpha',
         'Intended Audience :: Developers',
         'Operating System :: OS Independent',
         'Programming Language :: Python :: 2.7',
     ],
-
-    ext_modules=cythonize(["**/*.pyx"]),
     zip_safe=False
 )
diff --git a/docker/nexus-webapp/Dockerfile b/docker/nexus-webapp/Dockerfile
new file mode 100644
index 0000000..f4e206a
--- /dev/null
+++ b/docker/nexus-webapp/Dockerfile
@@ -0,0 +1,90 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM nexusjpl/alpine-pyspark:2.4.4
+
+MAINTAINER Apache SDAP "[email protected]"
+
+
+ENV 
PYTHONPATH=${PYTHONPATH}:/opt/spark/python:/opt/spark/python/lib/py4j-0.10.7-src.zip:/opt/spark/python/lib/pyspark.zip/python:/usr/lib
 \
+    NEXUS_SRC=/tmp/incubator-sdap-nexus \
+    PROJ_LIB=/opt/conda/lib/python2.7/site-packages/pyproj/data        \
+    PATH="$CONDA_DIR/bin:$PATH" \
+    PYTHONDONTWRITEBYTECODE=1 \
+    PYSPARK_DRIVER_PYTHON=/opt/conda/bin/python \
+    PYSPARK_PYTHON=/opt/conda/bin/python \
+    LD_LIBRARY_PATH=/usr/lib 
+
+RUN apk add --update --no-cache \
+    bzip2 \
+    gcc \
+    git \
+    mesa-gl \
+    wget \
+    curl \
+    which \
+    python3 \
+    bash==4.4.19-r1 \
+    libc-dev \
+    libressl2.7-libcrypto 
+RUN  apk upgrade musl
+
+WORKDIR /tmp
+
+RUN apk del libc6-compat
+RUN apk --no-cache add wget zlib && \
+    wget -q -O /etc/apk/keys/sgerrand.rsa.pub 
https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
+    wget 
https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-2.30-r0.apk
 && \
+    apk add glibc-2.30-r0.apk && \
+    ln -s /lib/libz.so.1 /usr/glibc-compat/lib/ && \
+    ln -s /lib/libc.musl-x86_64.so.1 /usr/glibc-compat/lib && \
+    ln -s /usr/lib/libgcc_s.so.1 /usr/glibc-compat/lib
+
+ARG CONDA_VERSION="4.7.12.1"
+ARG CONDA_MD5="81c773ff87af5cfac79ab862942ab6b3"
+ARG CONDA_DIR="/opt/conda"
+
+COPY docker/nexus-webapp/install_conda.sh ./install_conda.sh
+RUN /tmp/install_conda.sh 
+
+RUN conda install python=2.7
+RUN cd /usr/lib && ln -s libcom_err.so.2 libcom_err.so.3 && \ 
+    cd /opt/conda/lib && \
+    ln -s libnetcdf.so.11 libnetcdf.so.7 && \
+    ln -s libkea.so.1.4.6 libkea.so.1.4.5 && \
+    ln -s libhdf5_cpp.so.12 libhdf5_cpp.so.10 && \
+    ln -s libjpeg.so.9 libjpeg.so.8
+
+# Change REBUILD_CODE if you want tell Docker not to use cached layers from 
this line on
+ARG REBUILD_CODE=0
+
+ARG APACHE_NEXUSPROTO=https://github.com/apache/incubator-sdap-nexusproto.git
+ARG APACHE_NEXUSPROTO_BRANCH=master
+
+COPY docker/nexus-webapp/install_nexusproto.sh ./install_nexusproto.sh
+RUN /tmp/install_nexusproto.sh $APACHE_NEXUSPROTO $APACHE_NEXUSPROTO_BRANCH
+
+COPY data-access /incubator-sdap-nexus/data-access
+COPY analysis /incubator-sdap-nexus/analysis
+
+WORKDIR /incubator-sdap-nexus/data-access
+RUN python setup.py install
+
+WORKDIR /incubator-sdap-nexus/analysis
+RUN python setup.py install
+
+# Upgrade kubernetes client jar from the default version
+RUN rm /opt/spark/jars/kubernetes-client-4.1.2.jar
+ADD 
https://repo1.maven.org/maven2/io/fabric8/kubernetes-client/4.4.2/kubernetes-client-4.4.2.jar
 /opt/spark/jars
\ No newline at end of file
diff --git a/docker/nexus-webapp/install_conda.sh 
b/docker/nexus-webapp/install_conda.sh
index 7d99ef2..2c2ad37 100755
--- a/docker/nexus-webapp/install_conda.sh
+++ b/docker/nexus-webapp/install_conda.sh
@@ -14,14 +14,29 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-set -ebx
+echo "**** install dev packages ****"
+apk add --no-cache --virtual .build-dependencies bash wget
 
-URL=${1:-"https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh"}
-CONDA=${2:-"/usr/local/anaconda2"}
+echo "**** get Miniconda ****" 
+mkdir -p "$CONDA_DIR" 
+wget 
"http://repo.continuum.io/miniconda/Miniconda3-${CONDA_VERSION}-Linux-x86_64.sh";
 -O miniconda.sh 
+echo "$CONDA_MD5  miniconda.sh" | md5sum -c 
 
-pushd /tmp
-wget -q ${URL} -O install_anaconda.sh
-/bin/bash install_anaconda.sh -b -p ${CONDA}
-rm install_anaconda.sh
-${CONDA}/bin/conda update -n base conda
-popd
+echo "**** install Miniconda ****" 
+bash miniconda.sh -f -b -p "$CONDA_DIR" 
+echo "export PATH=$CONDA_DIR/bin:\$PATH" > /etc/profile.d/conda.sh 
+
+echo "**** setup Miniconda ****" 
+conda update --all --yes 
+conda config --set auto_update_conda False 
+
+echo "**** cleanup ****" 
+apk del --purge .build-dependencies 
+rm -f miniconda.sh 
+conda clean --all --force-pkgs-dirs --yes 
+find "$CONDA_DIR" -follow -type f \( -iname '*.a' -o -iname '*.pyc' -o -iname 
'*.js.map' \) -delete 
+
+echo "**** finalize ****" 
+mkdir -p "$CONDA_DIR/locks" 
+chmod 777 "$CONDA_DIR/locks" 
+conda update -n base conda
\ No newline at end of file
diff --git a/docker/nexus-webapp/install_java.sh 
b/docker/nexus-webapp/install_java.sh
deleted file mode 100755
index b9ce92b..0000000
--- a/docker/nexus-webapp/install_java.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -ebx
-
-URL=${1:-"http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm"}
-RPM_PACKAGE=${URL##*/}
-
-# Install Oracle JDK
-wget -q --no-cookies --no-check-certificate --header "Cookie: 
gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; 
oraclelicense=accept-securebackup-cookie" ${URL}
-yum install -y ${RPM_PACKAGE}
-rm ${RPM_PACKAGE}
diff --git a/docker/nexus-webapp/install_nexus.sh 
b/docker/nexus-webapp/install_nexus.sh
deleted file mode 100755
index 08113de..0000000
--- a/docker/nexus-webapp/install_nexus.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-set -e
-
-APACHE_NEXUS="https://github.com/apache/incubator-sdap-nexus.git";
-MASTER="master"
-NEXUS_SRC=/incubator-sdap-nexus
-
-GIT_REPO=${1:-$APACHE_NEXUS}
-GIT_BRANCH=${2:-$MASTER}
-NEXUS_SRC_LOC=${3:-$NEXUS_SRC}
-
-mkdir -p ${NEXUS_SRC_LOC}
-pushd ${NEXUS_SRC_LOC}
-git init
-git pull ${GIT_REPO} ${GIT_BRANCH}
-
-cd data-access
-python setup.py install
-cd ../analysis
-python setup.py install
-popd
diff --git a/docker/nexus-webapp/install_spark.sh 
b/docker/nexus-webapp/install_spark.sh
deleted file mode 100755
index 1e668cc..0000000
--- a/docker/nexus-webapp/install_spark.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -ebx
-
-DL_HOST=${1:-"http://d3kbcqa49mib13.cloudfront.net"}
-VERSION=${2:-"2.2.0"}
-DIR=${3:-"spark-${VERSION}"}
-INSTALL_DIR=${4:-"/usr/local"}
-
-pushd ${INSTALL_DIR}
-wget --quiet ${DL_HOST}/spark-${VERSION}-bin-hadoop2.7.tgz
-tar -xzf spark-${VERSION}-bin-hadoop2.7.tgz
-chown -R root.root spark-${VERSION}-bin-hadoop2.7.tgz
-ln -s spark-${VERSION}-bin-hadoop2.7 ${DIR}
-# Do not remove the package, mesos requires it
-# rm spark-${VERSION}-bin-hadoop2.7.tgz
-popd
diff --git a/docker/nexus-webapp/mesos/agent/Dockerfile 
b/docker/nexus-webapp/mesos/agent/Dockerfile
deleted file mode 100644
index feca35f..0000000
--- a/docker/nexus-webapp/mesos/agent/Dockerfile
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ARG tag_version=1.0.0-SNAPSHOT
-FROM sdap/spark-mesos-base:${tag_version}
-
-MAINTAINER Apache SDAP "[email protected]"
-
-# Run a Mesos slave.
-
-WORKDIR /tmp
-
-COPY mesos/agent/docker-entrypoint.sh /tmp/docker-entrypoint.sh
-
-
-# This will run docker-entrypoint.sh with the value of CMD as default 
arguments. However, if any arguments are supplied
-# to the docker run command when launching this image, the command line 
arguments will override these CMD arguments
-ENTRYPOINT ["/bin/bash", "-c", "/tmp/docker-entrypoint.sh $(eval echo $@)", 
"$@"]
-CMD ["--master=${MESOS_MASTER_NAME}:${MESOS_MASTER_PORT}", 
"--port=${MESOS_AGENT_PORT}", "--work_dir=${MESOS_WORKDIR}"]
diff --git a/docker/nexus-webapp/mesos/agent/docker-entrypoint.sh 
b/docker/nexus-webapp/mesos/agent/docker-entrypoint.sh
deleted file mode 100755
index 2228b0d..0000000
--- a/docker/nexus-webapp/mesos/agent/docker-entrypoint.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -ebx
-
-if [ -n "$TORNADO_HOST" ]; then
-  sed -i "s/server.socket_host = .*/server.socket_host = '${TORNADO_HOST}'/g" 
${NEXUS_SRC}/analysis/webservice/config/web.ini
-fi
-sed -i "s/host=127.0.0.1/host=$CASSANDRA_CONTACT_POINTS/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini && \
-sed -i "s/local_datacenter=.*/local_datacenter=$CASSANDRA_LOCAL_DATACENTER/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini && \
-sed -i "s/host=localhost:8983/host=$SOLR_URL_PORT/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini
-
-# DOMS
-sed -i 
"s/module_dirs=.*/module_dirs=webservice.algorithms,webservice.algorithms_spark,webservice.algorithms.doms/g"
 ${NEXUS_SRC}/analysis/webservice/config/web.ini && \
-sed -i "s/host=.*/host=$CASSANDRA_CONTACT_POINTS/g" 
${NEXUS_SRC}/analysis/webservice/algorithms/doms/domsconfig.ini && \
-sed -i "s/local_datacenter=.*/local_datacenter=$CASSANDRA_LOCAL_DATACENTER/g" 
${NEXUS_SRC}/analysis/webservice/algorithms/doms/domsconfig.ini
-
-cd ${NEXUS_SRC}/data-access
-python setup.py install --force
-
-cd ${NEXUS_SRC}/analysis
-python setup.py install --force
-
-# Set PROJ_LIB env var as workaround for missing environment variable for 
basemap https://github.com/conda-forge/basemap-feedstock/issues/30
-${MESOS_HOME}/build/bin/mesos-agent.sh --no-systemd_enable_support 
--launcher=posix --no-switch_user 
--executor_environment_variables='{"PYTHON_EGG_CACHE": "/tmp", 
"PROJ_LIB":"/usr/local/anaconda2/share/proj"}' "$@"
diff --git a/docker/nexus-webapp/mesos/base/Dockerfile 
b/docker/nexus-webapp/mesos/base/Dockerfile
deleted file mode 100644
index 2cce5d1..0000000
--- a/docker/nexus-webapp/mesos/base/Dockerfile
+++ /dev/null
@@ -1,107 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-FROM centos:7
-
-MAINTAINER Apache SDAP "[email protected]"
-
-WORKDIR /tmp
-
-RUN yum -y update && \
-    yum -y install \
-    bzip2 \
-    gcc \
-    git \
-    mesa-libGL.x86_64 \
-    python-devel \
-    wget \
-    which && \
-    yum clean all
-
-# Set environment variables.  For Mesos, I used MESOS_VER because MESOS_VERSION
-# is expected to be a logical TRUE/FALSE flag that tells Mesos whether or not
-# to simply print the version number and exit.
-
-ENV INSTALL_LOC=/usr/local \
-    HADOOP_VERSION=2.7.3 \
-    SPARK_VERSION=2.2.0 \
-    MESOS_VER=1.5.1 \
-    MESOS_MASTER_PORT=5050 \
-    MESOS_AGENT_PORT=5051 \
-    MESOS_WORKDIR=/var/lib/mesos \
-    MESOS_IP=0.0.0.0 \
-    MESOS_MASTER_NAME=mesos-master \
-    PYTHON_EGG_CACHE=/tmp \
-    JAVA_HOME=/usr/java/default \
-    NEXUS_SRC=/tmp/incubator-sdap-nexus
-
-ENV CONDA_HOME=${INSTALL_LOC}/anaconda2 \
-    MESOS_HOME=${INSTALL_LOC}/mesos-${MESOS_VER} \
-    SPARK_DIR=spark-${SPARK_VERSION} \
-    SPARK_PACKAGE=spark-${SPARK_VERSION}-bin-hadoop2.7 \
-    MESOS_MASTER=mesos://${MESOS_IP}:${MESOS_PORT} \
-    MESOS_PACKAGE=mesos-${MESOS_VER}.tar.gz
-
-ENV SPARK_HOME=${INSTALL_LOC}/${SPARK_DIR} \
-    PYSPARK_DRIVER_PYTHON=${CONDA_HOME}/bin/python \
-    PYSPARK_PYTHON=${CONDA_HOME}/bin/python \
-    PYSPARK_SUBMIT_ARGS="--driver-memory=4g pyspark-shell" \
-    # Workaround for missing environment variable for basemap 
https://github.com/conda-forge/basemap-feedstock/issues/30
-    PROJ_LIB=${CONDA_HOME}/share/proj
-
-ENV 
PYTHONPATH=${PYTHONPATH}:${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.10.4-src.zip:${SPARK_HOME}/python/lib/pyspark.zip
 \
-    MESOS_NATIVE_JAVA_LIBRARY=${INSTALL_LOC}/lib/libmesos.so \
-    SPARK_EXECUTOR_URI=${INSTALL_LOC}/${SPARK_PACKAGE}.tgz \
-    PATH=${CONDA_HOME}/bin:${PATH}
-
-# Install Oracle JDK
-COPY install_java.sh ./install_java.sh
-RUN ./install_java.sh 
"http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm";
-
-# Set up Mesos
-COPY mesos/base/install_mesos.sh ./install_mesos.sh
-RUN source ./install_mesos.sh
-
-# Install Spark
-COPY install_spark.sh ./install_spark.sh
-RUN ./install_spark.sh "http://d3kbcqa49mib13.cloudfront.net"; ${SPARK_VERSION} 
${SPARK_DIR} ${INSTALL_LOC}
-
-# Install Anaconda
-COPY install_conda.sh ./install_conda.sh
-RUN ./install_conda.sh 
"https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh"; 
${CONDA_HOME}
-
-# Conda dependencies for nexus
-RUN conda install -c conda-forge -y netCDF4 && \
-    conda install -y numpy cython mpld3 scipy basemap gdal matplotlib && \
-    pip install shapely==1.5.16 cassandra-driver==3.5.0 && \
-    conda install -c conda-forge backports.functools_lru_cache=1.3 && \
-    cd /usr/lib64 && ln -s libcom_err.so.2 libcom_err.so.3 && \
-    cd /usr/local/anaconda2/lib && \
-    ln -s libnetcdf.so.11 libnetcdf.so.7 && \
-    ln -s libkea.so.1.4.6 libkea.so.1.4.5 && \
-    ln -s libhdf5_cpp.so.12 libhdf5_cpp.so.10 && \
-    ln -s libjpeg.so.9 libjpeg.so.8
-
-# Install nexusproto and nexus
-ARG APACHE_NEXUSPROTO=https://github.com/apache/incubator-sdap-nexusproto.git
-ARG APACHE_NEXUSPROTO_BRANCH=master
-ARG APACHE_NEXUS=https://github.com/apache/incubator-sdap-nexus.git
-ARG APACHE_NEXUS_BRANCH=master
-ARG REBUILD_CODE=1
-COPY install_nexusproto.sh ./install_nexusproto.sh
-COPY install_nexus.sh ./install_nexus.sh
-RUN /tmp/install_nexusproto.sh $APACHE_NEXUSPROTO $APACHE_NEXUSPROTO_BRANCH && 
\
-    /tmp/install_nexus.sh $APACHE_NEXUS $APACHE_NEXUS_BRANCH $NEXUS_SRC
-
-CMD ["/bin/bash"]
diff --git a/docker/nexus-webapp/mesos/base/install_mesos.sh 
b/docker/nexus-webapp/mesos/base/install_mesos.sh
deleted file mode 100755
index fc0c475..0000000
--- a/docker/nexus-webapp/mesos/base/install_mesos.sh
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -ebx
-
-# Install a few utility tools
-yum install -y tar wget git
-
-# Fetch the Apache Maven repo file.
-wget 
http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo 
-O /etc/yum.repos.d/epel-apache-maven.repo
-
-# Install the EPEL repo so that we can pull in 'libserf-1' as part of our
-# subversion install below.
-yum install -y epel-release
-
-# 'Mesos > 0.21.0' requires 'subversion > 1.8' devel package,
-# which is not available in the default repositories.
-# Create a WANdisco SVN repo file to install the correct version:
-bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo <<EOF
-[WANdiscoSVN]
-name=WANdisco SVN Repo 1.9
-enabled=1
-baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/\$basearch/
-gpgcheck=1
-gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
-EOF'
-
-# Parts of Mesos require systemd in order to operate. However, Mesos
-# only supports versions of systemd that contain the 'Delegate' flag.
-# This flag was first introduced in 'systemd version 218', which is
-# lower than the default version installed by centos. Luckily, centos
-# 7.1 has a patched 'systemd < 218' that contains the 'Delegate' flag.
-# Explicity update systemd to this patched version.
-yum update systemd
-
-# Install essential development tools.
-yum groupinstall -y "Development Tools"
-
-# Install other Mesos dependencies.
-yum install -y apache-maven python-devel java-1.8.0-openjdk-devel zlib-devel 
libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel 
subversion-devel apr-util-devel
-
-# Retrieve MESOS package
-wget --quiet http://www.apache.org/dist/mesos/${MESOS_VER}/${MESOS_PACKAGE}
-tar -zxf ${MESOS_PACKAGE} -C ${INSTALL_LOC}
-rm -f ${MESOS_PACKAGE}
-
-# Configure and build.
-mkdir -p ${MESOS_WORKDIR}
-mkdir -p ${MESOS_HOME}
-pushd ${MESOS_HOME}
-mkdir build
-pushd build
-../configure
-make
-# Can't run make check until this is fixed: 
https://issues.apache.org/jira/browse/MESOS-8608
-# make check
-make install
-popd
-popd
diff --git a/docker/nexus-webapp/mesos/master/Dockerfile 
b/docker/nexus-webapp/mesos/master/Dockerfile
deleted file mode 100644
index a6f7f91..0000000
--- a/docker/nexus-webapp/mesos/master/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ARG tag_version=1.0.0-SNAPSHOT
-FROM sdap/spark-mesos-base:${tag_version}
-
-MAINTAINER Apache SDAP "[email protected]"
-
-EXPOSE ${MESOS_MASTER_PORT}
-
-# Run a Mesos master.
-
-WORKDIR ${MESOS_HOME}/build
-
-# This will run mesos-master.sh with the value of CMD as default arguments. 
However, if any arguments are supplied
-# to the docker run command when launching this image, the command line 
arguments will override these CMD arguments
-ENTRYPOINT ["/bin/bash", "-c", "./bin/mesos-master.sh $(eval echo $@)", "$@"]
-CMD ["--ip=${MESOS_IP}", "--hostname=${MESOS_MASTER_NAME}", 
"--port=${MESOS_MASTER_PORT}", "--work_dir=${MESOS_WORKDIR}"]
diff --git a/docker/nexus-webapp/mesos/webapp/Dockerfile 
b/docker/nexus-webapp/mesos/webapp/Dockerfile
deleted file mode 100644
index aaa64b2..0000000
--- a/docker/nexus-webapp/mesos/webapp/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ARG tag_version=1.0.0-SNAPSHOT
-FROM sdap/spark-mesos-base:${tag_version}
-
-MAINTAINER Apache SDAP "[email protected]"
-
-COPY /mesos/webapp/docker-entrypoint.sh /tmp/docker-entrypoint.sh
-ENV MASTER=mesos://${MESOS_MASTER_NAME}:${MESOS_MASTER_PORT}
-
-ENTRYPOINT ["/tmp/docker-entrypoint.sh"]
diff --git a/docker/nexus-webapp/mesos/webapp/docker-entrypoint.sh 
b/docker/nexus-webapp/mesos/webapp/docker-entrypoint.sh
deleted file mode 100755
index 0589fb2..0000000
--- a/docker/nexus-webapp/mesos/webapp/docker-entrypoint.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -e
-
-if [ -n "$TORNADO_HOST" ]; then
-  sed -i "s/server.socket_host = .*/server.socket_host = '${TORNADO_HOST}'/g" 
${NEXUS_SRC}/analysis/webservice/config/web.ini
-fi
-sed -i "s/host=127.0.0.1/host=$CASSANDRA_CONTACT_POINTS/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini && \
-sed -i "s/local_datacenter=.*/local_datacenter=$CASSANDRA_LOCAL_DATACENTER/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini && \
-sed -i "s/host=localhost:8983/host=$SOLR_URL_PORT/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini
-
-# DOMS
-sed -i 
"s/module_dirs=.*/module_dirs=webservice.algorithms,webservice.algorithms_spark,webservice.algorithms.doms/g"
 ${NEXUS_SRC}/analysis/webservice/config/web.ini && \
-sed -i "s/host=.*/host=$CASSANDRA_CONTACT_POINTS/g" 
${NEXUS_SRC}/analysis/webservice/algorithms/doms/domsconfig.ini && \
-sed -i "s/local_datacenter=.*/local_datacenter=$CASSANDRA_LOCAL_DATACENTER/g" 
${NEXUS_SRC}/analysis/webservice/algorithms/doms/domsconfig.ini
-
-cd ${NEXUS_SRC}/data-access
-python setup.py install --force
-
-cd ${NEXUS_SRC}/analysis
-python setup.py install --force
-
-python -m webservice.webapp
diff --git a/docker/nexus-webapp/standalone/Dockerfile 
b/docker/nexus-webapp/standalone/Dockerfile
deleted file mode 100644
index 06073fc..0000000
--- a/docker/nexus-webapp/standalone/Dockerfile
+++ /dev/null
@@ -1,87 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-FROM centos:7
-
-MAINTAINER Apache SDAP "[email protected]"
-
-RUN yum -y update && \
-    yum -y install \
-    bzip2 \
-    gcc \
-    git \
-    mesa-libGL.x86_64 \
-    python-devel \
-    wget \
-    which && \
-    yum clean all
-
-ARG SPARK_VERSION=2.2.0
-ENV SPARK_LOCAL_IP=127.0.0.1 \
-    CASSANDRA_CONTACT_POINTS=127.0.0.1 \
-    CASSANDRA_LOCAL_DATACENTER=datacenter1 \
-    SOLR_URL_PORT=127.0.0.1:8983 \
-    SPARK_DIR=spark-${SPARK_VERSION} \
-    SPARK_PACKAGE=spark-${SPARK_VERSION}-bin-hadoop2.7 \
-    SPARK_HOME=/usr/local/spark-${SPARK_VERSION} \
-    PYSPARK_DRIVER_PYTHON=/usr/local/anaconda2/bin/python \
-    PYSPARK_PYTHON=/usr/local/anaconda2/bin/python \
-    PYSPARK_SUBMIT_ARGS="--driver-memory=4g pyspark-shell" \
-    
PYTHONPATH=${PYTHONPATH}:/usr/local/spark-${SPARK_VERSION}/python:/usr/local/spark-${SPARK_VERSION}/python/lib/py4j-0.10.4-src.zip:/usr/local/spark-${SPARK_VERSION}/python/lib/pyspark.zip
 \
-    SPARK_EXECUTOR_URI=/usr/local/spark-${SPARK_VERSION}-bin-hadoop2.7.tgz \
-    NEXUS_SRC=/tmp/incubator-sdap-nexus \
-    PATH=/usr/local/anaconda2/bin:$PATH \
-    # Workaround for missing environment variable for basemap 
https://github.com/conda-forge/basemap-feedstock/issues/30
-    PROJ_LIB=/usr/local/anaconda2/share/proj
-
-WORKDIR /tmp
-
-# Install Oracle JDK
-COPY install_java.sh ./install_java.sh
-RUN ./install_java.sh 
"http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm";
-
-# Install Spark
-COPY install_spark.sh ./install_spark.sh
-RUN ./install_spark.sh "http://d3kbcqa49mib13.cloudfront.net"; ${SPARK_VERSION} 
${SPARK_DIR} ${INSTALL_LOC}
-
-# Install Anaconda
-COPY install_conda.sh ./install_conda.sh
-RUN ./install_conda.sh 
"https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh"; 
/usr/local/anaconda2
-
-# Conda dependencies for nexus
-RUN conda install -c conda-forge -y netCDF4 && \
-    conda install -y numpy cython mpld3 scipy basemap gdal matplotlib && \
-    pip install shapely==1.5.16 cassandra-driver==3.5.0 && \
-    conda install -c conda-forge backports.functools_lru_cache=1.3 && \
-    cd /usr/lib64 && ln -s libcom_err.so.2 libcom_err.so.3 && \
-    cd /usr/local/anaconda2/lib && \
-    ln -s libnetcdf.so.11 libnetcdf.so.7 && \
-    ln -s libkea.so.1.4.6 libkea.so.1.4.5 && \
-    ln -s libhdf5_cpp.so.12 libhdf5_cpp.so.10 && \
-    ln -s libjpeg.so.9 libjpeg.so.8
-
-# Install nexusproto and nexus
-ARG APACHE_NEXUSPROTO=https://github.com/apache/incubator-sdap-nexusproto.git
-ARG APACHE_NEXUSPROTO_BRANCH=master
-ARG APACHE_NEXUS=https://github.com/apache/incubator-sdap-nexus.git
-ARG APACHE_NEXUS_BRANCH=master
-ARG REBUILD_CODE=1
-COPY install_nexusproto.sh ./install_nexusproto.sh
-COPY install_nexus.sh ./install_nexus.sh
-RUN /tmp/install_nexusproto.sh $APACHE_NEXUSPROTO $APACHE_NEXUSPROTO_BRANCH && 
\
-    /tmp/install_nexus.sh $APACHE_NEXUS $APACHE_NEXUS_BRANCH $NEXUS_SRC
-
-COPY standalone/docker-entrypoint.sh ./docker-entrypoint.sh
-ENTRYPOINT ["/tmp/docker-entrypoint.sh"]
diff --git a/docker/nexus-webapp/standalone/docker-entrypoint.sh 
b/docker/nexus-webapp/standalone/docker-entrypoint.sh
deleted file mode 100755
index 8db7246..0000000
--- a/docker/nexus-webapp/standalone/docker-entrypoint.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -e
-
-if [ -n "$TORNADO_HOST" ]; then
-  sed -i "s/server.socket_host = .*/server.socket_host = '${TORNADO_HOST}'/g" 
${NEXUS_SRC}/analysis/webservice/config/web.ini
-fi
-sed -i "s/host=127.0.0.1/host=$CASSANDRA_CONTACT_POINTS/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini && \
-sed -i "s/port=9042/port=$CASSANDRA_PORT/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini && \
-sed -i "s/local_datacenter=.*/local_datacenter=$CASSANDRA_LOCAL_DATACENTER/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini && \
-sed -i "s/host=localhost:8983/host=$SOLR_URL_PORT/g" 
${NEXUS_SRC}/data-access/nexustiles/config/datastores.ini
-
-# DOMS
-sed -i 
"s/module_dirs=.*/module_dirs=webservice.algorithms,webservice.algorithms_spark,webservice.algorithms.doms/g"
 ${NEXUS_SRC}/analysis/webservice/config/web.ini && \
-sed -i "s/host=.*/host=$CASSANDRA_CONTACT_POINTS/g" 
${NEXUS_SRC}/analysis/webservice/algorithms/doms/domsconfig.ini && \
-sed -i "s/port=.*/port=$CASSANDRA_PORT/g" 
${NEXUS_SRC}/analysis/webservice/algorithms/doms/domsconfig.ini && \
-sed -i "s/local_datacenter=.*/local_datacenter=$CASSANDRA_LOCAL_DATACENTER/g" 
${NEXUS_SRC}/analysis/webservice/algorithms/doms/domsconfig.ini
-
-cd ${NEXUS_SRC}/data-access
-python setup.py install --force
-
-cd ${NEXUS_SRC}/analysis
-python setup.py install --force
-
-python -m webservice.webapp
diff --git a/helm/.gitignore b/helm/.gitignore
new file mode 100644
index 0000000..05e8a91
--- /dev/null
+++ b/helm/.gitignore
@@ -0,0 +1,3 @@
+*.lock
+*.tgz
+.DS_Store
\ No newline at end of file
diff --git a/helm/.helmignore b/helm/.helmignore
new file mode 100644
index 0000000..50af031
--- /dev/null
+++ b/helm/.helmignore
@@ -0,0 +1,22 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/helm/Chart.yaml b/helm/Chart.yaml
new file mode 100644
index 0000000..1979e8b
--- /dev/null
+++ b/helm/Chart.yaml
@@ -0,0 +1,5 @@
+apiVersion: v1
+appVersion: "0.1.3"
+description: JPL Science Data Analytics Platform
+name: nexus
+version: 0.1.6
diff --git a/helm/requirements.yaml b/helm/requirements.yaml
new file mode 100644
index 0000000..42425bf
--- /dev/null
+++ b/helm/requirements.yaml
@@ -0,0 +1,6 @@
+dependencies:
+  - name: nginx-ingress
+    version: 1.28.2
+    repository: https://kubernetes-charts.storage.googleapis.com
+  
+
diff --git a/helm/templates/cassandra.yml b/helm/templates/cassandra.yml
new file mode 100644
index 0000000..0fb27a4
--- /dev/null
+++ b/helm/templates/cassandra.yml
@@ -0,0 +1,99 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: sdap-cassandra
+spec:
+  clusterIP: None
+  ports:
+  - name: cql
+    port: 9042
+    targetPort: cql
+  selector:
+    app: sdap-cassandra
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: cassandra-set
+spec:
+  serviceName: sdap-cassandra
+  replicas: {{ .Values.cassandra.replicas }}
+  selector:
+    matchLabels:
+      app: sdap-cassandra
+  template:
+    metadata:
+      labels:
+        app: sdap-cassandra
+    spec:
+      terminationGracePeriodSeconds: 120
+      affinity:
+        podAntiAffinity:
+          # Prefer spreading over all hosts
+          preferredDuringSchedulingIgnoredDuringExecution:
+          - weight: 100
+            podAffinityTerm:
+              labelSelector:
+                  matchExpressions:
+                    - key: "app"
+                      operator: In
+                      values:
+                      - sdap-cassandra
+              topologyKey: "kubernetes.io/hostname"
+      containers:
+      - name: cassandra
+        image: nexusjpl/cassandra:1.0.0-rc1
+        imagePullPolicy: Always
+        ports:
+        - containerPort: 7000
+          name: intra-node
+        - containerPort: 7001
+          name: tls-intra-node
+        - containerPort: 7199
+          name: jmx
+        - containerPort: 9042
+          name: cql
+        resources:
+          requests:
+            cpu: {{ .Values.cassandra.requests.cpu }}
+            memory: {{ .Values.cassandra.requests.memory }}
+          limits:
+            cpu: {{ .Values.cassandra.limits.cpu }}
+            memory: {{ .Values.cassandra.limits.memory }}
+        securityContext:
+          capabilities:
+            add:
+              - IPC_LOCK
+        lifecycle:
+          preStop:
+            exec:
+              command:
+              - /bin/sh
+              - -c
+              - nodetool drain
+        env:
+          - name: MAX_HEAP_SIZE
+            value: 2G
+          - name: HEAP_NEWSIZE
+            value: 200M
+          - name: CASSANDRA_SEEDS
+            value: "cassandra-set-0.sdap-cassandra"
+          - name: POD_IP
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+        volumeMounts:
+        - name: cassandra-data
+          mountPath: /var/lib/cassandra
+
+  volumeClaimTemplates:
+  - metadata:
+      name: cassandra-data
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      storageClassName: {{ .Values.storageClass }}
+      resources:
+        requests:
+          storage: {{ .Values.cassandra.storage }}
diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml
new file mode 100644
index 0000000..bd7a674
--- /dev/null
+++ b/helm/templates/ingress.yaml
@@ -0,0 +1,30 @@
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+  name: nexus-webapp
+  annotations:
+    nginx.ingress.kubernetes.io/rewrite-target: /$1
+    nginx.ingress.kubernetes.io/proxy-read-timeout: "180"
+    nginx.ingress.kubernetes.io/proxy-send-timeout: "180"
+    nginx.ingress.kubernetes.io/enable-cors: "true"
+    nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
+    nginx.ingress.kubernetes.io/cors-allow-origin: "*"
+spec:
+  rules:
+  - http:
+      paths:
+      - path: /
+        backend:
+          serviceName: root-webpage
+          servicePort: http
+      - path: /nexus/?(.*)
+        backend:
+          serviceName: nexus-webapp
+          servicePort: webapp
+      {{ if ne .Values.onEarthProxyIP "" }}
+      - path: /onearth/?(.*)
+        backend:
+          serviceName: onearth
+          servicePort: 80
+      {{ end }}
+      
\ No newline at end of file
diff --git a/helm/templates/onearth.yml b/helm/templates/onearth.yml
new file mode 100644
index 0000000..2e6802a
--- /dev/null
+++ b/helm/templates/onearth.yml
@@ -0,0 +1,13 @@
+{{ if ne .Values.onEarthProxyIP "" }}
+
+kind: Service
+apiVersion: v1
+metadata:
+    name: onearth
+spec:
+    type: ExternalName
+    externalName: {{ .Values.onEarthProxyIP }}
+    ports:
+    - port: 80
+
+{{ end}}
\ No newline at end of file
diff --git a/helm/templates/root-webpage.yaml b/helm/templates/root-webpage.yaml
new file mode 100644
index 0000000..98834cb
--- /dev/null
+++ b/helm/templates/root-webpage.yaml
@@ -0,0 +1,42 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: root-webpage
+spec:
+  type: ClusterIP
+  ports:
+  - port: 8080
+    name: http
+  selector:
+    app: root-webpage
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  labels:
+    app: root-webpage
+  name: root-webpage
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: root-webpage
+  template:
+    metadata:
+      labels:
+        app: root-webpage
+    spec:
+      containers:
+      - image: busybox
+        command:
+          # Tiny HTTP server that simply returns 200 OK on port 8080
+          - sh
+          - -c
+          - |
+            while true; do
+              { echo -e 'HTTP/1.1 200 OK\r\n'; } | nc -l -p  8080
+            done
+        name: root-webpage
+      restartPolicy: Always
diff --git a/helm/templates/solr.yml b/helm/templates/solr.yml
new file mode 100644
index 0000000..c1ccc46
--- /dev/null
+++ b/helm/templates/solr.yml
@@ -0,0 +1,121 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: sdap-solr
+spec:
+  ports:
+  - port: 8983
+  clusterIP: None
+  selector:
+    app: sdap-solr
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: solr-set
+spec:
+  selector:
+    matchLabels:
+      app: sdap-solr # has to match .spec.template.metadata.labels
+  serviceName: "sdap-solr"
+  replicas:  {{.Values.solr.replicas }} # by default is 1
+  podManagementPolicy: Parallel
+  template:
+    metadata:
+      labels:
+        app: sdap-solr # has to match .spec.selector.matchLabels
+    spec:
+      terminationGracePeriodSeconds: 10
+      affinity:
+        podAntiAffinity:
+          # Prefer spreading over all hosts
+          preferredDuringSchedulingIgnoredDuringExecution:
+          - weight: 100
+            podAffinityTerm:
+              labelSelector:
+                  matchExpressions:
+                    - key: "app"
+                      operator: In
+                      values:
+                      - sdap-solr
+              topologyKey: "kubernetes.io/hostname"
+      securityContext:
+        runAsUser: 8983
+        fsGroup: 8983
+      containers:
+      - name: solr-create-collection
+        imagePullPolicy: Always
+        image: nexusjpl/solr-cloud-init:1.0.0-rc1
+        resources:
+          requests:
+            memory: "1Gi"
+            cpu: "0.25"
+        env:
+        - name: MINIMUM_NODES
+          value: "2" # MINIMUM_NODES should be the same as spec.replicas
+        - name: SOLR_HOST
+          valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+        - name: SDAP_SOLR_URL
+          value: http://$(SOLR_HOST):8983/solr/
+        - name: SDAP_ZK_SOLR
+          value: "zk-hs:2181/solr"
+        - name: CREATE_COLLECTION_PARAMS
+          value: 
"name=nexustiles&collection.configName=nexustiles&numShards=$(MINIMUM_NODES)&waitForFinalState=true"
+      - name: solr-cloud
+        imagePullPolicy: Always
+        image: nexusjpl/solr-cloud:1.0.0-rc1
+        resources:
+          requests:
+            memory: {{ .Values.solr.requests.memory }}
+            cpu: {{ .Values.solr.requests.cpu }}
+          limits:
+            memory: {{ .Values.solr.limits.memory }}
+            cpu: {{ .Values.solr.limits.cpu }}
+        env:
+        - name: SOLR_HEAP
+          value: {{ .Values.solr.heap }}
+        - name: SOLR_HOST
+          valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+        - name: SDAP_ZK_SERVICE_HOST
+          value: "zk-hs"
+        ports:
+        - containerPort: 8983
+          name: http
+        volumeMounts:
+        - name: solr-data
+          mountPath: /opt/solr/server/solr/
+        readinessProbe:
+          exec:
+            command:
+            - solr
+            - healthcheck
+            - -c
+            - nexustiles
+            - -z
+            - zk-hs:2181/solr
+          initialDelaySeconds: 10
+          timeoutSeconds: 5
+        livenessProbe:
+          exec:
+            command:
+            - solr
+            - assert
+            - -s
+            - http://localhost:8983/solr/
+          initialDelaySeconds: 10
+          timeoutSeconds: 5
+  volumeClaimTemplates:
+  - metadata:
+      name: solr-data
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      storageClassName: {{ .Values.storageClass }}
+      resources:
+        requests:
+          storage: {{ .Values.solr.storage }}
diff --git a/helm/templates/spark-serviceaccount.yml 
b/helm/templates/spark-serviceaccount.yml
new file mode 100644
index 0000000..76a47c7
--- /dev/null
+++ b/helm/templates/spark-serviceaccount.yml
@@ -0,0 +1,17 @@
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: spark-serviceaccount
+automountServiceAccountToken: true
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: spark-serviceaccount-role-binding
+subjects:
+- kind: ServiceAccount
+  name: spark-serviceaccount
+roleRef:
+  kind: ClusterRole
+  name: admin
+  apiGroup: rbac.authorization.k8s.io
\ No newline at end of file
diff --git a/helm/templates/webapp.yaml b/helm/templates/webapp.yaml
new file mode 100644
index 0000000..b432894
--- /dev/null
+++ b/helm/templates/webapp.yaml
@@ -0,0 +1,48 @@
+apiVersion: "sparkoperator.k8s.io/v1beta2"
+kind: SparkApplication
+metadata:
+  name: nexus-webapp
+spec:
+  type: Python
+  pythonVersion: "2"
+  mode: cluster
+  image: {{ .Values.webapp.distributed.image }}
+  imagePullPolicy: Always 
+  mainApplicationFile: 
local:///incubator-sdap-nexus/analysis/webservice/webapp.py
+  sparkVersion: "2.4.4"
+  restartPolicy:
+    type: OnFailure
+    onFailureRetries: 10
+    onFailureRetryInterval: 10
+    onSubmissionFailureRetries: 10
+    onSubmissionFailureRetryInterval: 10
+  driver:
+    cores: {{ .Values.webapp.distributed.driver.cores }}
+    coreLimit: {{ .Values.webapp.distributed.driver.coreLimit }}
+    memory: {{ .Values.webapp.distributed.driver.memory }} 
+    labels:
+      version: 2.4.4
+    serviceAccount: spark-serviceaccount
+  executor:
+    cores: {{ .Values.webapp.distributed.executor.cores }}
+    instances: {{ .Values.webapp.distributed.executor.instances }} 
+    memory: {{ .Values.webapp.distributed.executor.memory }}
+    labels:
+      version: 2.4.4
+      
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: nexus-webapp
+spec:
+  selector:
+    spark-role: driver
+    sparkoperator.k8s.io/app-name: nexus-webapp
+  type: ClusterIP
+  ports:
+  - name: webapp
+    protocol: TCP
+    port: 8083
+    targetPort: 8083
\ No newline at end of file
diff --git a/helm/templates/zookeeper.yml b/helm/templates/zookeeper.yml
new file mode 100644
index 0000000..a195458
--- /dev/null
+++ b/helm/templates/zookeeper.yml
@@ -0,0 +1,136 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: zk-hs
+  labels:
+    app: zk
+spec:
+  ports:
+  - port: 2888
+    name: server
+  - port: 3888
+    name: leader-election
+  clusterIP: None
+  selector:
+    app: zk
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: zk-cs
+  labels:
+    app: zk
+spec:
+  ports:
+  - port: 2181
+    name: client
+  selector:
+    app: zk
+---
+apiVersion: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  name: zk-pdb
+spec:
+  selector:
+    matchLabels:
+      app: zk
+  maxUnavailable: 1
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: zk
+spec:
+  selector:
+    matchLabels:
+      app: zk
+  serviceName: zk-hs
+  replicas: {{ .Values.zookeeper.replicas }}
+  updateStrategy:
+    type: RollingUpdate
+  podManagementPolicy: Parallel
+  template:
+    metadata:
+      labels:
+        app: zk
+    spec:
+      affinity:
+        podAntiAffinity:
+          preferredDuringSchedulingIgnoredDuringExecution:
+          - weight: 100
+            podAffinityTerm:
+              labelSelector:
+                  matchExpressions:
+                    - key: "app"
+                      operator: In
+                      values:
+                      - zk
+              topologyKey: "kubernetes.io/hostname"
+      containers:
+      - name: kubernetes-zookeeper
+        imagePullPolicy: Always
+        image: "k8s.gcr.io/kubernetes-zookeeper:1.0-3.4.10"
+        resources:
+          requests:
+            memory: {{ .Values.zookeeper.memory }}
+            cpu: {{ .Values.zookeeper.cpu }}
+        ports:
+        - containerPort: 2181
+          name: client
+        - containerPort: 2888
+          name: server
+        - containerPort: 3888
+          name: leader-election
+        command:
+        - sh
+        - -c
+        - "start-zookeeper \
+          --servers=3 \
+          --data_dir=/var/lib/zookeeper/data \
+          --data_log_dir=/var/lib/zookeeper/data/log \
+          --conf_dir=/opt/zookeeper/conf \
+          --client_port=2181 \
+          --election_port=3888 \
+          --server_port=2888 \
+          --tick_time=2000 \
+          --init_limit=10 \
+          --sync_limit=5 \
+          --heap=512M \
+          --max_client_cnxns=60 \
+          --snap_retain_count=3 \
+          --purge_interval=12 \
+          --max_session_timeout=40000 \
+          --min_session_timeout=4000 \
+          --log_level=INFO"
+        readinessProbe:
+          exec:
+            command:
+            - sh
+            - -c
+            - "zookeeper-ready 2181"
+          initialDelaySeconds: 10
+          timeoutSeconds: 5
+        livenessProbe:
+          exec:
+            command:
+            - sh
+            - -c
+            - "zookeeper-ready 2181"
+          initialDelaySeconds: 10
+          timeoutSeconds: 5
+        volumeMounts:
+        - name: zkdatadir
+          mountPath: /var/lib/zookeeper
+      securityContext:
+        runAsUser: 1000
+        fsGroup: 1000
+  volumeClaimTemplates:
+  - metadata:
+      name: zkdatadir
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      storageClassName: {{ .Values.storageClass }}
+      resources:
+        requests:
+          storage: {{ .Values.zookeeper.storage }}
diff --git a/helm/values.yaml b/helm/values.yaml
new file mode 100644
index 0000000..19844f6
--- /dev/null
+++ b/helm/values.yaml
@@ -0,0 +1,53 @@
+storageClass: hostpath
+
+webapp:
+  distributed:
+    image: nexusjpl/nexus-webapp:distributed.0.1.3
+    driver:
+      cores: 1
+      coreLimit: "1200m"
+      memory: "512m"
+    executor:
+      cores: 1
+      instances: 2
+      memory: "512m"
+
+cassandra:
+  replicas: 2
+  storage: 13Gi
+  requests:
+    cpu: 1
+    memory: 3Gi
+  limits:
+    cpu: 1
+    memory: 3Gi
+
+solr:
+  replicas: 2
+  storage: 10Gi
+  heap: 4g
+  requests:
+    memory: 5Gi
+    cpu: 1 
+  limits:
+    memory: 5Gi
+    cpu: 1
+
+zookeeper:
+  replicas: 2
+  memory: 1Gi
+  cpu: 0.5
+  storage: 8Gi
+
+ingress:
+  namespace: ingress-nginx-local
+
+onEarthProxyIP: ""
+
+nginx-ingress:
+  controller:
+    kind: DaemonSet
+    service:
+      enabled: false
+  defaultBackend:
+    enabled: false
\ No newline at end of file

Reply via email to