This directory contains the configuration files for installing OpenDataHub (ODH) with KServe support for the MaaS platform.
- RawDeployment Mode: Direct pod deployments without Knative/Serverless overhead
- NVIDIA NIM Support: GPU-accelerated inference with NVIDIA Inference Microservices
- Headless Services: Direct pod-to-pod communication for low latency
- OpenShift Integration: Uses OpenShift's default ingress and certificates
Use the provided installation script which handles all steps in the correct order:
# From the project root
./deployment/scripts/installers/install-odh.sh-
Install ODH Operator from OperatorHub:
# Via OpenShift Console: # 1. Navigate to Operators → OperatorHub # 2. Search for "OpenDataHub" # 3. Install with default settings # Or via CLI: oc create -f - <<EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: opendatahub-operator namespace: openshift-operators spec: channel: fast name: opendatahub-operator source: community-operators sourceNamespace: openshift-marketplace EOF
-
Create namespace:
kubectl create namespace opendatahub
-
Wait for CRDs to be registered:
# Wait for the operator to create the CRDs kubectl wait --for condition=established --timeout=300s \ crd/dscinitializations.dscinitialization.opendatahub.io \ crd/datascienceclusters.datasciencecluster.opendatahub.io
-
Apply the configuration:
# IMPORTANT: DSCInitialization MUST be created before DataScienceCluster kubectl apply -f dscinitialisation.yaml # Wait for DSCInitialization to be ready kubectl wait --for=jsonpath='{.status.phase}'=Ready \ dscinitializations.dscinitialization.opendatahub.io/default-dsci \ -n opendatahub --timeout=300s # Now create the DataScienceCluster kubectl apply -f datasciencecluster.yaml
Or use kustomize:
kubectl apply -k deployment/components/odh/
This is the most common error when creating a DataScienceCluster. It occurs when:
- The ODH operator is not installed
- The DSCInitialization resource hasn't been created yet
- The CRDs haven't been registered yet
Solution: Run the fix script:
./deployment/scripts/installers/fix-odh-dsci.shThis script will:
- Check if the ODH operator is installed
- Wait for CRDs to be registered
- Create the DSCInitialization if missing
- Provide next steps for creating the DataScienceCluster
-
Check operator status:
kubectl get csv -n openshift-operators | grep opendatahub kubectl logs -n openshift-operators deployment/opendatahub-operator-controller-manager -
Check CRDs:
kubectl get crd | grep opendatahub -
Check existing resources:
kubectl get dscinitializations -A kubectl get datasciencecluster -A
-
Check pod status:
kubectl get pods -n opendatahub kubectl get pods -n kserve
- Configures the foundational settings for ODH
- Sets up Service Mesh integration
- Configures monitoring and trusted CA bundles
- MUST be created before DataScienceCluster
- Deploys the actual ODH components
- Configured for KServe with:
- RawDeployment mode: No Knative/Serverless overhead
- NIM support: For NVIDIA GPU inference
- Headless services: For direct pod communication
- OpenShift ingress: Native OpenShift routing
- ✅ Enabled: Dashboard, Workbenches, KServe (with NIM)
- ❌ Disabled: ModelMesh, Pipelines, Ray, Kueue, Model Registry, TrustyAI, Training Operator
After installation, verify the deployment:
# Check DSCInitialization status
kubectl get dscinitializations -n opendatahub
# Check DataScienceCluster status
kubectl get datasciencecluster -n opendatahub
# Check KServe components
kubectl get pods -n kserve
# Check if InferenceService CRD is available
kubectl get crd inferenceservices.serving.kserve.ioOnce ODH is installed with KServe, you can:
- Deploy models using KServe InferenceService
- Use the MaaS API for model management
- Apply rate limiting and authentication policies
- Monitor model performance through the ODH dashboard