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