Seldon Deploy

Install Seldon Core and Seldon Deploy

This page contains instructions and details for the advanced instalallation of Seldon Deploy and Seldon Core.


Prepare seldon-system namespace

We start with creating a namespace that will hold Seldon’s main components, traditionally naming it seldon-system.

kubectl create ns seldon-system || echo "Namespace seldon-system already exists"

Seldon Deploy (installation)

Before installing Seldon Deploy we need to create a secret in Kubernetes that will store Docker Hub credentials required to download the Seldon Deploy images. Following script will create a regcred secret in the seldon-system namespace:

kubectl create secret docker-registry regcred \
    --namespace=seldon-system \
    --docker-server=index.docker.io \
    --docker-username=${DOCKER_USER} \
    --docker-password=${DOCKER_PASSWORD} \
    --docker-email=${DOCKER_EMAIL} \
    --dry-run -o yaml | kubectl apply -f -

Once secret is created we can install a vanilla version of Seldon Deploy:

helm upgrade seldon-deploy ./seldon-deploy-install/sd-setup/helm-charts/seldon-deploy/ \
    --set image.image=seldonio/seldon-deploy:1.0.0-rc2 \
    --set virtualService.create=false \
    --set requestLogger.create=false \
    --set gitops.argocd.enabled=false \
    --set enableAppAuth=false \
    --namespace=seldon-system \
    --install

Now we can just wait until the Seldon Deploy roll-out finishes

kubectl rollout status deployment/seldon-deploy -n seldon-system

Note that due the flags set above this vanilla version of seldon deploy would lack certain features such as request logging and gitops.

Seldon Deploy (configuration)

Seldon Deploy is installed using helm-charts. It is recommended to use helm upgrade command with --install flag. This will allow to re-issue the command to bring new settings or upgrade the Seldon Deploy version.

Installation options can be set in two ways:

  • Using yaml values file specified with helm -f flag (recommended)
  • Using helm --set flags

Please, see helm upgrade --help and official documentation for more information.

Using a yaml file with values is recommended as it provides a more reproducible installation.

The default installation values are defined in the helm-charts and can be viewed with

cat seldon-deploy-install/sd-setup/helm-charts/seldon-deploy/values.yaml

You can view values set on your current installation with

helm get values -a -n seldon-system seldon-deploy

Note that -a flag tells helm to give you all values - skipping that flag you will only see values set by you explicitly on previous installation.

Following deploy-values.yaml file is equivalent to presented above --set options

image:
  image: seldonio/seldon-deploy:1.0.0-rc2

rbac:
  clusterWide: true

virtualService:
  create: false

requestLogger:
  create: false

gitops:
  argocd:
    enabled: false

enableAppAuth: false

You can install Seldon Deploy using the above values file with following command

helm upgrade seldon-deploy ./seldon-deploy-install/sd-setup/helm-charts/seldon-deploy/ \
    -f deploy-values.yaml \
    --namespace=seldon-system \
    --install

Seldon Core (installation)

Seldon Core can be installed using published helm-charts. To add helm charts we can use following script

helm repo add seldonio https://storage.googleapis.com/seldon-charts
helm repo update

You can now install Seldon Core without any integrations with the script below. Make sure to follow relevant individual feature workflow installation sections to enable specific features. For further detail on each of the parameters available in the installation script you can read the helm chart values section in the seldon core documentation.

helm upgrade seldon-core seldonio/seldon-core-operator \
    --version 1.5.0 \
    --namespace seldon-system \
    --install

Seldon Core (configuration)

Similarly to the Seldon Deploy case we will assume that there is a core-values.yaml file specifying Seldon Core related configurations. The helm command will now read

helm upgrade seldon-core seldonio/seldon-core-operator \
    -f core-values.yaml \
    --version 1.5.0 \
    --namespace seldon-system \
    --install

Ensuring visibility on namespaces

The seldon.restricted=false label is required on namespaces accessible by Seldon Deploy. If you don’t add this annotation to the namespace, you will not be able to see it in the UI.

kubectl create namespace seldon || echo "namespace seldon exists"
kubectl label ns seldon seldon.restricted=false --overwrite=true

For more information see our Namespace Visibility documentation.

Last modified November 26, 2020: upgrading notes and small corrections (7d20766)