Install operators for NVIDIA GPUs

The NVIDIA GPU operators are essential for enabling high-performance AI workloads, especially when deploying on OpenShift with NVIDIA GPUs.

About this task

This section outlines the steps for installing the following operators:
  • NVIDIA GPU Operator
  • Red Hat OpenShift AI Operator

NVIDIA GPU Operator

The NVIDIA GPU operator manages the full lifecycle of NVIDIA software components required to run GPU-accelerated workloads.

For detailed installation instructions, see the Installing the NVIDIA GPU Operator section in the NVIDIA documentation.

  1. In the OpenShift Web Console, navigate to Operators > Operator Hub.
  2. Make sure that you have selected All Projects.
  3. Search for NVIDIA GPU Operator.
  4. Select the NVIDIA GPU Operator tile.
  5. Select v25.3 from the Channel drop-down list.
  6. Select 25.3.1 from the Version drop-down list.
  7. Click Install.
  8. On the next page, click Install again.
    Note: Configuration changes are not required on the Install Operator page.
  9. Verify that the NVIDIA GPU Operator was installed successfully.
    • Navigate to Operators > Installed Operators.
    • Ensure that you have selected All projects.
    • Verify that the NVIDIA GPU Operator appears and that it has a status of Succeeded.
  10. Create a Cluster Policy for the NVIDIA GPU Operator.
    • Select NVIDIA GPU Operator.
    • Select the Cluster Policy tab.
    • Click Create Cluster Policy.
    Note: The default configurations are sufficient, but you can customize the ClusterPolicy if your organization requires it.
  11. Click Create.
    Note: This may take 10-20 minutes to finish creating. Wait until the status of the newly deployed ClusterPolicy gpu-cluster-policy for the GPU operator changes to State:ready.

Red Hat OpenShift AI Operator

Several IBM® Software Hub services require Red Hat OpenShift AI. If you plan to install services that use inference foundation models, you must install Red Hat OpenShift AI to start and serve those models. For more information, see Installing Red Hat OpenShift AI.

The following steps are applicable if you are using the x86 architecture.

  1. Run the following command to create the redhat-ods-operator project:
    oc new-project redhat-ods-operator
    
    Note: You should receive the output similar to namespace/redhat-ods-operator created.
  2. Add the following content to the rhods-operator.yaml file:
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
        name: rhods-operator
        namespace: redhat-ods-operator
  3. Run the following command to apply the yaml:
    oc apply -f rhods-operator.yaml

    You should receive the output similar to operatorgroup.operators.coreos.com/rhods-operator created.

  4. Add the following content to the rhods-operator-subscription.yaml file.
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
        name: rhods-operator
        namespace: redhat-ods-operator
    spec:
        name: rhods-operator
        channel: stable-2.22
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        config:
            env:
                - name: "DISABLE_DSC_CONFIG"
  5. Run the following command to apply the yaml:
    oc apply -f rhods-operator-subscription.yaml

    You should receive output similar to subscription.operators.coreos.com/rhods-operator created.

  6. Add the following content to the default-dsci file.
    apiVersion: dscinitialization.opendatahub.io/v1
    kind: DSCInitialization
    metadata:
      name: default-dsci
    spec:
      applicationsNamespace: redhat-ods-applications
      monitoring:
        managementState: Managed
        namespace: redhat-ods-monitoring
      serviceMesh:
        managementState: Removed
      trustedCABundle:
        managementState: Managed
        customCABundle: ""
    
  7. Run the following command to apply the yaml:
    oc apply -f default-dsci.yaml
  8. Check the status of the rhods-operator-#####.
    oc get pods -n redhat-ods-operator
    
    Your output should look similar to:
    NAME                              READY   STATUS    RESTARTS   AGE
    rhods-operator-56c85d44c9-vtk74   1/1     Running   0          3h57m
  9. Ensure that default-dsci has a PHASE of Ready by entering the following command:
    oc get dscinitialization
    
    Your output should look similar to:
    NAME           AGE     PHASE
    default-dsci   4d18h   Ready
  10. Add the following content to the default-dsc.yaml file:
    apiVersion: datasciencecluster.opendatahub.io/v1
    kind: DataScienceCluster
    metadata:
        name: default-dsc
    spec:
        components:
            codeflare:
                managementState: Removed
            dashboard:
                managementState: Removed
            datasciencepipelines:
                managementState: Removed
            kserve:
                managementState: Managed
                defaultDeploymentMode: RawDeployment
                serving:
                    managementState: Removed
                    name: knative-serving
            kueue:
                managementState: Removed
            modelmeshserving:
                managementState: Removed
            ray:
                managementState: Removed
            trainingoperator:
                managementState: Managed
            trustyai:
                managementState: Removed
            workbenches:
                managementState: Removed
    
  11. Run the following command to apply the yaml:
    oc apply -f default-dsc.yaml
  12. Run the following command to check the status of the DataScienceCluster object:
    oc get datasciencecluster default-dsc -o jsonpath='"{.status.phase}" {"\n"}'
    
    Wait for the object to be ready.
  13. Confirm that the status of the following pods in the redhat-ods-applications project are running:
    • kserve-controller-manager-* pod
    • kubeflow-training-operator-* pod
    • odh-model-controller-* pod
    oc get pods -n redhat-ods-applications
    Your output should look similar to:
    NAME                                          READY   STATUS       RESTARTS      AGE
    kserve-controller-manager-55f985c695-5zqfg    1/1     Running   1 (24h ago)   28h
    kubeflow-training-operator-7fb8cbbd5d-4blrh   1/1     Running   0             28h
    odh-model-controller-6bff7b8b8b-ghwqj         1/1     Running   0             28h
  14. Edit the inferenceservice-config configuration map in the redhat-ods-application project.
    • In the Openshift Web Console, navigate to Workloads > Configmaps.
    • From the Project list, select redhat-ods-application.
    • Click the inferenceservice-config resource.
    • Click the YAML tab.
    • In the metadata.annotations section of the file, add opendatahub.io/managed: 'false'.
      metadata:
        annotations:
          internal.config.kubernetes.io/previousKinds: ConfigMap
          internal.config.kubernetes.io/previousNames: inferenceservice-config
          internal.config.kubernetes.io/previousNamespaces: opendatahub
          opendatahub.io/managed: 'false' # This line was added
    • Find the following entry in the YAML file: "domainTemplate": "{{ .Name }}-{{ .Namespace }}.{{ .IngressDomain }}",
    • Update the value of the domainTemplate field to "example.com".
      "domainTemplate": "example.com",
  15. Click Save.