This document outlines how to perform a quick deployment of Kubeflow, JupyterHub and Elyra on Open Data Hub (ODH) using the Open Data Hub Operator.
Note the following:
kubeflow
project/namespace.Verify that the following requirements are met.
oc
) is installed locally.
Open a terminal window and run the copied command.
$ oc login --token=TOKEN_VAL --server=https://SERVER:PORT
Create a new project named kubeflow
.
$ oc new-project kubeflow
Verify that the CLI is using the new kubeflow
project.
$ oc project kubeflow
Keep the terminal window open.
The Open Data Hub Project Operator manages installation, configuration, and the lifecycle of Open Data Hub projects. The operator is available on OpenShift OperatorHub as a community operator.
To install the operator:
Administrator
view.Home
> Projects
).
kubeflow
project.
Operators
> OperatorHub
).Open Data Hub
operator.
Operators
> Installed Operators
and wait for the operator installation to complete.Next, you'll install Kubeflow using the operator.
To deploy Kubeflow using the Open Data Hub operator:
Open Data Hub
operator from the list of installed operators.Details
tab, if it is not opened by default.
Create instance
.Configure via YAML view
.Create
to deploy Kubeflow on the cluster.In the terminal window monitor the deployment progress by periodically listing pods in the kubeflow
namespace. Wait until all pods are running. This might take a couple minutes.
$ oc get pods --namespace kubeflow
Upon successful deployment you can access the Kubeflow Central dashboard using a public route.
In the terminal window run the following command to retrieve the public Kubeflow Central dashboard URL:
$ oc get routes -n istio-system istio-ingressgateway -o jsonpath='http://{.spec.host}'
Open the displayed URL in a web browser to access the Kubeflow Central dashboard.
Do not select a namespace entry, if you've deployed Kubeflow using the defaults.
The Kubeflow deployment is complete. As part of this deployment an instance of the MinIO object storage was provisioned.
Next, you'll create a public endpoint for this service that provides you access to the MinIO GUI.
Elyra utilizes object storage to persist artifacts during pipeline processing. The MinIO GUI provides a basic GUI that is not exposed publicly by default.
To make the GUI available:
In the terminal window create a public endpoint for the MinIO service that was deployed alongside Kubeflow.
$ oc create route edge --service=minio-service --namespace=kubeflow --port=9000 --insecure-policy=Redirect
Retrieve the public MinIO URL.
$ oc get routes -n kubeflow minio-service -o jsonpath='https://{.spec.host}'
Open the displayed URL in a web browser to access the MinIO GUI. Log in using the default credentials (minio
/minio123
).
Note the mlpipeline
bucket. This bucket is used by Kubeflow and should not be deleted!
http://minio-service-kubeflow...
).minio
).minio123
).Next, you'll install JupyterHub with Elyra support.
In Open Data Hub, notebooks are served using JupyterHub. The default deployment includes a container image that has JupyterLab with the Elyra extensions pre-installed.
To deploy JupyterHub and its dependencies:
Operators
> Installed Operators
.Open Data Hub
operator from the list of installed operators.Details
tab, if it is not opened by default.Create instance
.Configure via YAML view
.Copy and paste the following deployment configuration into the editor. This minimal configuration installs common ODH options, JupyterHub, and container images that serve Jupyter notebooks. One of these images, which is named s2i-lab-elyra:vX.Y.Z
, has JupyterLab with Elyra pre-installed.
apiVersion: kfdef.apps.kubeflow.org/v1
kind: KfDef
metadata:
annotations:
kfctl.kubeflow.io/force-delete: 'false'
name: opendatahub
namespace: kubeflow
spec:
applications:
# REQUIRED: This contains all of the common options used by all ODH components
- kustomizeConfig:
repoRef:
name: manifests
path: odh-common
name: odh-common
# Deploy Jupyter Hub
- kustomizeConfig:
parameters:
- name: s3_endpoint_url
value: s3.odh.com
repoRef:
name: manifests
path: jupyterhub/jupyterhub
name: jupyterhub
# Deploy Jupyter notebook container images
- kustomizeConfig:
overlays:
- additional
repoRef:
name: manifests
path: jupyterhub/notebook-images
name: notebook-images
repos:
- name: manifests
uri: 'https://github.com/opendatahub-io/odh-manifests/tarball/v1.0.11'
version: v1.0.11
status: {}
Note: Above deployment configuration utilizes version 1.0.11 of the Open Data Hub manifests, which includes Elyra v2.2.4.
Create
and wait for the deployment to complete.Next, you'll use the JupyterHub spawner to launch Elyra.
The JupyterHub instance you've deployed includes a container image that has JupyterLab with the Elyra extensions installed.
To run this image:
$ oc get routes -n kubeflow jupyterhub -o jsonpath='http://{.spec.host}/' ```
s2i-lab-elyra:vX.Y.Z
as notebook image.Note: The image tag version does not represent the Elyra version.
Once the container image was pulled and the container is running the JupyterLab GUI with the Elyra extensions opens in the browser window.
In the JupyterLab Launcher window navigate to the Other
category and open a terminal.
elyra-pipeline --version
to display the Elyra version:Next, you'll create a runtime configuration if you already have Kubeflow deployed in this cluster. If you don't have Kubeflow installed skip the next section.
In Elyra runtime configurations are used to provide the tooling access to external resources where pipelines can be executed.
To create a runtime configuration that allows for running of pipelines on the Kubeflow instance you've deployed:
Runtimes
tab from the JupyterLab side bar.Click +
and New Kubeflow Pipelines runtime
.
Enter the following Kubeflow and MinIO configuration information, assuming you've performed a Kubeflow quick install using the linked manifest:
Local Kubeflow Pipelines
Kubeflow Pipelines API Endpoint: the output from command
$ oc get routes -n istio-system istio-ingressgateway -o jsonpath='http://{.spec.host}/pipeline'
Kubeflow Pipelines User Namespace: leave empty, if Kubeflow deployment defaults were used
Kubeflow Pipelines API Endpoint Username: leave empty, if Kubeflow deployment defaults were used
Kubeflow Pipelines API Endpoint Password: leave empty, if Kubeflow deployment defaults were used
Kubeflow Pipelines Engine: Tekton
, if Kubeflow deployment defaults were used
Cloud Object Storage Endpoint: the output from command
$ oc get routes -n kubeflow minio-service -o jsonpath='https://{.spec.host}'
Cloud Object Storage Credentials Secret: leave empty
Cloud Object Storage Username: minio
if Kubeflow deployment defaults were used, otherwise the appropriate id
Cloud Object Storage Password: minio123
if Kubeflow deployment defaults were used, otherwise the appropriate password
Cloud Object Storage Bucket Name: elyra-pipeline-storage
Save the runtime configuration.
This concludes the quick deployment and configuration tasks.