Skip to content

Latest commit

 

History

History
85 lines (62 loc) · 3.4 KB

deploy.md

File metadata and controls

85 lines (62 loc) · 3.4 KB

Deploy ESGF using Kubernetes

This project provides a Helm chart to deploy ESGF resources on a Kubernetes cluster.

The chart is in deploy/kubernetes/chart. Please look at the files to understand exactly what resources are being created.

For a complete list of all the variables that are available, please look at the values.yaml for the chart. The defaults there have extensive comments that explain how to use these variables. This documentation describes how to apply some common configurations.

Installing/upgrading ESGF

Before attempting to install the ESGF Helm chart, you must have the following:

Next, make a configuration directory - this can be anywhere on your machine that is not under esgf-docker. You can also place this directory under version control if you wish - this can be very useful for tracking changes to the configuration, or even triggering deployments automatically when configuration changes.

In your configuration directory, make a new YAML file called values.yaml and override any variables to fit your deployment. The only required variable is hostname, which should be the DNS name at which your ESGF deployment will be available:

hostname: esgf.example.org

NOTE

The Helm chart does not create a DNS entry for the hostname. This must be separately configured to point to the ingress controller for your Kubernetes cluster.

Once you have configured your values.yaml, you can install or upgrade ESGF using the Helm chart. If no namespace is specified, it will use the default namespace for your kubectl configuration:

helm upgrade -i [-n <namespace>] -f /my/esgf/config/values.yaml --wait esgf ./deploy/kubernetes/chart

Local test installation with Minikube

For local test deployments, you can use Minikube with data from roocs/mini-esgf-data:

# Start the minikube cluster
minikube start
# Enable the ingress addon
minikube addons enable ingress
# Install the test data
minikube ssh "curl -fsSL https://github.com/roocs/mini-esgf-data/tarball/master | sudo tar -xz --strip-components=1 -C / --wildcards */test_data"

Configure the chart to serve the test data (see minikube-values.yaml), using a nip.io domain pointing to the Minikube server:

helm install esgf ./deploy/kubernetes/chart/ \
  -f ./deploy/kubernetes/minikube-values.yaml \
  --set hostname="$(minikube ip).nip.io"

Once the containers have started, the THREDDS interface will be available at http://$(minikube ip).nip.io/thredds.

Configuring the installation

See Configuring a Kubernetes deployment.