在断开连接的环境中安装和卸载 OpenShift AI Self-Managed


Red Hat OpenShift AI Self-Managed 2.16

在断开连接的环境中安装和卸载 OpenShift AI Self-Managed

摘要

在断开连接的环境中,在 OpenShift 集群上安装并卸载 OpenShift AI Self-Managed。

前言

了解如何使用 OpenShift 命令行界面和 Web 控制台在断开连接的环境中在 OpenShift 集群上安装 Red Hat OpenShift AI Self-Managed。要卸载产品,了解如何使用推荐的命令行界面 (CLI) 方法。

注意

红帽不支持在集群中安装多个 OpenShift AI 实例。

红帽不支持在与 Red Hat OpenShift AI 附加组件相同的集群中安装 Red Hat OpenShift AI Operator。

第 1 章 OpenShift AI Self-Managed 的架构

Red Hat OpenShift AI Self-Managed 是一个在自助管理环境中提供的 Operator,如 Red Hat OpenShift Container Platform 或 Red Hat OpenShift Container Platform,如 Red Hat OpenShift Dedicated (具有 AWS 或 GCP 的 Customer Cloud Subscription)、Red Hat OpenShift Service on Amazon Web Services (ROSA Classic 或 ROSA HCP)或 Microsoft Azure Red Hat OpenShift。

OpenShift AI 集成了以下组件和服务:

  • 在服务层:

    OpenShift AI 仪表板
    此面向客户的仪表板会显示 OpenShift AI 环境的可用和已安装的应用程序,以及学习资源,如教程、快速启动示例和文档等。管理用户可访问管理用户、集群、笔记本镜像、加速器配置集和模型服务运行时的功能。数据科学家可以使用控制面板创建项目来整理其数据科学工作。
    模型服务
    数据科学家可以部署受培训的机器学习模型,为生产环境中的智能应用程序提供服务。部署后,应用程序可以使用其部署的 API 端点向模型发送请求。
    数据科学项目(data Science)管道
    数据科学家可以使用 Docker 容器构建带有数据科学管道 2.0 的可移植机器学习(ML)工作流。通过数据科学管道,数据科学家可以在开发其数据科学模型时自动化工作流。
    Jupyter (自助管理的)
    一个自我管理的应用程序,允许数据科学家自行配置笔记本服务器环境并在 JupyterLab 中开发机器学习模型。
    分布式工作负载
    数据科学家可以并行使用多个节点来更迅速地培训机器学习模型或处理数据。这种方法可显著减少任务完成时间,并允许使用更大的数据集和更复杂的模型。
  • 在管理层:

    Red Hat OpenShift AI Operator
    一个 meta-operator,它部署和维护属于 OpenShift AI 的所有组件和子 Operator。
    监控服务
    Prometheus 从 OpenShift AI 收集指标数据以进行监控。

在 OpenShift 集群中安装 Red Hat OpenShift AI Operator 时,会创建以下新项目:

  • redhat-ods-operator 项目包含 Red Hat OpenShift AI Operator。
  • redhat-ods-applications 项目将安装仪表板和 OpenShift AI 的其他必要组件。
  • redhat-ods-monitoring 项目包含用于监控的服务。
  • rhods-notebooks 项目是默认部署笔记本环境的位置。

您或您的数据科学家必须为将使用机器学习模式的应用创建额外的项目。

不要在与 OpenShift AI 关联的命名空间中安装独立软件供应商 (ISV) 的应用程序。

第 2 章 了解更新频道

您可以使用更新频道来指定您要将 Operator 更新至的 Red Hat OpenShift AI 次版本。更新频道还允许您通过 fast, stable ,stable -x.y eus-x.y, 和 alpha 频道选项选择您的更新的时间和级别。

已安装的 Operator 的订阅指定更新频道,用于跟踪和接收 Operator 的更新。您可以更改更新频道,以开始跟踪并从更新频道接收更新。有关发行频率以及与每个可用更新频道关联的生命周期的更多信息,请参阅 Red Hat OpenShift AI Self-Managed Life Cycle 知识库文章。

Expand
Channel支持发行频率推荐的环境

fast

一个月的完全支持

每个月

可访问最新产品功能的生产环境。

使用自动更新选择此流频道,以避免每月手动升级。

stable

三个完全支持

每三个月

生产环境,其稳定性优先于新功能可用性。

使用自动更新选择此流频道来访问最新的稳定版本,并避免手动升级。

stable-x.y

七月的完全支持

每三个月

生产环境,其稳定性优先于新功能可用性。

选择编号的 stable 频道(如 stable-2.10)来计划和升级到下一个稳定版本,同时保持您的部署获得全面支持。

eus-x.y

持续 7 个月的完全支持后,延长的更新支持将持续 7 个月

每 9 个月

在 7 个月内无法升级的企业级环境。

如果您优先选择对新功能可用性的稳定性,请选择此流频道。

alpha

一个月的完全支持

每个月

具有早期访问功能的开发环境可能无法正常工作。

选择此频道以使用早期访问功能来测试功能并在开发过程中提供反馈。红帽产品服务等级协议 (SLA) 不支持 early-access 的功能。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

有关 Red Hat Developer 技术预览功能支持范围的更多信息,请参阅开发人员技术预览功能支持范围

注意

embeddedbeta 频道是将在以后的版本中删除的传统频道。不要为新的 Operator 安装选择 内嵌beta 频道。

第 3 章 在断开连接的环境中部署 OpenShift AI

请阅读本节,了解如何在断开连接的环境中为数据科学家部署 Red Hat OpenShift AI 作为开发和测试环境环境。断开连接的集群位于受限网络中,通常在防火墙后面。在这种情况下,集群无法访问红帽提供的 OperatorHub 源所在的远程 registry。相反,Red Hat OpenShift AI Operator 可以使用私有 registry 镜像到断开连接的环境中。

在断开连接的环境中安装 OpenShift AI 涉及以下高级别任务:

  1. 确认 OpenShift 集群满足所有要求。请参阅 OpenShift AI Self-Managed 的要求
  2. 为 OpenShift 添加管理用户。请参阅在 OpenShift 中添加管理用户
  3. 将镜像镜像(mirror)到私有 registry。对于 断开连接的安装,请参阅将镜像镜像到私有 registry
  4. 安装 Red Hat OpenShift AI Operator。请参阅安装 Red Hat OpenShift AI Operator
  5. 安装 OpenShift AI 组件。请参阅 安装和管理 Red Hat OpenShift AI 组件
  6. 配置用户和管理员组,为用户提供 OpenShift AI 的访问权限。请参阅 将用户添加到 OpenShift AI 用户组
  7. 为您的用户提供部署 OpenShift AI 的 OpenShift 集群的 URL。请参阅 访问 OpenShift AI 仪表板

3.1. OpenShift AI 自我管理的要求

要在断开连接的环境中在 Red Hat OpenShift 集群中安装 Red Hat OpenShift AI,您必须满足以下要求:

产品订阅

  • 您必须有 Red Hat OpenShift AI Self-Managed 订阅。

    请联系您的红帽客户经理购买新的订阅。如果您还没有帐户管理器,请在 https://www.redhat.com/en/contact 中填写表单以请求一个。

集群管理员对 OpenShift 集群的访问权限

  • 您必须有一个具有集群管理员访问权限的 OpenShift 集群。按照 OpenShift Container Platform 文档使用现有集群或创建集群: 在断开连接的环境中安装集群
  • 安装集群后,按照 OpenShift Container Platform 文档配置 Cluster Samples Operator: 为受限集群配置 Samples Operator
  • 在安装 Operator 时,您的集群必须至少有 2 个 worker 节点,至少有 8 个 CPU 和 32 GiB RAM 用于 OpenShift AI。为确保 OpenShift AI 可用,除了最低要求外,还需要额外的集群资源。
  • 要在单一节点 OpenShift 上使用 OpenShift AI,该节点必须至少有 32 个 CPU 和 128 GiB RAM。
  • 您的集群配置了可动态置备的默认存储类。

    运行 oc get storageclass 命令确认配置了默认存储类。如果在名称旁边没有存储类及 (默认), 请按照 OpenShift Container Platform 文档配置默认存储类: 更改默认存储类。有关动态置备的更多信息,请参阅动态置备

  • Open Data Hub 不能安装在集群中。

有关管理 组成 OpenShift 集群的机器的更多信息,请参阅机器管理概述

为 OpenShift 配置身份提供程序

镜像机器上的互联网访问

  • 除了互联网访问外,还必须访问以下域来镜像 OpenShift AI Self-Managed 安装所需的镜像:

    • cdn.redhat.com
    • subscription.rhn.redhat.com
    • registry.access.redhat.com
    • registry.redhat.io
    • quay.io
  • 对于基于 CUDA 的镜像,必须访问以下域:

    • ngc.download.nvidia.cn
    • developer.download.nvidia.com

数据科学项目准备

  • Data Science pipelines 2.0 包含 Argo 工作流的安装。如果一个现有 Argo 工作流安装没有在集群中的数据科学管道安装,则安装 OpenShift AI 后将禁用数据科学管道。在安装 OpenShift AI 前,请确保集群没有由数据科学管道安装的 Argo 工作流,或删除 Argo 工作流的独立安装。
  • 在断开连接的环境中执行管道前,您必须将镜像上传到私有 registry。如需更多信息,请参阅 镜像以在受限环境中运行管道
  • 您可以将管道工件存储在 S3 兼容对象存储桶中,以便不使用本地存储。要做到这一点,您必须首先对存储帐户上的 S3 存储桶配置写入访问权限。

安装 KServe 依赖项

  • 要支持 KServe 组件(由 single-model 服务平台用来为大型模型提供服务),还必须为 Red Hat OpenShift Serverless 和 Red Hat OpenShift Service Mesh 安装 Operator 并执行额外的配置。如需更多信息 ,请参阅关于单模式服务平台
  • 如果要为 single-model 服务平台添加授权供应商,您必须安装 Red Hat - Authorino Operator。如需更多信息,请参阅为 单模式服务平台添加授权供应商

安装模型 registry 依赖项(技术预览功能)

  • 要使用模型 registry 组件,还必须为 Red Hat Authorino、Red Hat OpenShift Serverless 和 Red Hat OpenShift Service Mesh 安装 Operator。有关配置模型 registry 组件的更多信息,请参阅配置模型 registry 组件

访问对象存储

3.2. 在 OpenShift 中添加管理用户

在您可以为数据科学家用户安装和配置 OpenShift AI 前,您必须获取 OpenShift 集群管理员(cluster-admin)特权。

要为用户分配 cluster-admin 权限,请按照相关 OpenShift 文档中的步骤操作:

您可以通过将所需的容器镜像镜像到私有容器 registry,在断开连接的环境中将 Red Hat OpenShift AI Operator 安装到 OpenShift 集群。将镜像镜像到容器 registry 后,您可以使用 OperatorHub 安装 Red Hat OpenShift AI Operator。

您可以将 mirror registry 用于 Red Hat OpenShift,它是一个小型容器 registry,用作在断开连接的环境中为 OpenShift AI 镜像所需的容器镜像的目标。如果安装环境中已有另一个容器 registry,则使用 mirror registry for Red Hat OpenShift 是可选的。

先决条件

  • 集群管理员可以访问正在运行的 OpenShift Container Platform 集群,版本 4.14 或更高版本。
  • 您有 Red Hat OpenShift Cluster Manager 的凭证(https://console.redhat.com/openshift/)。
  • 您的镜像机器正在运行 Linux,有 100 GB 的可用空间,并可访问互联网,以便它可以获取镜像来填充镜像存储库。
  • 已安装 OpenShift CLI(oc)。
  • 如果您计划使用 NVIDIA GPU,已镜像并部署了 NVIDIA GPU Operator。请参阅 OpenShift Container Platform 文档中的配置 NVIDIA GPU Operator 部分。
  • 如果您计划使用数据科学管道,已镜像 OpenShift Pipelines operator。
  • 如果您计划使用 single-model 服务平台为大型模型提供服务,您已对 Red Hat OpenShift Serverless 和 Red Hat OpenShift Service Mesh 的 Operator 进行镜像。如需更多信息,请参阅 Serving 大模型
  • 如果您计划使用分布式工作负载组件,已镜像 Ray 集群镜像。

流程

  1. 创建镜像 registry。请参阅 OpenShift Container Platform 文档中的使用 Red Hat OpenShift 创建带有 mirror registry 的镜像 registry。
  2. 要镜像 registry 镜像,请在运行 Linux 的镜像机器上安装 oc-mirror OpenShift CLI 插件(版本 4.14 或更高版本)。请参阅 OpenShift Container Platform 文档中的安装 oc-mirror OpenShift CLI 插件

    重要

    在版本 4.14 之前,oc-mirror 的版本不允许镜像提供的完整镜像集配置。

  3. 创建容器镜像 registry 凭证文件,允许将镜像从红帽镜像到您的镜像。请参阅 OpenShift Container Platform 文档中的配置允许镜像镜像的凭证
  4. 断开连接的安装程序帮助程序 存储库打开示例镜像设置配置文件(rhoai-<version>.md)并检查其内容。
  5. 使用示例镜像设置配置文件,创建一个名为 imageset-config.yaml 的文件,并使用部署中镜像设置配置的值填充。

    • 要查看可用的 OpenShift 版本列表,请运行以下命令:这可能需要几分钟。如果命令返回错误,请重复 配置允许镜像镜像的凭证 的步骤。

      oc-mirror list operators
    • 要查看特定版本的 OpenShift Container Platform 中的软件包的可用频道(如 4.15),请运行以下命令:

      oc-mirror list operators --catalog=registry.redhat.io/redhat/redhat-operator-index:v4.15 --package=<package-name>
    • 有关订阅更新频道的详情,请参阅了解更新频道

      重要

      示例镜像设置配置仅用于演示目的,可能需要根据部署进行进一步更改。

      要识别最适合您的部署的属性,请使用 oc-mirror 插件为断开连接的安装镜像 文档和用例。

      您的 imageset-config.yaml 应该类似以下示例,其中数据科学项目需要 openshift-pipelines-operator-rh,KServe 组件需要 serverless-operatorservicemeshoperator

      kind: ImageSetConfiguration
      apiVersion: mirror.openshift.io/v1alpha2
      archiveSize: 4
      storageConfig:
        registry:
          imageURL: registry.example.com:5000/mirror/oc-mirror-metadata
          skipTLS: false
      mirror:
        operators:
          - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
            packages:
              - name: rhods-operator
                channels:
                  - name: stable
                    minVersion: 2.10.0
                    maxVersion: 2.10.0
              - name: openshift-pipelines-operator-rh
                channels:
                  - name: stable
              - name: serverless-operator
                channels:
                  - name: stable
              - name: servicemeshoperator
                channels:
                  - name: stable
  6. 将指定的镜像设置配置下载到镜像机器上的本地文件中:

    • mirror-rhoai 替换为您要输出镜像集文件的目标目录。
    • 目标目录路径必须以 file:// 开头。
    • 下载可能需要几分钟时间。

      $ oc mirror --config=./imageset-config.yaml file://mirror-rhoai
      提示

      如果 tls: failed to verify certificate: x509: certificate signed by unknown authority 错误被返回,并且您想要忽略它,请在镜像设置配置文件中将 skipTLS 设置为 true,然后再次运行命令。

  7. 验证镜像设置 .tar 文件是否已创建:

    $ ls mirror-rhoai
    mirror_seq1_000000.tar mirror_seq1_000001.tar

    如果在镜像设置配置文件中指定了 archiveSize 值,则镜像集可能会划分为多个 .tar 文件。

  8. 可选:验证镜像集 .tar 文件的总大小大约为 75 GB:

    $ du -h --max-depth=1 ./mirror-rhoai/

    如果镜像集的总大小明显低于 75 GB,请再次运行 oc mirror 命令。

  9. 将生成的镜像集的内容上传到目标镜像 registry 中:

    • mirror-rhoai 替换为包含镜像设置 .tar 文件的目录。
    • registry.example.com:5000 替换为您的镜像 registry。

      $ oc mirror --from=./mirror-rhoai docker://registry.example.com:5000
      提示

      如果 tls: 无法验证 certificate: x509: certificate signed by unknown authority 错误,并且您要忽略它,请运行以下命令:

      $ oc mirror --dest-skip-tls --from=./mirror-rhoai docker://registry.example.com:5000
  10. 以具有 cluster-admin 角色的用户身份登录到目标 OpenShift 集群。
  11. 验证 ImageContentSourcePolicyCatalogSource 资源是否存在 YAML 文件:

    • <results-directory > 替换为您的结果目录的名称。

      $ ls oc-mirror-workspace/<results-directory>/
      
      catalogSource-cs-redhat-operator-index.yaml
      charts
      imageContentSourcePolicy.yaml
      mapping.txt
      release-signatures
  12. 将生成的 ImageContentSourcePolicyCatalogSource 资源安装到集群中:

    • <results-directory > 替换为您的结果目录的名称。

      $ oc apply -f ./oc-mirror-workspace/<results-directory>/imageContentSourcePolicy.yaml
      $ oc apply -f ./oc-mirror-workspace/<results-directory>/catalogSource-cs-redhat-operator-index.yaml

验证

  • 验证 CatalogSource 和 pod 是否已成功创建:

    $ oc get catalogsource,pod -n openshift-marketplace

    这应该至少返回一个目录和两个 pod。

  • 检查 OperatorHub 中是否存在 Red Hat OpenShift AI Operator:

    1. 登录到 OpenShift Container Platform 集群 Web 控制台。
    2. OperatorsOperatorHub

      OperatorHub 页面将打开。

    3. 确认显示了 Red Hat OpenShift AI Operator。
  • 如果您镜像了额外的 Operator,如 OpenShift Pipelines、Red Hat OpenShift Serverless 或 Red Hat OpenShift Service Mesh,请检查这些 Operator 是否存在 OperatorHub。

3.4. 安装 Red Hat OpenShift AI Operator

本节介绍如何使用命令行界面(CLI)和 OpenShift Web 控制台在 OpenShift 集群上安装 Red Hat OpenShift AI Operator。

注意

如果要从以前的 OpenShift AI 版本升级,而不是执行新安装,请参阅 在断开连接的环境中升级 OpenShift AI

注意

如果 OpenShift 集群使用代理访问互联网,您可以配置 Red Hat OpenShift AI Operator 的代理设置。如需更多信息,请参阅 覆盖 Operator 的代理设置

3.4.1. 使用 CLI 安装 Red Hat OpenShift AI Operator

以下流程演示了如何使用 OpenShift 命令行界面(CLI)在 OpenShift 集群上安装 Red Hat OpenShift AI Operator。您必须在集群中安装 OpenShift AI 组件前安装 Operator。

先决条件

流程

  1. 打开一个新的终端窗口。
  2. 按照以下步骤,以集群管理员身份登录到 OpenShift 集群:

    1. 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command
    2. 登录后,单击 Display token
    3. 使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中

      $ oc login --token=<token> --server=<openshift_cluster_url>
  3. 通过执行以下操作为 Operator 安装创建一个命名空间:

    1. 创建名为 rhods-operator-namespace.yaml 的命名空间 YAML 文件。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: redhat-ods-operator 
      1
      1
      定义安装 Operator 所需的 redhat-ods-operator 命名空间。
    2. 在 OpenShift 集群中创建命名空间。

      $ oc create -f rhods-operator-namespace.yaml

      您会看到类似如下的输出:

      namespace/redhat-ods-operator created
  4. 通过执行以下操作为 Operator 安装创建一个 operator 组:

    1. 创建一个 OperatorGroup 对象自定义资源 (CR) 文件,如 rhods-operator-group.yaml

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: rhods-operator
        namespace: redhat-ods-operator 
      1
      1
      定义所需的 redhat-ods-operator 命名空间。
    2. 在 OpenShift 集群中创建 OperatorGroup 对象。

      $ oc create -f rhods-operator-group.yaml

      您会看到类似如下的输出:

      operatorgroup.operators.coreos.com/rhods-operator created
  5. 通过执行以下操作为 Operator 安装创建订阅:

    1. 创建一个 Subscription 对象 CR 文件,如 rhods-operator-subscription.yaml

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: rhods-operator
        namespace: redhat-ods-operator 
      1
      
      spec:
        name: rhods-operator
        channel: <channel> 
      2
      
        source: cs-redhat-operator-index
        sourceNamespace: openshift-marketplace
        startingCSV: rhods-operator.x.y.z 
      3
      1
      定义所需的 redhat-ods-operator 命名空间。
      2
      设置更新频道。您必须指定 fast, stable ,stable -x.y eus-x.y eus-x.y, 或 alpha。如需更多信息,请参阅了解更新频道
      3
      可选:设置 operator 版本。如果没有指定值,订阅默认为最新的 operator 版本。如需更多信息,请参阅 Red Hat OpenShift AI Self-Managed Life Cycle 知识库文章。
    2. 在 OpenShift 集群中创建 Subscription 对象来安装 Operator。

      $ oc create -f rhods-operator-subscription.yaml

      您会看到类似如下的输出:

      subscription.operators.coreos.com/rhods-operator created

验证

  • 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators,并确认 Red Hat OpenShift AI Operator 显示了以下状态之一:

    • Installing - 安装正在进行中;等待它变为 Succeeded。这可能需要几分钟。
    • Succeeded - 安装成功。
  • 在 Web 控制台中,点 HomeProjects 并确认以下项目命名空间可见并列为 Active

    • redhat-ods-applications
    • redhat-ods-monitoring
    • redhat-ods-operator

以下流程演示了如何使用 OpenShift Web 控制台在集群中安装 Red Hat OpenShift AI Operator。您必须在集群中安装 OpenShift AI 组件前安装 Operator。

先决条件

流程

  1. 以集群管理员身份登录 OpenShift Web 控制台。
  2. 在 Web 控制台中,点 OperatorsOperatorHub
  3. OperatorHub 页面中,通过滚动浏览可用的 Operator 或在 Filter by keyword 框中输入 Red Hat OpenShift AI 来找到 Red Hat OpenShift AI。
  4. Red Hat OpenShift AI 标题。Red Hat OpenShift AI Information 窗格将打开。
  5. 选择一个频道。有关订阅更新频道的详情,请参阅了解更新频道
  6. 选择 版本
  7. Install。此时会打开 Install Operator 页面。
  8. 根据需要查看或更改所选频道和版本。
  9. 对于 Installation 模式,请注意唯一可用的值为 All namespaces on the cluster (default)。此安装模式使 Operator 可供集群中的所有命名空间使用。
  10. 对于 Installed Namespace,选择 Operator recommended Namespace: redhat-ods-operator
  11. 对于 更新批准,请选择以下更新策略之一:

    • 自动 :您的环境会尝试根据镜像的内容在可用时安装新的更新。
    • 手动 :集群管理员必须在安装开始前批准任何新更新。

      重要

      默认情况下,Red Hat OpenShift AI Operator 遵循一个后续更新过程。这意味着,如果当前版本和目标版本之间存在多个版本,Operator Lifecycle Manager (OLM)会将 Operator 升级到每个中间版本,然后再将其升级到最终的目标版本。

      如果配置自动升级,OLM 会自动将 Operator 升级到 最新的可用版本。如果配置手动升级,集群管理员必须手动批准当前版本和最终目标版本之间的每个后续更新。

      有关支持的版本的详情,请查看 Red Hat OpenShift AI 生命周期 知识库文章。

  12. Install

    此时会出现 Installing Operators 窗格。安装完成后,Operator 名称旁边会出现一个复选标记。

验证

  • 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators,并确认 Red Hat OpenShift AI Operator 显示了以下状态之一:

    • Installing - 安装正在进行中;等待它变为 Succeeded。这可能需要几分钟。
    • Succeeded - 安装成功。
  • 在 Web 控制台中,点 HomeProjects 并确认以下项目命名空间可见并列为 Active

    • redhat-ods-applications
    • redhat-ods-monitoring
    • redhat-ods-operator

3.5. 安装和管理 Red Hat OpenShift AI 组件。

您可以使用 OpenShift 命令行界面(CLI)或 OpenShift Web 控制台在 OpenShift 集群上安装和管理 Red Hat OpenShift AI 的组件。

3.5.1. 使用 CLI 安装 Red Hat OpenShift AI 组件

要使用 OpenShift 命令行界面(CLI)安装 Red Hat OpenShift AI 组件,您必须创建和配置 DataScienceCluster 对象。

重要

以下流程描述了如何创建和配置 DataScienceCluster 对象,以作为安装的一部分安装 Red Hat OpenShift AI 组件。

先决条件

流程

  1. 打开一个新的终端窗口。
  2. 按照以下步骤,以集群管理员身份登录到 OpenShift 集群:

    1. 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command
    2. 登录后,单击 Display token
    3. 使用此令牌命令复制登录,并将它粘贴到 OpenShift 命令行界面(CLI)中

      $ oc login --token=<token> --server=<openshift_cluster_url>
  3. 创建 DataScienceCluster 对象自定义资源 (CR) 文件,如 rhods-operator-dsc.yaml

    apiVersion: datasciencecluster.opendatahub.io/v1
    kind: DataScienceCluster
    metadata:
      name: default-dsc
    spec:
      components:
        codeflare:
          managementState: Removed
        dashboard:
          managementState: Removed
        datasciencepipelines:
          managementState: Removed
        kserve:
          managementState: Removed 
    1
     
    2
    
        kueue:
          managementState: Removed
        modelmeshserving:
          managementState: Removed
        ray:
          managementState: Removed
        trainingoperator:
          managementState: Removed
        trustyai:
          managementState: Removed
        workbenches:
          managementState: Removed
    1
    要完全安装 KServe 组件(由单模型服务平台用来提供大型模型),您必须为 Red Hat OpenShift Service Mesh 和 Red Hat OpenShift Serverless 安装 Operator 并执行额外的配置。请参阅 安装单模式服务平台
    2
    如果您还没有 启用 KServe 组件(即,将 managementState 字段设置为 Removed),还必须禁用依赖 Service Mesh 组件以避免错误。请参阅禁用 KServe 依赖项
  4. 在 CR 的 spec.components 部分中,对于所示的每个 OpenShift AI 组件,将 managementState 字段的值设置为 ManagedRemoved。这些值定义如下:

    受管
    Operator 会主动管理组件,安装它,并尝试保持其活跃。只有在组件安全时,Operator 才会升级组件。
    删除
    Operator 会主动管理组件,但不安装它。如果组件已安装,Operator 将尝试将其删除。
    重要
  5. 在 OpenShift 集群中创建 DataScienceCluster 对象来安装指定的 OpenShift AI 组件。

    $ oc create -f rhods-operator-dsc.yaml

    您会看到类似如下的输出:

    datasciencecluster.datasciencecluster.opendatahub.io/default created

验证

  • 确认每个组件都有一个正在运行的 pod:

    1. 在 OpenShift Web 控制台中,点击 WorkloadsPods
    2. 在页面顶部的 Project 列表中,选择 redhat-ods-applications
    3. 在 applications 命名空间中,确认您安装的每个 OpenShift AI 组件都有运行 pod。
  • 确认所有安装的组件的状态:

    1. 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators
    2. 点 Red Hat OpenShift AI Operator。
    3. Data Science Cluster 选项卡,再选择名为 default-dscDataScienceCluster 对象。
    4. 选择 YAML 选项卡。
    5. installedComponents 部分中,确认您安装的组件的状态为 true

      注意

      如果组件显示 CR 的 spec.components 部分中的 component-name: {} 格式,则不会安装该组件。

要使用 OpenShift Web 控制台安装 Red Hat OpenShift AI 组件,您必须创建和配置 DataScienceCluster 对象。

重要

以下流程描述了如何创建和配置 DataScienceCluster 对象,以作为安装的一部分安装 Red Hat OpenShift AI 组件。

先决条件

流程

  1. 以集群管理员身份登录 OpenShift Web 控制台。
  2. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  3. Data Science Cluster 选项卡。
  4. Create DataScienceCluster
  5. 对于 Configure via,选择 YAML view

    嵌入式 YAML 编辑器会打开 DataScienceCluster 对象的默认自定义资源(CR),如下例所示:

    apiVersion: datasciencecluster.opendatahub.io/v1
    kind: DataScienceCluster
    metadata:
      name: default-dsc
    spec:
      components:
        codeflare:
          managementState: Removed
        dashboard:
          managementState: Removed
        datasciencepipelines:
          managementState: Removed
        kserve:
          managementState: Removed 
    1
     
    2
    
        kueue:
          managementState: Removed
        modelmeshserving:
          managementState: Removed
        ray:
          managementState: Removed
        trainingoperator:
          managementState: Removed
        trustyai:
          managementState: Removed
        workbenches:
          managementState: Removed
    1
    要完全安装 KServe 组件(由单模型服务平台用来提供大型模型),您必须为 Red Hat OpenShift Service Mesh 和 Red Hat OpenShift Serverless 安装 Operator 并执行额外的配置。请参阅 安装单模式服务平台
    2
    如果您还没有 启用 KServe 组件(即,将 managementState 字段设置为 Removed),还必须禁用依赖 Service Mesh 组件以避免错误。请参阅禁用 KServe 依赖项
  6. 在 CR 的 spec.components 部分中,对于所示的每个 OpenShift AI 组件,将 managementState 字段的值设置为 ManagedRemoved。这些值定义如下:

    受管
    Operator 会主动管理组件,安装它,并尝试保持其活跃。只有在组件安全时,Operator 才会升级组件。
    删除
    Operator 会主动管理组件,但不安装它。如果组件已安装,Operator 将尝试将其删除。
    重要
  7. Create

验证

  • 确认每个组件都有一个正在运行的 pod:

    1. 在 OpenShift Web 控制台中,点击 WorkloadsPods
    2. 在页面顶部的 Project 列表中,选择 redhat-ods-applications
    3. 在 applications 命名空间中,确认您安装的每个 OpenShift AI 组件都有运行 pod。
  • 确认所有安装的组件的状态:

    1. 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators
    2. 点 Red Hat OpenShift AI Operator。
    3. Data Science Cluster 选项卡,再选择名为 default-dscDataScienceCluster 对象。
    4. 选择 YAML 选项卡。
    5. installedComponents 部分中,确认您安装的组件的状态为 true

      注意

      如果组件显示 CR 的 spec.components 部分中的 component-name: {} 格式,则不会安装该组件。

您可以使用 OpenShift Web 控制台更新 OpenShift 集群中 Red Hat OpenShift AI 组件的安装状态。

重要

如果您升级了 OpenShift AI,升级过程会自动使用之前版本的 DataScienceCluster 对象的值。新组件不会自动添加到 DataScienceCluster 对象中。

升级 OpenShift AI 后:

  • 检查默认的 DataScienceCluster 对象,以检查并选择性地更新现有组件的 managementState 状态。
  • 将任何新组件添加到 DataScienceCluster 对象中。

先决条件

  • Red Hat OpenShift AI Operator 安装在 OpenShift 集群中。
  • 具有集群管理员特权。

流程

  1. 以集群管理员身份登录 OpenShift Web 控制台。
  2. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  3. Data Science Cluster 选项卡。
  4. DataScienceClusters 页面中,点 default 对象。
  5. YAML 标签。

    嵌入式 YAML 编辑器会打开显示 DataScienceCluster 对象的默认自定义资源(CR),如下例所示:

    apiVersion: datasciencecluster.opendatahub.io/v1
    kind: DataScienceCluster
    metadata:
      name: default-dsc
    spec:
      components:
        codeflare:
          managementState: Removed
        dashboard:
          managementState: Removed
        datasciencepipelines:
          managementState: Removed
        kserve:
          managementState: Removed
        kueue:
          managementState: Removed
        modelmeshserving:
          managementState: Removed
        ray:
          managementState: Removed
        trainingoperator:
          managementState: Removed
        trustyai:
          managementState: Removed
        workbenches:
          managementState: Removed
  6. 在 CR 的 spec.components 部分中,对于所示的每个 OpenShift AI 组件,将 managementState 字段的值设置为 ManagedRemoved。这些值定义如下:

    受管
    Operator 会主动管理组件,安装它,并尝试保持其活跃。只有在组件安全时,Operator 才会升级组件。
    删除
    Operator 会主动管理组件,但不安装它。如果组件已安装,Operator 将尝试将其删除。
    重要
  7. 点击 Save

    对于您更新的任何组件,OpenShift AI 会启动一个推出影响所有 Pod 来使用更新的镜像。

验证

  • 确认每个组件都有一个正在运行的 pod:

    1. 在 OpenShift Web 控制台中,点击 WorkloadsPods
    2. 在页面顶部的 Project 列表中,选择 redhat-ods-applications
    3. 在 applications 命名空间中,确认您安装的每个 OpenShift AI 组件都有运行 pod。
  • 确认所有安装的组件的状态:

    1. 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators
    2. 点 Red Hat OpenShift AI Operator。
    3. Data Science Cluster 选项卡,再选择名为 default-dscDataScienceCluster 对象。
    4. 选择 YAML 选项卡。
    5. installedComponents 部分中,确认您安装的组件的状态为 true

      注意

      如果组件显示 CR 的 spec.components 部分中的 component-name: {} 格式,则不会安装该组件。

第 4 章 安装分布式工作负载组件

要在 OpenShift AI 中使用分布式工作负载功能,您必须安装几个组件。

先决条件

  • 已使用 cluster-admin 角色登录到 OpenShift,您可以访问数据科学项目。
  • 已安装 Red Hat OpenShift AI。
  • 您有足够的资源。除了 安装和部署 OpenShift AI (用于断开连接的环境) 中描述的最低 OpenShift AI 资源外,请参阅 在断开连接的环境中部署 OpenShift AI,您需要 1.6 vCPU 和 2 GiB 内存来部署分布式工作负载基础架构。
  • 您已删除了 CodeFlare Operator 的任何以前安装实例,如 知识库解决方案 如何从数据科学集群中的单独安装的 CodeFlare Operator 迁移
  • 如果要使用图形处理单元(GPU),在 OpenShift AI 中启用了 GPU 支持。如果使用 NVIDIA GPU,请参阅启用 NVIDIA GPU。如果使用 AMD GPU,请参阅 AMD GPU 集成

    注意

    红帽支持在同一集群中使用加速器。红帽不支持在加速器之间远程直接内存访问(RDMA),或使用网络上的加速器,例如使用 NVIDIA GPUDirect 或 NVLink 等技术。

  • 如果要使用自签名证书,请将它们添加到中央证书颁发机构(CA)捆绑包中,如使用 证书 (用于断开连接的环境)中所述,请参阅使用证书。不需要额外的配置来将这些证书与分布式工作负载一起使用。集中配置的自签名证书会在以下挂载点的工作负载 pod 中自动可用:

    • 集群范围的 CA 捆绑包:

      /etc/pki/tls/certs/odh-trusted-ca-bundle.crt
      /etc/ssl/certs/odh-trusted-ca-bundle.crt
    • 自定义 CA 捆绑包:

      /etc/pki/tls/certs/odh-ca-bundle.crt
      /etc/ssl/certs/odh-ca-bundle.crt

流程

  1. 在 OpenShift 控制台中,点 OperatorsInstalled Operators
  2. 搜索 Red Hat OpenShift AI Operator,然后点 Operator 名称以打开 Operator 详情页面。
  3. Data Science Cluster 选项卡。
  4. 点默认实例名称(如 default-dsc)打开实例详情页面。
  5. YAML 选项卡显示实例规格。
  6. 启用所需的分布式工作负载组件。在 spec.components 部分中,为所需组件正确设置 managementState 字段:

    • 如果要使用 CodeFlare 框架调优模型,请启用 codeflarekueray 组件。
    • 如果要使用 Kubeflow Training Operator 调优模型,请启用 kuetrainingoperator 组件。
    • 所需的组件列表取决于分布式工作负载是否从管道或笔记本运行,如下表所示。
    Expand
    表 4.1. 分布式工作负载所需的组件
    组件仅限管道仅限笔记本Pipelines 和笔记本

    codeflare

    受管

    受管

    受管

    dashboard

    受管

    受管

    受管

    datasciencepipelines

    受管

    删除

    受管

    kueue

    受管

    受管

    受管

    ray

    受管

    受管

    受管

    trainingoperator

    受管

    受管

    受管

    workbenches

    删除

    受管

    受管

  7. 点击 Save。片刻后,处于 Managed 状态的组件已就绪。

验证

检查 codeflare-operator-managerkuberay-operatorkueue-controller-manager pod 的状态,如下所示:

  1. 在 OpenShift 控制台中,从 Project 列表中选择 redhat-ods-applications
  2. WorkloadsDeployments
  3. 搜索 codeflare-operator-manager,kuberay-operator, 和 kueue-controller-manager 部署。在每个情形中,按如下所示检查状态:

    1. 单击部署名称以打开部署详情页面。
    2. Pods 选项卡。
    3. 检查 pod 状态。

      codeflare-operator-manager- <pod-id& gt;、kuberay-operator- &lt;pod-id&gt;、和 kue-controller-manager-<pod-id > pod 的状态为 Running 时,pod 就可以使用。

    4. 要查看每个 pod 的更多信息,请点 pod 名称以打开 pod 详情页面,然后点 Logs 选项卡。

下一步

配置分布式工作负载功能,如 管理分布式工作负载 中所述。

第 5 章 安装单模式服务平台

5.1. 关于单模式服务平台

为了部署大型模型,如大型语言模型(LLMs),OpenShift AI 包含一个基于 KServe 组件的单模型服务平台。要安装单型号服务平台,需要以下组件:

  • KServe :一种 Kubernetes 自定义资源定义(CRD),编配所有类型的模型的模型服务。KServe 包括实现给定模型服务器的加载的模型运行时。KServe 还处理部署对象、存储访问和网络设置的生命周期。
  • Red Hat OpenShift Serverless :一个云原生开发模型,允许无服务器部署模型。OpenShift Serverless 基于开源 Knative 项目。
  • Red Hat OpenShift Service Mesh :一个服务网格网络层,用于管理流量流并强制实施访问策略。OpenShift Service Mesh 基于开源 Istio 项目。

    注意

    目前,只支持 OpenShift Service Mesh v2。如需更多信息,请参阅 支持的配置

您可以手动安装单型号服务平台,或自动安装:

自动安装
如果您还没有在 OpenShift 集群上创建 ServiceMeshControlPlaneKNativeServing 资源,您可以将 Red Hat OpenShift AI Operator 配置为安装 KServe 并配置其依赖项。如需更多信息,请参阅配置 KServe 的自动安装
手动安装
如果您已在 OpenShift 集群上创建了 ServiceMeshControlPlaneKNativeServing 资源,则无法 配置 Red Hat OpenShift AI Operator 来安装 KServe 并配置其依赖项。在这种情况下,您必须手动安装 KServe。如需更多信息,请参阅 手动安装 KServe

5.2. 配置 KServe 的自动安装

如果您还没有在 OpenShift 集群上创建 ServiceMeshControlPlaneKNativeServing 资源,您可以将 Red Hat OpenShift AI Operator 配置为安装 KServe 并配置其依赖项。

重要

如果您在集群中创建了 ServiceMeshControlPlaneKNativeServing 资源,Red Hat OpenShift AI Operator 无法安装 KServe 并配置其依赖项,且安装不会继续。在这种情况下,您必须按照手动安装说明来安装 KServe。

先决条件

  • 具有集群管理员特权。
  • 您的集群有一个有 4 个 CPU 和 16 GB 内存的节点。
  • 您已下载并安装 OpenShift 命令行界面 (CLI)。如需更多信息 ,请参阅安装 OpenShift CLI
  • 已安装 Red Hat OpenShift Service Mesh Operator 和依赖的 Operator。

    注意

    要启用 KServe 的自动安装,请只 为 Red Hat OpenShift Service Mesh 安装所需的 Operator。不要执行任何其他配置或创建 ServiceMeshControlPlane 资源。

  • 已安装 Red Hat OpenShift Serverless Operator。

    注意

    要启用 KServe 的自动安装,请只 安装 Red Hat OpenShift Serverless Operator。不要执行任何其他配置或创建 KNativeServing 资源。

  • 已安装 Red Hat OpenShift AI Operator 并创建了 DataScienceCluster 对象。
  • 要将 Authorino 添加为授权提供程序,以便您可以为部署的模型启用令牌授权,已安装了 Red Hat - Authorino Operator。请参阅 安装 Authorino Operator

流程

  1. 以集群管理员身份登录 OpenShift Web 控制台。
  2. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  3. 按照如下所示安装 OpenShift Service Mesh:

    1. DSC 初始化选项卡。
    2. default-dsci 对象。
    3. YAML 标签。
    4. spec 部分中,验证 serviceMesh 组件的 managementState 字段的值是否已设置为 Managed,如下所示:

      spec:
       applicationsNamespace: redhat-ods-applications
       monitoring:
         managementState: Managed
         namespace: redhat-ods-monitoring
       serviceMesh:
         controlPlane:
           metricsCollection: Istio
           name: data-science-smcp
           namespace: istio-system
         managementState: Managed
      注意

      不要更改为 serviceMesh 组件指定的 istio-system 命名空间。不支持其他命名空间值。

    5. 点击 Save

      根据添加到 DSCInitialization 对象的配置,Red Hat OpenShift AI Operator 安装 OpenShift Service Mesh。

  4. 安装 KServe 和 OpenShift Serverless,如下所示:

    1. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
    2. Data Science Cluster 选项卡。
    3. 单击 default-dsc DSC 对象。
    4. YAML 标签。
    5. spec.components 部分中,配置 kserve 组件,如下所示。

      spec:
       components:
         kserve:
           managementState: Managed
           serving:
             ingressGateway:
               certificate:
                 secretName: knative-serving-cert
                 type: OpenshiftDefaultIngress
             managementState: Managed
             name: knative-serving
    6. 点击 Save

      上述配置为 OpenShift Serverless 创建一个入口网关,以接收来自 OpenShift Service Mesh 的流量。在这个配置中,观察以下详情:

      • 显示的配置使用为 OpenShift 配置的默认入口证书来保护进入 OpenShift 集群的流量,并将证书存储在 secretName 字段中指定的 knative-serving-cert secret 中。
      • secretName 字段只能在安装时设置。secretName 字段的默认值为 knative-serving-cert。必须手动对证书 secret 进行后续更改。
      • 如果您在安装过程中没有使用默认的 secretName 值,请在 istio-system 命名空间中创建一个名为 knative-serving-cert 的新 secret,然后重启 istiod-datascience-smcp-<suffix> pod。
      • 您可以通过更新 type 字段的值来指定以下证书类型:

        • provided
        • selfSigned
        • OpenshiftDefaultIngress
      • 要使用自签名证书或提供您自己的证书,请更新 secretName 字段的值以指定您的 secret 名称,并将 type 字段的值更改为 SelfSignedProvided

        注意

        如果提供自己的证书,证书必须指定 OpenShift 集群的入口控制器使用的域名。您可以运行以下命令来检查这个值:

        $ oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}'

      • 对于 kserveserving 组件,您必须将 managementState 字段的值设置为 Managed。将 kserve.managementState 设置为 Managed 触发器自动安装 KServe。将 service.managementState 设置为 Managed 会触发 OpenShift Serverless 自动安装。但是,如果 kserve.managementState 没有设置为 Managed,则 不会触发 OpenShift Serverless 安装。

验证

  • 验证 OpenShift Service Mesh 安装,如下所示:

    • 在 Web 控制台中,点击 WorkloadsPods
    • 在项目列表中选择 istio-system。这是安装 OpenShift Service Mesh 的项目。
    • 确认存在用于服务网格 control plane、入口网关和出口网关的 pod。这些 pod 具有以下示例中显示的命名模式:

      NAME                                      		  READY     STATUS    RESTARTS   AGE
      istio-egressgateway-7c46668687-fzsqj      	 	  1/1       Running   0          22h
      istio-ingressgateway-77f94d8f85-fhsp9      		  1/1       Running   0          22h
      istiod-data-science-smcp-cc8cfd9b8-2rkg4  		  1/1       Running   0          22h
  • 验证 OpenShift Serverless 的安装,如下所示:

    • 在 Web 控制台中,点击 WorkloadsPods
    • 从项目列表中,选择 knative-serving。这是安装 OpenShift Serverless 的项目。
    • 确认 knative-serving 项目中有许多正在运行的 Pod,包括 activator、autoscaler、controller 和域映射 Pod,以及用于 Knative Istio 控制器(控制 OpenShift Serverless 和 OpenShift Service Mesh 集成)的 Pod。显示了一个示例。

      NAME                                     	READY     STATUS    RESTARTS  AGE
      activator-7586f6f744-nvdlb               	2/2       Running   0         22h
      activator-7586f6f744-sd77w               	2/2       Running   0         22h
      autoscaler-764fdf5d45-p2v98             	2/2       Running   0         22h
      autoscaler-764fdf5d45-x7dc6              	2/2       Running   0         22h
      autoscaler-hpa-7c7c4cd96d-2lkzg          	1/1       Running   0         22h
      autoscaler-hpa-7c7c4cd96d-gks9j         	1/1       Running   0         22h
      controller-5fdfc9567c-6cj9d              	1/1       Running   0         22h
      controller-5fdfc9567c-bf5x7              	1/1       Running   0         22h
      domain-mapping-56ccd85968-2hjvp          	1/1       Running   0         22h
      domain-mapping-56ccd85968-lg6mw          	1/1       Running   0         22h
      domainmapping-webhook-769b88695c-gp2hk   	1/1       Running   0         22h
      domainmapping-webhook-769b88695c-npn8g   	1/1       Running   0         22h
      net-istio-controller-7dfc6f668c-jb4xk    	1/1       Running   0         22h
      net-istio-controller-7dfc6f668c-jxs5p    	1/1       Running   0         22h
      net-istio-webhook-66d8f75d6f-bgd5r       	1/1       Running   0         22h
      net-istio-webhook-66d8f75d6f-hld75      	1/1       Running   0         22h
      webhook-7d49878bc4-8xjbr                 	1/1       Running   0         22h
      webhook-7d49878bc4-s4xx4                 	1/1       Running   0         22h
  • 验证 KServe 安装,如下所示:

    • 在 Web 控制台中,点击 WorkloadsPods
    • 从项目列表中,选择 redhat-ods-applications。这是安装 OpenShift AI 组件的项目,包括 KServe。
    • 确认项目包含 KServe 控制器管理器正在运行的 pod,如下例所示:

      NAME                                          READY   STATUS    RESTARTS   AGE
      kserve-controller-manager-7fbb7bccd4-t4c5g    1/1     Running   0          22h
      odh-model-controller-6c4759cc9b-cftmk         1/1     Running   0          129m
      odh-model-controller-6c4759cc9b-ngj8b         1/1     Running   0          129m
      odh-model-controller-6c4759cc9b-vnhq5         1/1     Running   0          129m

5.3. 手动安装 KServe

如果您已经安装了 Red Hat OpenShift Service Mesh Operator 并创建了 ServiceMeshControlPlane 资源,或者已安装 Red Hat OpenShift Serverless Operator 并创建了 KNativeServing 资源,Red Hat OpenShift AI Operator 无法安装 KServe 并配置其依赖项。在这种情况下,您必须手动安装 KServe。

重要

本节中的步骤演示了如何执行 KServe 及其依赖项的新安装,并作为完整的安装和配置参考。如果您已经安装并配置了 OpenShift Service Mesh 或 OpenShift Serverless,您可能不需要遵循所有步骤。如果您不确定要将哪些更新应用到现有配置以使用 KServe,请联系红帽支持。

5.3.1. 安装 KServe 依赖项

在安装 KServe 之前,您必须安装并配置一些依赖项。具体来说,您必须创建 Red Hat OpenShift Service Mesh 和 Knative Serving 实例,然后为 Knative Serving 配置安全网关。

注意

目前,只支持 OpenShift Service Mesh v2。如需更多信息,请参阅 支持的配置

5.3.2. 创建 OpenShift Service Mesh 实例

以下流程演示了如何创建 Red Hat OpenShift Service Mesh 实例。

先决条件

  • 具有集群管理员特权。
  • 您的集群有一个有 4 个 CPU 和 16 GB 内存的节点。
  • 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI
  • 已安装 Red Hat OpenShift Service Mesh Operator 和依赖的 Operator。

流程

  1. 在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
  2. 为 Red Hat OpenShift Service Mesh 创建所需的命名空间。

    $ oc create ns istio-system

    您会看到以下输出:

    namespace/istio-system created
  3. 在名为 smcp.yaml 的 YAML 文件中定义一个 ServiceMeshControlPlane 对象,其内容如下:

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: minimal
      namespace: istio-system
    spec:
      tracing:
        type: None
      addons:
        grafana:
          enabled: false
        kiali:
          name: kiali
          enabled: false
        prometheus:
          enabled: false
        jaeger:
          name: jaeger
      security:
        dataPlane:
          mtls: true
        identity:
          type: ThirdParty
      techPreview:
        meshConfig:
          defaultConfig:
            terminationDrainDuration: 35s
      gateways:
        ingress:
          service:
            metadata:
              labels:
                knative: ingressgateway
      proxy:
        networking:
          trafficControl:
            inbound:
              excludedPorts:
                - 8444
                - 8022

    如需有关 YAML 文件中的值的更多信息,请参阅 Service Mesh control plane 配置参考

  4. 创建服务网格 control plane。

    $ oc apply -f smcp.yaml

验证

  • 验证服务网格实例的创建,如下所示:

    • 在 OpenShift CLI 中输入以下命令:

      $ oc get pods -n istio-system

      前面的命令列出了 istio-system 项目中运行的所有 pod。这是安装 OpenShift Service Mesh 的项目。

    • 确认存在用于服务网格 control plane、入口网关和出口网关的 pod。这些 pod 具有以下命名模式:

      NAME                                          READY   STATUS   	  RESTARTS    AGE
      istio-egressgateway-7c46668687-fzsqj          1/1     Running     0           22h
      istio-ingressgateway-77f94d8f85-fhsp9         1/1     Running     0           22h
      istiod-data-science-smcp-cc8cfd9b8-2rkg4      1/1     Running     0           22h

5.3.3. 创建 Knative Serving 实例

以下流程演示了如何安装 Knative Serving,然后创建实例。

先决条件

  • 具有集群管理员特权。
  • 您的集群有一个有 4 个 CPU 和 16 GB 内存的节点。
  • 您已下载并安装 OpenShift 命令行界面 (CLI)。安装 OpenShift CLI.
  • 您已创建了 Red Hat OpenShift Service Mesh 实例。
  • 已安装 Red Hat OpenShift Serverless Operator。

流程

  1. 在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
  2. 检查 Knative Serving 所需的项目(即 命名空间)是否已存在。

    $ oc get ns knative-serving

    如果项目存在,您会看到类似以下示例的输出:

    NAME              STATUS   AGE
    knative-serving   Active   4d20h
  3. 如果 knative-serving 项目不存在,请创建它。

    $ oc create ns knative-serving

    您会看到以下输出:

    namespace/knative-serving created
  4. 在名为 default-smm.yaml 的 YAML 文件中定义 ServiceMeshMember 对象,其内容如下:

    apiVersion: maistra.io/v1
    kind: ServiceMeshMember
    metadata:
      name: default
      namespace: knative-serving
    spec:
      controlPlaneRef:
        namespace: istio-system
        name: minimal
  5. istio-system 命名空间中创建 ServiceMeshMember 对象。

    $ oc apply -f default-smm.yaml

    您会看到以下输出:

    servicemeshmember.maistra.io/default created
  6. 在名为 knativeserving-istio.yaml 的 YAML 文件中定义 KnativeServing 对象,其内容如下:

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
      annotations:
        serverless.openshift.io/default-enable-http2: "true"
    spec:
      workloads:
        - name: net-istio-controller
          env:
            - container: controller
              envVars:
                - name: ENABLE_SECRET_INFORMER_FILTERING_BY_CERT_UID
                  value: 'true'
        - annotations:
            sidecar.istio.io/inject: "true" 
    1
    
            sidecar.istio.io/rewriteAppHTTPProbers: "true" 
    2
    
          name: activator
        - annotations:
            sidecar.istio.io/inject: "true"
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
          name: autoscaler
      ingress:
        istio:
          enabled: true
      config:
        features:
          kubernetes.podspec-affinity: enabled
          kubernetes.podspec-nodeselector: enabled
          kubernetes.podspec-tolerations: enabled

    前面的文件为 KnativeServing 对象定义自定义资源(CR)。CR 还为每个激活器和自动扩展 pod 添加以下操作:

    1
    将 Istio sidecar 注入 pod。这使得 pod 成为服务网格的一部分。
    2
    启用 Istio sidecar 为 pod 重写 HTTP 存活度和就绪度探测。
    注意

    如果为 Knative 服务配置自定义域,您可以使用 TLS 证书来保护映射的服务。要做到这一点,您必须创建一个 TLS secret,然后更新 DomainMapping CR 以使用您创建的 TLS secret。如需更多信息,请参阅 Red Hat OpenShift Serverless 文档中的使用 TLS 证书保护映射的服务

  7. 在指定的 knative-serving 命名空间中创建 KnativeServing 对象。

    $ oc apply -f knativeserving-istio.yaml

    您会看到以下输出:

    knativeserving.operator.knative.dev/knative-serving created

验证

  • 查看 istio-system 命名空间中的默认 ServiceMeshMemberRoll 对象。

    $ oc describe smmr default -n istio-system

    ServiceMeshMemberRoll 对象的描述中,找到 Status.Members 字段,并确认它包含 knative-serving 命名空间。

  • 验证 Knative Serving 实例的创建,如下所示:

    • 在 OpenShift CLI 中输入以下命令:

      $ oc get pods -n knative-serving

      前面的命令列出了 knative-serving 项目中运行的所有 Pod。这是在其中创建 Knative Serving 实例的项目。

    • 确认 knative-serving 项目中有许多正在运行的 Pod,包括 activator、autoscaler、controller 和域映射 Pod,以及用于 Knative Istio 控制器的 Pod,用于控制 OpenShift Serverless 和 OpenShift Service Mesh 集成。显示了一个示例。

      NAME                                     	READY       STATUS    	RESTARTS   	AGE
      activator-7586f6f744-nvdlb               	2/2         Running   	0          	22h
      activator-7586f6f744-sd77w               	2/2         Running   	0          	22h
      autoscaler-764fdf5d45-p2v98             	2/2         Running   	0          	22h
      autoscaler-764fdf5d45-x7dc6              	2/2         Running   	0          	22h
      autoscaler-hpa-7c7c4cd96d-2lkzg          	1/1         Running   	0          	22h
      autoscaler-hpa-7c7c4cd96d-gks9j         	1/1         Running   	0          	22h
      controller-5fdfc9567c-6cj9d              	1/1         Running   	0          	22h
      controller-5fdfc9567c-bf5x7              	1/1         Running   	0          	22h
      domain-mapping-56ccd85968-2hjvp          	1/1         Running   	0          	22h
      domain-mapping-56ccd85968-lg6mw          	1/1         Running   	0          	22h
      domainmapping-webhook-769b88695c-gp2hk   	1/1         Running     0          	22h
      domainmapping-webhook-769b88695c-npn8g   	1/1         Running   	0          	22h
      net-istio-controller-7dfc6f668c-jb4xk    	1/1         Running   	0          	22h
      net-istio-controller-7dfc6f668c-jxs5p    	1/1         Running   	0          	22h
      net-istio-webhook-66d8f75d6f-bgd5r       	1/1         Running   	0          	22h
      net-istio-webhook-66d8f75d6f-hld75      	1/1         Running   	0          	22h
      webhook-7d49878bc4-8xjbr                 	1/1         Running   	0          	22h
      webhook-7d49878bc4-s4xx4                 	1/1         Running   	0          	22h

5.3.4. 为 Knative Serving 创建安全网关

要保护 Knative Serving 实例和服务网格之间的流量,您必须为 Knative Serving 实例创建安全网关。

以下流程演示了如何使用 OpenSSL 版本 3 或更高版本来生成通配符证书和密钥,然后使用它们为 Knative Serving 创建本地和入口网关。

重要

如果您有自己的通配符证书和密钥在配置网关时指定,您可以跳过到此流程的第 11 步。

先决条件

流程

  1. 在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
    重要

    如果您有自己的通配符证书和密钥在配置网关时指定,请跳至此步骤的第 11 步。

  2. 设置环境变量,以定义为网关生成通配符证书和密钥的基础目录。

    $ export BASE_DIR=/tmp/kserve
    $ export BASE_CERT_DIR=${BASE_DIR}/certs
  3. 设置环境变量以定义 OpenShift 集群的入口控制器使用的通用名称。

    $ export COMMON_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}' | awk -F'.' '{print $(NF-1)"."$NF}')
  4. 设置环境变量以定义 OpenShift 集群的入口控制器使用的域名。

    $ export DOMAIN_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}')
  5. 根据之前设置的环境变量,为证书生成创建所需的基础目录。

    $ mkdir ${BASE_DIR}
    $ mkdir ${BASE_CERT_DIR}
  6. 为生成通配符证书创建 OpenSSL 配置。

    $ cat <<EOF> ${BASE_DIR}/openssl-san.config
    [ req ]
    distinguished_name = req
    [ san ]
    subjectAltName = DNS:*.${DOMAIN_NAME}
    EOF
  7. 生成 root 证书。

    $ openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \
    -subj "/O=Example Inc./CN=${COMMON_NAME}" \
    -keyout ${BASE_CERT_DIR}/root.key \
    -out ${BASE_CERT_DIR}/root.crt
  8. 生成由 root 证书签名的通配符证书。

    $ openssl req -x509 -newkey rsa:2048 \
    -sha256 -days 3560 -nodes \
    -subj "/CN=${COMMON_NAME}/O=Example Inc." \
    -extensions san -config ${BASE_DIR}/openssl-san.config \
    -CA ${BASE_CERT_DIR}/root.crt \
    -CAkey ${BASE_CERT_DIR}/root.key \
    -keyout ${BASE_CERT_DIR}/wildcard.key  \
    -out ${BASE_CERT_DIR}/wildcard.crt
    
    $ openssl x509 -in ${BASE_CERT_DIR}/wildcard.crt -text
  9. 验证通配符证书。

    $ openssl verify -CAfile ${BASE_CERT_DIR}/root.crt ${BASE_CERT_DIR}/wildcard.crt
  10. 将脚本创建的通配符密钥和证书导出到新的环境变量。

    $ export TARGET_CUSTOM_CERT=${BASE_CERT_DIR}/wildcard.crt
    $ export TARGET_CUSTOM_KEY=${BASE_CERT_DIR}/wildcard.key
  11. 可选: 要将 您自己的 通配符密钥和证书导出到新环境变量,请输入以下命令:

    $ export TARGET_CUSTOM_CERT=<path_to_certificate>
    $ export TARGET_CUSTOM_KEY=<path_to_key>
    注意

    在您提供的证书中,您必须指定 OpenShift 集群的入口控制器使用的域名。您可以运行以下命令来检查这个值:

    $ oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}'

  12. 使用您为通配符证书和密钥设置的环境变量,在 istio-system 命名空间中创建 TLS secret。

    $ oc create secret tls wildcard-certs --cert=${TARGET_CUSTOM_CERT} --key=${TARGET_CUSTOM_KEY} -n istio-system
  13. 使用以下内容创建 gateways.yaml YAML 文件:

    apiVersion: v1
    kind: Service 
    1
    
    metadata:
      labels:
        experimental.istio.io/disable-gateway-port-translation: "true"
      name: knative-local-gateway
      namespace: istio-system
    spec:
      ports:
        - name: http2
          port: 80
          protocol: TCP
          targetPort: 8081
      selector:
        knative: ingressgateway
      type: ClusterIP
    ---
    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: knative-ingress-gateway 
    2
    
      namespace: knative-serving
    spec:
      selector:
        knative: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            credentialName: wildcard-certs
            mode: SIMPLE
    ---
    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
     name: knative-local-gateway 
    3
    
     namespace: knative-serving
    spec:
     selector:
       knative: ingressgateway
     servers:
       - port:
           number: 8081
           name: https
           protocol: HTTPS
         tls:
           mode: ISTIO_MUTUAL
         hosts:
           - "*"
    1
    istio-system 命名空间中为 Knative 本地网关定义服务。
    2
    knative-serving 命名空间中 定义一个入口网关。网关使用您在此流程前面创建的 TLS secret。入口网关处理 Knative 的外部流量。
    3
    knative-serving 命名空间中为 Knative 定义本地网关。
  14. 应用 gateways.yaml 文件来创建定义的资源。

    $ oc apply -f gateways.yaml

    您会看到以下输出:

    service/knative-local-gateway created
    gateway.networking.istio.io/knative-ingress-gateway created
    gateway.networking.istio.io/knative-local-gateway created

验证

  • 查看您创建的网关。

    $ oc get gateway --all-namespaces

    确认您看到在 knative-serving 命名空间中创建的本地和入口网关,如下例所示:

    NAMESPACE         	NAME                      	AGE
    knative-serving   	knative-ingress-gateway   	69s
    knative-serving     knative-local-gateway     	2m

5.3.5. 安装 KServe

要完成 KServe 的手动安装,您必须安装 Red Hat OpenShift AI Operator。然后,您可以将 Operator 配置为安装 KServe。

先决条件

流程

  1. 以集群管理员身份登录 OpenShift Web 控制台。
  2. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  3. 要安装 KServe,请按如下所示配置 OpenShift Service Mesh 组件:

    1. DSC 初始化选项卡。
    2. default-dsci 对象。
    3. YAML 标签。
    4. spec 部分,添加和配置 serviceMesh 组件,如下所示:

      spec:
       serviceMesh:
         managementState: Unmanaged
    5. 点击 Save
  4. 要安装 KServe,请配置 KServe 和 OpenShift Serverless 组件,如下所示:

    1. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
    2. Data Science Cluster 选项卡。
    3. 单击 default-dsc DSC 对象。
    4. YAML 标签。
    5. spec.components 部分中,配置 kserve 组件,如下所示:

      spec:
       components:
         kserve:
           managementState: Managed
    6. kserve 组件中,添加 服务组件 并配置它,如下所示:

      spec:
       components:
         kserve:
           managementState: Managed
           serving:
             managementState: Unmanaged
    7. 点击 Save

5.3.6. 在 KServe 上配置持久性卷声明(PVC)

在您的 inference 服务上启用持久性卷声明(PVC),以便您可以提高持久性存储。如需有关 PVC 的更多信息,请参阅了解持久性存储

要启用 PVC,从 OpenShift AI 仪表板,选择 Project 下拉菜单并点 knative-serving。然后,按照 启用 PVC 支持 中的步骤操作。

验证

验证 inference 服务是否允许 PVC,如下所示:

  • 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  • HomeSearch
  • 资源中,搜索 InferenceService
  • 点 inference 服务的名称。
  • YAML 标签。
  • 确认显示 volumeMounts,类似于以下输出:

    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        model:
          runtime: kserve-mlserver
          modelFormat:
            name: sklearn
          storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"
          volumeMounts:
            - name: my-dynamic-volume
              mountPath: /tmp/data
        volumes:
          - name: my-dynamic-volume
            persistentVolumeClaim:
              claimName: my-dynamic-pvc

5.3.7. 禁用 KServe 依赖项

如果您还没有 启用 KServe 组件(即,将 managementState 字段设置为 Removed),还必须禁用依赖 Service Mesh 组件以避免错误。

先决条件

  • 您已使用 OpenShift 命令行界面(CLI)或 Web 控制台来禁用 KServe 组件。

流程

  1. 以集群管理员身份登录 OpenShift Web 控制台。
  2. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  3. 禁用 OpenShift Service Mesh 组件,如下所示:

    1. DSC 初始化选项卡。
    2. default-dsci 对象。
    3. YAML 标签。
    4. spec 部分中,添加 serviceMesh 组件(如果还没有存在),并配置 managementState 字段,如下所示:

      spec:
       serviceMesh:
         managementState: Removed
    5. 点击 Save

验证

  1. 在 Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。

    Operator 详情页面将打开。

  2. Conditions 部分中,确认没有 ReconcileComplete 条件,状态为 Unknown

5.4. 为 single-model 服务平台添加授权供应商

您可以将 Authorino 添加为 single-model 服务平台的授权供应商。通过添加授权供应商,您可以为平台上部署的模型启用令牌授权,这样可确保只有授权方能够对模型发出推测请求。

用于将 Authorino 添加为授权提供程序的方法取决于您如何安装单model服务平台。该平台的安装选项如下所述:

自动安装

如果您还没有在 OpenShift 集群上创建 ServiceMeshControlPlaneKNativeServing 资源,您可以将 Red Hat OpenShift AI Operator 配置为安装 KServe 及其依赖项。您可以包含 Authorino 作为自动安装过程的一部分。

有关自动安装的更多信息,包括 Authorino,请参阅配置 KServe 的自动安装

手动安装

如果您已在 OpenShift 集群上创建了 ServiceMeshControlPlaneKNativeServing 资源,则无法 配置 Red Hat OpenShift AI Operator 来安装 KServe 及其依赖项。在这种情况下,您必须手动安装 KServe。您还必须手动配置 Authorino。

有关手动安装的更多信息,包括 Authorino,请参阅 手动安装 KServe

5.4.1. 手动添加授权供应商

您可以将 Authorino 添加为 single-model 服务平台的授权供应商。通过添加授权供应商,您可以为平台上部署的模型启用令牌授权,这样可确保只有授权方能够对模型发出推测请求。

要手动将 Authorino 添加为授权提供程序,您必须安装 Red Hat - Authorino Operator,创建 Authorino 实例,然后将 OpenShift Service Mesh 和 KServe 组件配置为使用该实例。

重要

要手动添加授权供应商,您必须对 OpenShift Service Mesh 实例进行配置更新。要确保 OpenShift Service Mesh 实例处于支持状态,请只 进行本节中显示的更新。

先决条件

  • 您已查看了将 Authorino 作为授权提供程序添加的选项,并将手动安装作为适当的选项。请参阅 添加授权提供程序
  • 您已手动安装 KServe 及其依赖项,包括 OpenShift Service Mesh。请参阅 手动安装 KServe
  • 手动安装 KServe 时,您可以将 serviceMesh 组件的 managementState 字段的值设置为 Unmanaged。手动添加 Authorino 需要此设置。请参阅 安装 KServe

5.4.2. 安装 Red Hat Authorino Operator

在将 Autorino 添加为授权提供程序前,您必须在 OpenShift 集群上安装 Red Hat - Authorino Operator。

先决条件

  • 具有集群管理员特权。

流程

  1. 以集群管理员身份登录 OpenShift Web 控制台。
  2. 在 Web 控制台中,点 OperatorsOperatorHub
  3. OperatorHub 页面上,在 Filter by keyword 字段中键入 Red Hat - Authorino
  4. Red Hat - Authorino Operator。
  5. Red Hat - Authorino Operator 页面中,查看 Operator 信息,然后点 Install
  6. Install Operator 页面中,保留 Update channel,Version,Installation mode,Installed NamespaceUpdate Approval 的默认值。
  7. Install

验证

  • 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators,并确认 Red Hat - Authorino Operator 显示了以下状态之一:

    • Installing - 安装正在进行中;等待它变为 Succeeded。这可能需要几分钟。
    • Succeeded - 安装成功。

5.4.3. 创建 Authorino 实例

在 OpenShift 集群上安装 Red Hat - Authorino Operator 时,您必须创建一个 Authorino 实例。

先决条件

流程

  1. 打开一个新的终端窗口。
  2. 登录到 OpenShift 命令行界面(CLI),如下所示:

    $ oc login <openshift_cluster_url> -u <username> -p <password>
  3. 创建一个命名空间来安装 Authorino 实例。

    $ oc new-project <namespace_for_authorino_instance>
    注意

    自动安装过程为 Authorino 实例创建一个名为 redhat-ods-applications-auth-provider 的命名空间。考虑在手动安装时使用相同的命名空间名称。

  4. 要在现有 OpenShift Service Mesh 实例中为 Authorino 实例注册新命名空间,请创建一个包含以下内容的新 YAML 文件:

      apiVersion: maistra.io/v1
      kind: ServiceMeshMember
      metadata:
        name: default
        namespace: <namespace_for_authorino_instance>
      spec:
        controlPlaneRef:
          namespace: <namespace_for_service_mesh_instance>
          name: <name_of_service_mesh_instance>
  5. 保存 YAML 文件。
  6. 在集群中创建 ServiceMeshMember 资源。

    $ oc create -f <file_name>.yaml
  7. 要配置 Authorino 实例,请创建一个新的 YAML 文件,如下例所示:

      apiVersion: operator.authorino.kuadrant.io/v1beta1
      kind: Authorino
      metadata:
        name: authorino
        namespace: <namespace_for_authorino_instance>
      spec:
        authConfigLabelSelectors: security.opendatahub.io/authorization-group=default
        clusterWide: true
        listener:
          tls:
            enabled: false
        oidcServer:
          tls:
            enabled: false
  8. 保存 YAML 文件。
  9. 在集群中创建 Authorino 资源。

    $ oc create -f <file_name>.yaml
  10. 对 Authorino 部署进行补丁以注入 Istio sidecar,这会使 OpenShift Service Mesh 实例的 Authorino 实例的一部分。

    $ oc patch deployment <name_of_authorino_instance> -n <namespace_for_authorino_instance> -p '{"spec": {"template":{"metadata":{"labels":{"sidecar.istio.io/inject":"true"}}}} }'

验证

  • 确认 Authorino 实例正在运行,如下所示:

    1. 检查您为 Authorino 实例创建的命名空间中运行的 pod (和容器),如下例所示:

      $ oc get pods -n redhat-ods-applications-auth-provider -o="custom-columns=NAME:.metadata.name,STATUS:.status.phase,CONTAINERS:.spec.containers[*].name"
    2. 确认输出类似以下示例:

      NAME                         STATUS    CONTAINERS
      authorino-6bc64bd667-kn28z   Running   authorino,istio-proxy

      如示例所示,有一个用于 Authorino 实例的 pod。pod 为 Authorino 和您注入的 Istio sidecar 容器。

创建 Authorino 实例时,您必须将 OpenShift Service Mesh 实例配置为使用 Authorino 作为授权供应商。

重要

为确保 OpenShift Service Mesh 实例处于支持状态,请只 进行以下流程中显示的配置更新。

先决条件

流程

  1. 在一个终端窗口中,如果您还没有以具有更新 OpenShift Service Mesh 实例的用户身份登录 OpenShift 集群,请登录 OpenShift CLI,如下例所示:

    $ oc login <openshift_cluster_url> -u <username> -p <password>
  2. 创建包含以下内容的新 YAML 文件:

    spec:
     techPreview:
       meshConfig:
         extensionProviders:
         - name: redhat-ods-applications-auth-provider
           envoyExtAuthzGrpc:
             service: <name_of_authorino_instance>-authorino-authorization.<namespace_for_authorino_instance>.svc.cluster.local
             port: 50051
  3. 保存 YAML 文件。
  4. 使用 oc patch 命令将 YAML 文件应用到 OpenShift Service Mesh 实例。

    $ oc patch smcp <name_of_service_mesh_instance> --type merge -n <namespace_for_service_mesh_instance> --patch-file <file_name>.yaml
    重要

    只有在 OpenShift Service Mesh 实例中尚未指定其他扩展供应商时,才能应用显示的配置作为补丁。如果您已经指定了其他扩展供应商,则必须手动编辑 ServiceMeshControlPlane 资源来添加配置。

验证

  • 验证您的 Authorino 实例是否已作为扩展供应商添加到 OpenShift Service Mesh 配置中,如下所示:

    1. 检查 OpenShift Service Mesh 实例的 ConfigMap 对象:

      $ oc get configmap istio-<name_of_service_mesh_instance> -n <namespace_for_service_mesh_instance> --output=jsonpath={.data.mesh}
    2. 确认您看到与以下示例类似的输出,这表明 Authorino 实例已成功添加为扩展提供程序。

      defaultConfig:
        discoveryAddress: istiod-data-science-smcp.istio-system.svc:15012
        proxyMetadata:
          ISTIO_META_DNS_AUTO_ALLOCATE: "true"
          ISTIO_META_DNS_CAPTURE: "true"
          PROXY_XDS_VIA_AGENT: "true"
        terminationDrainDuration: 35s
        tracing: {}
      dnsRefreshRate: 300s
      enablePrometheusMerge: true
      extensionProviders:
      - envoyExtAuthzGrpc:
          port: 50051
          service: authorino-authorino-authorization.opendatahub-auth-provider.svc.cluster.local
        name: opendatahub-auth-provider
      ingressControllerMode: "OFF"
      rootNamespace: istio-system
      trustDomain: null%

5.4.5. 为 KServe 配置授权

要将 single-model 服务平台配置为使用 Authorino,您必须创建一个全局 AuthorizationPolicy 资源,该资源应用到部署模型时创建的 KServe predictor pod。另外,要考虑在对模型发出 inference 请求时发生的多个网络跃点,您必须创建一个 EnvoyFilter 资源,以持续将 HTTP 主机标头重置为最初包含在ference 请求中的标头。

先决条件

  • 您已创建了 Authorino 实例,并将 OpenShift Service Mesh 配置为使用它。
  • 有更新集群中的 KServe 部署的权限。
  • 您有将资源添加到创建 OpenShift Service Mesh 实例的项目中的权限。请参阅创建 OpenShift Service Mesh 实例

流程

  1. 在一个终端窗口中,如果您还没有以具有更新 KServe 部署权限的用户身份登录 OpenShift 集群,请登录 OpenShift CLI,如下例所示:

    $ oc login <openshift_cluster_url> -u <username> -p <password>
  2. 创建包含以下内容的新 YAML 文件:

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: kserve-predictor
    spec:
      action: CUSTOM
      provider:
         name: redhat-ods-applications-auth-provider 
    1
    
      rules:
         - to:
              - operation:
                   notPaths:
                      - /healthz
                      - /debug/pprof/
                      - /metrics
                      - /wait-for-drain
      selector:
         matchLabels:
            component: predictor
    1
    您指定的名称必须与添加到 OpenShift Service Mesh 实例的扩展供应商名称匹配。
  3. 保存 YAML 文件。
  4. 在命名空间中为 OpenShift Service Mesh 实例创建 AuthorizationPolicy 资源。

    $ oc create -n <namespace_for_service_mesh_instance> -f <file_name>.yaml
  5. 创建包含以下内容的另一个新 YAML 文件:

    apiVersion: networking.istio.io/v1alpha3
    kind: EnvoyFilter
    metadata:
      name: activator-host-header
    spec:
      priority: 20
      workloadSelector:
        labels:
          component: predictor
      configPatches:
      - applyTo: HTTP_FILTER
        match:
          listener:
            filterChain:
              filter:
                name: envoy.filters.network.http_connection_manager
        patch:
          operation: INSERT_BEFORE
          value:
            name: envoy.filters.http.lua
            typed_config:
              '@type': type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
              inlineCode: |
               function envoy_on_request(request_handle)
                  local headers = request_handle:headers()
                  if not headers then
                    return
                  end
                  local original_host = headers:get("k-original-host")
                  if original_host then
                    port_seperator = string.find(original_host, ":", 7)
                    if port_seperator then
                      original_host = string.sub(original_host, 0, port_seperator-1)
                    end
                    headers:replace('host', original_host)
                  end
                end

    显示的 EnvoyFilter 资源持续将 HTTP 主机标头重置为最初包含在任何推销请求中的标头。

  6. 在命名空间中为您的 OpenShift Service Mesh 实例创建 EnvoyFilter 资源。

    $ oc create -n <namespace_for_service_mesh_instance> -f <file_name>.yaml

验证

  • 检查 AuthorizationPolicy 资源是否已成功创建。

    $ oc get authorizationpolicies -n <namespace_for_service_mesh_instance>

    确认输出类似以下示例:

    NAME               AGE
    kserve-predictor   28h
  • 检查 EnvoyFilter 资源是否已成功创建。

    $ oc get envoyfilter -n <namespace_for_service_mesh_instance>

    确认输出类似以下示例:

    NAME                                          AGE
    activator-host-header                         28h

第 6 章 安装多模式服务平台

为了部署小型和中型模型,OpenShift AI 包含一个基于 ModelMesh 组件的 多模式服务平台。在多型号服务平台上,可以从同一模型服务器部署多个模型并共享服务器资源。

要安装多模型服务平台或 ModelMesh,请按照 使用 CLI 安装 Red Hat OpenShift AI 组件 或 使用 web 控制台安装 Red Hat OpenShift AI 组件 的步骤进行操作。

第 7 章 访问仪表板

安装 OpenShift AI 并添加用户后,您可以访问 OpenShift AI 控制台的 URL,并与用户共享 URL,以便他们登录并处理其模型。

先决条件

  • 您已在 OpenShift 集群上安装了 OpenShift AI。
  • 您至少向 OpenShift AI 的用户组添加了一个用户。

流程

  1. 登录 OpenShift Web 控制台。
  2. 点应用程序启动程序( The application launcher )。
  3. 右键点 Red Hat OpenShift AI,再复制 OpenShift AI 实例的 URL。
  4. 为您的数据科学家提供这个实例 URL,以便他们登录到 OpenShift AI。

验证

  • 确认您和您的用户可以使用实例 URL 登录 OpenShift AI。

将用户添加到 OpenShift AI 用户组.

第 8 章 启用 NVIDIA GPU

在 OpenShift AI 中使用 NVIDIA GPU 之前,您必须安装 NVIDIA GPU Operator。

先决条件

  • 已登陆到 OpenShift 集群。
  • 在 OpenShift 集群中具有 cluster-admin 角色。
  • 已安装 NVIDIA GPU,并确认在您的环境中检测到它。

流程

  1. 要在断开连接的或 airgapped 环境中的 OpenShift 集群上启用 GPU 支持,请按照 NVIDIA 文档中的 断开连接的或 airgapped 环境中部署 GPU Operator 的说明。

    重要

    安装 Node Feature Discovery (NFD) Operator 后,您必须创建一个 NodeFeatureDiscovery 实例。另外,在安装 NVIDIA GPU Operator 后,您必须创建一个 ClusterPolicy,并使用默认值填充。

  2. 删除 migration-gpu-status ConfigMap。

    1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
    2. 项目设置为 All Projectsredhat-ods-applications,以确保您可以看到适当的 ConfigMap。
    3. 搜索 migration-gpu-status ConfigMap。
    4. 点操作菜单 (⋮) ,并从列表中选择 Delete ConfigMap

      此时会出现 Delete ConfigMap 对话框。

    5. 检查对话框,并确认您删除正确的 ConfigMap。
    6. 点击 Delete
  3. 重启仪表板 replicaset。

    1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
    2. WorkloadsDeployments
    3. 项目设置为 All Projectsredhat-ods-applications,以确保您可以看到适当的部署。
    4. 搜索 rhods-dashboard 部署。
    5. 点操作菜单(HBAC),然后从列表中选择 Restart Rollout
    6. 等待 Status 列指出 rollout 中的所有 pod 都完全重启。

验证

  • reset migration-gpu-status 实例存在于 AcceleratorProfile 自定义资源定义(CRD)详情页面上的 Instances 选项卡中。
  • Administrator 视角中,进入 OperatorsInstalled Operators 页面。确认出现以下 Operator:

    • NVIDIA GPU
    • 节点功能发现(NFD)
    • 内核模块管理(KMM)
  • 在完成 Node Feature Discovery (NFD)和 NVIDIA GPU Operator 后,GPU 会被正确检测到。OpenShift 命令行界面(CLI)显示 GPU worker 节点的适当输出。例如:

    # Expected output when the GPU is detected properly
    oc describe node <node name>
    ...
    Capacity:
      cpu:                4
      ephemeral-storage:  313981932Ki
      hugepages-1Gi:      0
      hugepages-2Mi:      0
      memory:             16076568Ki
      nvidia.com/gpu:     1
      pods:               250
    Allocatable:
      cpu:                3920m
      ephemeral-storage:  288292006229
      hugepages-1Gi:      0
      hugepages-2Mi:      0
      memory:             12828440Ki
      nvidia.com/gpu:     1
      pods:               250
注意

在 OpenShift AI 2.16 中,红帽支持在同一集群中使用加速器。红帽不支持在加速器之间远程直接内存访问(RDMA),或使用网络上的加速器,例如使用 NVIDIA GPUDirect 或 NVLink 等技术。

安装 NVIDIA GPU Operator 后,创建一个加速器配置集,如 使用加速器配置集 中所述。

第 9 章 使用证书

OpenShift 中各种组件使用证书来验证对集群的访问。对于依赖自签名证书的集群,您可以将这些自签名证书添加到集群范围的证书颁发机构(CA)捆绑包中,并使用 Red Hat OpenShift AI 中的 CA 捆绑包。您还可以在与集群范围捆绑包分开的自定义 CA 捆绑包中使用自签名证书。管理员可以添加 CA 捆绑包,从所有命名空间中删除 CA 捆绑包,从单个命名空间中删除 CA 捆绑包,或者手动管理证书更改,而不是系统。

9.1. 了解 OpenShift AI 中的证书

对于依赖自签名证书的 OpenShift 集群,您可以将这些自签名证书添加到集群范围的证书颁发机构(CA)捆绑包(ca-bundle.crt)中,并使用 Red Hat OpenShift AI 中的 CA 捆绑包。您还可以在与集群范围捆绑包分开的自定义 CA 捆绑包(odh-ca-bundle.crt)中使用自签名证书。

9.1.1. 如何注入 CA 捆绑包

安装 OpenShift AI 后,Red Hat OpenShift AI Operator 会自动创建一个空的 odh-trusted-ca-bundle 配置文件(ConfigMap),Cluster Network Operator (CNO)将集群范围的 CA 捆绑包注入 odh-trusted-ca-bundle configMap,标签为 "config.openshift.io/inject-trusted-cabundle"。在受影响命名空间中部署的组件负责将此 configMap 挂载为部署 pod 中的卷。

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/part-of: opendatahub-operator
    config.openshift.io/inject-trusted-cabundle: 'true'
  name: odh-trusted-ca-bundle

在 CNO operator 注入捆绑包后,它会使用包含证书的 ca-bundle.crt 文件更新 ConfigMap。

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/part-of: opendatahub-operator
    config.openshift.io/inject-trusted-cabundle: 'true'
  name: odh-trusted-ca-bundle
data:
  ca-bundle.crt: |
    <BUNDLE OF CLUSTER-WIDE CERTIFICATES>

9.1.2. ConfigMap 的管理方式

默认情况下,Red Hat OpenShift AI Operator 管理 odh-trusted-ca-bundle ConfigMap。如果要管理或删除 odh-trusted-ca-bundle ConfigMap,或者添加与集群范围 CA 捆绑包(ca-bundle.crt)分开的自定义 CA 捆绑包 (odh-ca-bundle.crt),您可以在 Operator 的 DSC Initialization (DSCI) 对象中使用 trustedCABundle 属性。

spec:
  trustedCABundle:
    managementState: Managed
    customCABundle: ""

在 Operator 的 DSCI 对象中,您可以将 spec.trustedCABundle.managementState 字段设置为以下值:

  • Managed: Red Hat OpenShift AI Operator 管理 odh-trusted-ca-bundle ConfigMap,并将其添加到所有非保留现有命名空间和新命名空间中( ConfigMap 不会添加到任何保留或系统命名空间中,如 default, openshift-\*kube-*)。ConfigMap 会自动更新,以反映对 customCABundle 字段所做的任何更改。这是安装 Red Hat OpenShift AI 后的默认值。
  • Removed: Red Hat OpenShift AI Operator 删除 odh-trusted-ca-bundle ConfigMap (如果存在),并禁用在新命名空间中创建 ConfigMap。如果将此字段从 Managed 改为 Removed,则 odh-trusted-ca-bundle ConfigMap 也会从命名空间中删除。这是将 Red Hat OpenShift AI 从 2.7 或更早版本升级到 2.16 后的默认值。
  • Unmanaged: Red Hat OpenShift AI Operator 不管理 odh-trusted-ca-bundle ConfigMap,允许管理员管理它。将 managementStateManaged 改为 Unmanaged 不会删除 odh-trusted-ca-bundle ConfigMap,但如果对 customCABundle 字段进行更改,则不会更新 ConfigMap。

在 Operator 的 DSCI 对象中,您可以将自定义证书添加到 spec.trustedCABundle.customCABundle 字段中。这会将包含证书的 odh-ca-bundle.crt 文件添加到 odh-trusted-ca-bundle ConfigMap 中,如下例所示:

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/part-of: opendatahub-operator
    config.openshift.io/inject-trusted-cabundle: 'true'
  name: odh-trusted-ca-bundle
data:
  ca-bundle.crt: |
    <BUNDLE OF CLUSTER-WIDE CERTIFICATES>
  odh-ca-bundle.crt: |
    <BUNDLE OF CUSTOM CERTIFICATES>

9.2. 添加 CA 捆绑包

将证书颁发机构(CA)捆绑包添加到 OpenShift AI 中有两种方法。您可以使用以下任一方法:

  • 对于依赖自签名证书的 OpenShift 集群,您可以将这些自签名证书添加到集群范围的证书颁发机构(CA)捆绑包(ca-bundle.crt)中,并使用 Red Hat OpenShift AI 中的 CA 捆绑包。要使用此方法,请以集群管理员身份登录到 OpenShift,并按照 在安装过程中配置集群范围代理 中所述的步骤进行操作。
  • 您可以在与集群范围捆绑包分开的自定义 CA 捆绑包中使用自签名证书(odh-ca-bundle.crt)。要使用这个方法,请按照本节中的步骤操作。

先决条件

流程

  1. 登录 OpenShift。
  2. OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  3. DSC 初始化选项卡。
  4. default-dsci 对象。
  5. YAML 标签。
  6. spec 部分中,将自定义证书添加到 trustedCABundlecustomCABundle 字段中,如下例所示:

    spec:
      trustedCABundle:
        managementState: Managed
        customCABundle: |
          -----BEGIN CERTIFICATE-----
          examplebundle123
          -----END CERTIFICATE-----
  7. 点击 Save

验证

  • 如果使用集群范围的 CA 捆绑包,请运行以下命令验证所有非保留命名空间是否包含 odh-trusted-ca-bundle ConfigMap:

    $ oc get configmaps --all-namespaces -l app.kubernetes.io/part-of=opendatahub-operator | grep odh-trusted-ca-bundle
  • 如果您使用自定义 CA 捆绑包,请运行以下命令来验证非保留命名空间是否包含 odh-trusted-ca-bundle ConfigMap,并且 ConfigMap 包含您的 customCABundle 值。在以下命令中,example-namespace 是非保留的命名空间,examplebundle123 是 customCABundle 值。

    $ oc get configmap odh-trusted-ca-bundle -n example-namespace -o yaml | grep examplebundle123

9.3. 删除 CA 捆绑包

您可以从 OpenShift AI 中的所有非保留命名空间中删除证书颁发机构(CA)捆绑包。此流程更改了默认配置,并禁用创建 odh-trusted-ca-bundle 配置文件(ConfigMap),如了解 OpenShift AI 中的证书中所述。

注意

只有当您将 trustedCABundlemanagementState 设置为 Removed 时,odh-trusted-ca-bundle ConfigMap 才会从命名空间中删除;删除 DSC 初始化不会删除 ConfigMap。

要只从单个命名空间中删除 CA 捆绑包,请参阅从命名空间中删除 CA 捆绑包

先决条件

  • 具有集群管理员特权。
  • 已安装 OpenShift 命令行界面(oc),如 安装 OpenShift CLI 中所述。

流程

  1. 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  2. DSC 初始化选项卡。
  3. default-dsci 对象。
  4. YAML 标签。
  5. spec 部分中,将 trustedCABundlemanagementState 字段的值改为 Removed

    spec:
      trustedCABundle:
        managementState: Removed
  6. 点击 Save

验证

  • 运行以下命令,以验证 odh-trusted-ca-bundle ConfigMap 是否已从所有命名空间中移除:

    $ oc get configmaps --all-namespaces | grep odh-trusted-ca-bundle

    该命令不应返回任何 ConfigMap。

9.4. 从命名空间中删除 CA 捆绑包

您可以从 OpenShift AI 中的独立命名空间中删除自定义证书颁发机构(CA)捆绑包。这个过程禁用只为指定命名空间创建 odh-trusted-ca-bundle 配置文件(ConfigMap)。

要从所有命名空间中删除证书捆绑包,请参阅 删除 CA 捆绑包

先决条件

  • 具有集群管理员特权。
  • 已安装 OpenShift 命令行界面(oc),如 安装 OpenShift CLI 中所述。

流程

  • 运行以下命令以从命名空间中删除 CA 捆绑包。在以下命令中,example-namespace 是非保留命名空间。

    $ oc annotate ns example-namespace security.opendatahub.io/inject-trusted-ca-bundle=false

验证

  • 运行以下命令,以验证已从命名空间中删除 CA 捆绑包。在以下命令中,example-namespace 是非保留命名空间。

    $ oc get configmap odh-trusted-ca-bundle -n example-namespace

    该命令应该返回 configmaps "odh-trusted-ca-bundle" not found

9.5. 管理证书

安装 OpenShift AI 后,Red Hat OpenShift AI Operator 会创建 odh-trusted-ca-bundle 配置文件(ConfigMap),其中包含可信 CA 捆绑包,并将其添加到集群中的所有新和非保留命名空间中。默认情况下,Red Hat OpenShift AI Operator 管理 odh-trusted-ca-bundle ConfigMap,并在对 CA 捆绑包进行任何更改时自动更新。您可以选择管理 odh-trusted-ca-bundle ConfigMap,而不是允许 Red Hat OpenShift AI Operator 管理它。

先决条件

  • 具有集群管理员特权。

流程

  1. 在 OpenShift Web 控制台中,点 OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator
  2. DSC 初始化选项卡。
  3. default-dsci 对象。
  4. YAML 标签。
  5. spec 部分中,将 trustedCABundlemanagementState 字段的值改为 Unmanaged,如下所示:

    spec:
      trustedCABundle:
        managementState: Unmanaged
  6. 点击 Save

    请注意,将 managementStateManaged 改为 Unmanaged 不会删除 odh-trusted-ca-bundle ConfigMap,但如果对 customCABundle 字段进行更改,则不会更新 ConfigMap。

验证

  1. spec 部分中,为 trustedCABundle 设置或更改 customCABundle 字段的值,例如:

    spec:
      trustedCABundle:
        managementState: Unmanaged
        customCABundle: example123
  2. 点击 Save
  3. WorkloadsConfigMaps
  4. 从项目列表中选择一个项目。
  5. odh-trusted-ca-bundle ConfigMap。
  6. YAML 选项卡,并验证 customCABundle 字段的值是否没有更新。

9.6. 使用自签名证书访问 S3 兼容对象存储

要使用自签名证书在 OpenShift 集群中部署的对象存储解决方案或数据库,您必须将 OpenShift AI 配置为信任集群的证书颁发机构(CA)。

每个命名空间都有一个名为 kube-root-ca.crt 的 ConfigMap,其中包含内部 API 服务器的 CA 证书。使用以下步骤将 OpenShift AI 配置为信任 kube-root-ca.crt 发布的证书。

或者,您可以使用 OpenShift 控制台添加自定义 CA 捆绑包,如 添加 CA 捆绑包 中所述。

先决条件

  • 具有集群管理员特权。
  • 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI
  • 您已在 OpenShift 集群中部署了对象存储解决方案或数据库。

流程

  1. 在一个终端窗口中,登录到 OpenShift CLI,如下例所示:

    oc login api.<cluster_name>.<cluster_domain>:6443 --web
  2. 运行以下命令来获取当前的 OpenShift AI 可信 CA 配置并将其存储在新文件中:

    oc get dscinitializations.dscinitialization.opendatahub.io default-dsci -o json | jq -r '.spec.trustedCABundle.customCABundle' > /tmp/my-custom-ca-bundles.crt
  3. 将集群的 kube-root-ca.crt ConfigMap 添加到 OpenShift AI 可信 CA 配置中:

    oc get configmap kube-root-ca.crt -o jsonpath="{['data']['ca\.crt']}" >> /tmp/my-custom-ca-bundles.crt
  4. 更新 OpenShift AI 可信 CA 配置,以信任 kube-root-ca.crt 中证书颁发机构发布的证书:

    oc patch dscinitialization default-dsci --type='json' -p='[{"op":"replace","path":"/spec/trustedCABundle/customCABundle","value":"'"$(awk '{printf "%s\\n", $0}' /tmp/my-custom-ca-bundles.crt)"'"}]'

验证

  • 您可以成功部署配置为使用 OpenShift 集群中部署的对象存储解决方案或数据库的组件。例如,配置为使用集群中部署的数据库的管道服务器可以成功启动。
注意

您可以按照 OpenShift AI fraud 检测 教程中的步骤来验证您的新证书配置。运行脚本来安装本地对象存储存储桶并创建连接,然后启用数据科学管道。

有关运行脚本以安装本地对象存储存储桶的更多信息,请参阅 运行脚本来安装本地对象存储存储桶并创建连接

有关启用数据科学管道的更多信息,请参阅启用数据科学管道

9.7. 在 OpenShift AI 组件中使用自签名证书

有些 OpenShift AI 组件为自签名证书有额外的选项或所需的配置。

9.7.1. 使用带有数据科学项目管道的证书

如果要使用自签名证书,请将它们添加到中央证书颁发机构(CA)捆绑包中,如使用 证书 (用于断开连接的环境)中所述,请参阅使用证书

在数据科学项目管道中使用这些证书不需要额外的配置。

9.7.1.1. 仅为数据科学项目提供 CA 捆绑包

执行以下步骤仅为数据科学管道提供证书颁发机构(CA)捆绑包。

流程

  1. 登录 OpenShift。
  2. WorkloadsConfigMaps 中,在与目标数据科学项目管道相同的数据科学项目或命名空间中创建一个所需捆绑包的 ConfigMap:

    kind: ConfigMap
    apiVersion: v1
    metadata:
        name: custom-ca-bundle
    data:
        ca-bundle.crt: |
        # contents of ca-bundle.crt
  3. 将以下代码片段添加到底层 Data Science Pipelines Application (DSPA) 的 .spec.apiserver.caBundle 字段中:

    apiVersion: datasciencepipelinesapplications.opendatahub.io/v1
    kind: DataSciencePipelinesApplication
    metadata:
        name: data-science-dspa
    spec:
        ...
        apiServer:
        ...
        cABundle:
            configMapName: custom-ca-bundle
            configMapKey: ca-bundle.crt

Pipeline 服务器 pod 使用更新的捆绑包重新部署,并在新创建的管道 pod 中使用它。

验证

执行以下步骤确认您的 CA 捆绑包已被成功挂载。

  1. 登录 OpenShift 控制台。
  2. 进入与 data Science 项目对应的 OpenShift 项目。
  3. Pods 选项卡。
  4. 点带有 ds-pipeline-dspa-<hash > 前缀的管道服务器 pod。
  5. Terminal
  6. 输入 cat /dsp-custom-certs/dsp-ca.crt
  7. 验证您的 CA 捆绑包是否存在于此文件中。

您还可以使用 CLI 确认您的 CA 捆绑包已被成功挂载:

  1. 在终端窗口中,登录部署了 OpenShift AI 的 OpenShift 集群。

    oc login
  2. 设置 dspa 值:

    dspa=dspa
  3. 设置 dsProject 值,将 $YOUR_DS_PROJECT 替换为您的数据科学项目的名称:

    dsProject=$YOUR_DS_PROJECT
  4. 设置 pod 值:

    pod=$(oc get pod -n ${dsProject} -l app=ds-pipeline-${dspa} --no-headers | awk '{print $1}')
  5. 显示 /dsp-custom-certs/dsp-ca.crt 文件的内容:

    oc -n ${dsProject} exec $pod -- cat /dsp-custom-certs/dsp-ca.crt
  6. 验证您的 CA 捆绑包是否存在于此文件中。

9.7.2. 使用带有工作台的证书

重要

默认情况下,自签名证书应用到您在集中配置证书后创建的工作台,如 使用证书 中所述,请参阅 使用证书。要将集中配置的证书应用到现有的工作台,请停止并重启工作台。

自签名证书存储在 /etc/pki/tls/custom-certs/ca-bundle.crt 中。工作台使用环境变量预设,该变量将软件包指向此路径,并涵盖许多流行的 HTTP 客户端软件包。对于默认未包含的软件包,您可以提供此证书路径。例如,对于 kfp 软件包连接到数据科学管道服务器:

from kfp.client import Client

with open(sa_token_file_path, 'r') as token_file:
    bearer_token = token_file.read()

    client = Client(
        host='https://<GO_TO_ROUTER_OF_DS_PROJECT>/',
        existing_token=bearer_token,
        ssl_ca_cert='/etc/pki/tls/custom-certs/ca-bundle.crt'
    )
    print(client.list_experiments())

第 10 章 查看日志和审计记录

作为集群管理员,您可以使用 OpenShift AI Operator 日志记录器监控并排除问题。您还可以使用 OpenShift 审计记录来查看对 OpenShift AI Operator 配置所做的更改历史记录。

10.1. 配置 OpenShift AI Operator 日志记录器

您可以通过在运行时为 DSC Initialization/DSCI 自定义资源设置 .spec.devFlags.logmode 标志来更改 OpenShift AI Operator 组件的日志级别。如果没有设置 logmode 值,则日志记录器默认使用 INFO 日志级别。

使用 .spec.devFlags.logmode 设置的日志级别适用于所有组件,而不仅仅是处于 Managed 状态的组件。

下表显示了可用的日志级别:

Expand
日志级别堆栈追踪级别详细程度输出时间戳类型

develdevelopment

WARN

INFO

控制台(Console)

epoch timestamp

"" (或没有设置 logmode 值)

ERROR

INFO

JSON

人类可读的时间戳

prodproduction

ERROR

INFO

JSON

人类可读的时间戳

以纯文本控制台格式设置为 develdevelopment 生成的日志。设置为 prodproduction 或没有 JSON 格式的级别集的日志。

先决条件

  • 您可以访问 OpenShift 集群中的 DSCInitialization 资源。
  • 已安装 OpenShift 命令行界面(oc),如 安装 OpenShift CLI 中所述。

流程

  1. 以集群管理员身份登录 OpenShift。
  2. OperatorsInstalled Operators,然后点 Red Hat OpenShift AI Operator。
  3. DSC 初始化选项卡。
  4. default-dsci 对象。
  5. YAML 标签。
  6. spec 部分中,使用您要设置的日志级别更新 .spec.devFlags.logmode 标志。

    apiVersion: dscinitialization.opendatahub.io/v1
    kind: DSCInitialization
    metadata:
      name: default-dsci
    spec:
      devFlags:
        logmode: development
  7. 点击 Save

您还可以使用以下命令,将 logmode 值设置为您想要的日志级别,从 OpenShift CLI 配置日志级别。

oc patch dsci default-dsci -p '{"spec":{"devFlags":{"logmode":"development"}}}' --type=merge

验证

  • 如果将组件日志级别设置为 develdevelopment,日志会更频繁地生成,并在 WARN 级别及更高级别包含日志。
  • 如果将组件日志级别设置为 prodproduction,或者没有设置日志级别,日志会更频繁地生成,并在 ERROR 级别或更高级别包含日志。

10.1.1. 查看 OpenShift AI Operator 日志

  1. 登录到 OpenShift CLI。
  2. 运行以下命令:

    oc get pods -l name=rhods-operator -o name -n redhat-ods-operator |  xargs -I {} oc logs -f {} -n redhat-ods-operator

    Operator pod 日志将打开。

您还可以在 OpenShift Console 中查看 Operator pod 日志,在 Workloads > Deployments > Pods &gt ; redhat-ods-operator > Logs 下。

10.2. 查看审计记录

集群管理员可以使用 OpenShift 审计来查看对 DataScienceCluster (DSC)和 DSCInitialization (DSCI)自定义资源的修改,来查看对 OpenShift AI Operator 配置所做的更改。标准 OpenShift 集群配置中默认启用审计日志记录。如需更多信息,请参阅 OpenShift 文档中的 查看审计日志

注意

在带有托管的 control plane (ROSA HCP)的 Red Hat OpenShift Service on Amazon Web Services 中,审计日志记录默认是禁用的,因为 Elasticsearch 日志存储不会为审计日志提供安全存储。要将审计日志发送到 Amazon CloudWatch ,请参阅将日志转发到 Amazon CloudWatch

以下示例演示了如何使用 OpenShift 审计日志查看 DSC 和 DSCI 自定义资源所做的更改历史记录。

先决条件

  • 具有集群管理员特权。
  • 已安装 OpenShift 命令行界面(oc),如 安装 OpenShift CLI 中所述。

流程

  1. 在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
  2. 要访问更改的自定义资源的完整内容,请将 OpenShift 审计日志策略设置为 WriteRequestBodies 或更全面的配置集。如需更多信息,请参阅关于审计日志策略配置集
  3. 获取可用于相关 control plane 节点的审计日志文件。例如:

    oc adm node-logs --role=master --path=kube-apiserver/ \
      | awk '{ print $1 }' | sort -u \
      | while read node ; do
          oc adm node-logs $node --path=kube-apiserver/audit.log < /dev/null
        done \
      | grep opendatahub > /tmp/kube-apiserver-audit-opendatahub.log
  4. 在文件中搜索 DSC 和 DSCI 自定义资源。例如:

    jq 'select((.objectRef.apiGroup == "dscinitialization.opendatahub.io"
                    or .objectRef.apiGroup == "datasciencecluster.opendatahub.io")
                  and .user.username != "system:serviceaccount:redhat-ods-operator:redhat-ods-operator-controller-manager"
                  and .verb != "get" and .verb != "watch" and .verb != "list")' < /tmp/kube-apiserver-audit-opendatahub.log

验证

  • 命令返回相关的日志条目。
提示

要配置日志保留时间,请查看以下资源:

第 11 章 常见安装问题的故障排除

如果您在安装 Red Hat OpenShift AI Operator 时遇到问题,请阅读本节以了解导致这个问题的原因以及如何解决这个问题。

如果此处或发行注记中没有包括该问题,请联系红帽支持团队。在提交问题单时,包含集群的调试信息会很有帮助。您可以使用 must-gather 工具来收集此信息,如 Must-Gather for Red Hat OpenShift AI收集集群数据 中所述。

您还可以调整 OpenShift AI Operator 组件的日志级别,以增加或减少日志详细程度以满足您的用例。如需更多信息,请参阅配置 OpenShift AI Operator 日志记录器

问题

当尝试从镜像 registry 检索 Red Hat OpenShift AI Operator 时,会出现一个 Failure to pull from quay 错误信息。在以下情况下,Red Hat OpenShift AI Operator 可能无法检索:

  • 镜像 registry 不可用。
  • 您的网络连接存在问题。
  • 集群无法正常工作,因此无法检索镜像 registry。

诊断

检查 OpenShift 中的 Events 部分中的日志,以了解有关 Failure to pull from quay 错误消息的更多信息。

解决方案

  • 联系红帽支持。

11.2. OpenShift AI 在不支持的基础架构上不安装

问题

您在 Red Hat OpenShift AI Operator 不支持的环境中部署。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. Project 设置为 All Projectsredhat-ods-operator
  4. rhods-operator-<random string> pod。

    Pod 详情页面会显示。

  5. Logs
  6. 从下拉列表中选择 rhods-operator
  7. 检查日志的 ERROR: Deploying on $infrastructure, which is not supported。Failing Installation 错误信息。

解决方案

11.3. OpenShift AI 自定义资源(CR)的创建失败

问题

在安装过程中,OpenShift AI 自定义资源(CR)不会被创建。这个问题在未知情况下发生。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. Project 设置为 All Projectsredhat-ods-operator
  4. rhods-operator-<random string> pod。

    Pod 详情页面会显示。

  5. Logs
  6. 从下拉列表中选择 rhods-operator
  7. 检查 ERROR: Attempt 的日志,以创建 ODH CR failed. 错误消息。

解决方案

  • 联系红帽支持。

问题

在安装过程中,OpenShift AI Notebooks 自定义资源(CR)不会被创建。这个问题在未知情况下发生。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. Project 设置为 All Projectsredhat-ods-operator
  4. rhods-operator-<random string> pod。

    Pod 详情页面会显示。

  5. Logs
  6. 从下拉列表中选择 rhods-operator
  7. 检查 ERROR: Attempt 以创建 RHODS Notebooks CR failed. 错误信息的日志。

解决方案

  • 联系红帽支持。

11.5. OpenShift AI 仪表板无法访问

问题

安装 OpenShift AI 后,redhat-ods-applicationsredhat-ods-monitoringredhat-ods-operator 项目命名空间是 Active,但由于 pod 中的错误,您无法访问仪表板。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. 将项目设置为 All Projects
  4. 单击 Filter,然后选中 RunningCompleted 以外的每个状态的复选框。

    页面中显示出错的 pod。

解决方案

  • 要查看 Pod 的更多信息和故障排除步骤,请在 Pods 页面中点击 Pod 的 Status 列中的链接。
  • 如果 Status 列没有显示链接,请单击 Pod 名称以打开 Pod 详情页面,然后单击 Logs 选项卡。

问题

无法为目标项目中的 dedicated-admins 组提供基于角色的访问控制(RBAC)策略。这个问题在未知情况下发生。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. Project 设置为 All Projectsredhat-ods-operator
  4. rhods-operator-<random string> pod。

    Pod 详情页面会显示。

  5. Logs
  6. 从下拉列表中选择 rhods-operator
  7. 检查 ERROR: Attempt 的日志,在 $target_project failed. 错误消息中为 dedicated admins 组创建 RBAC 策略

解决方案

  • 联系红帽支持。

11.7. PagerDuty secret 不会被创建

问题

Managed Tenants SRE 自动化进程存在问题,导致 PagerDuty 的 secret 无法被创建。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. Project 设置为 All Projectsredhat-ods-operator
  4. rhods-operator-<random string> pod。

    Pod 详情页面会显示。

  5. Logs
  6. 从下拉列表中选择 rhods-operator
  7. 检查 ERROR: Pagerduty secret 的日志不存在 错误消息。

解决方案

  • 联系红帽支持。

11.8. SMTP secret 不存在

问题

Managed Tenants SRE 自动化进程存在问题,会导致 SMTP secret 无法创建。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. Project 设置为 All Projectsredhat-ods-operator
  4. rhods-operator-<random string> pod。

    Pod 详情页面会显示。

  5. Logs
  6. 从下拉列表中选择 rhods-operator
  7. 检查日志中的 ERROR: SMTP secret does not exist 错误信息。

解决方案

  • 联系红帽支持。

11.9. ODH 参数 secret 不会被创建

问题

OpenShift AI Operator 流的问题可能会导致无法创建 ODH 参数。

诊断

  1. 在 OpenShift Web 控制台中,切换到 Administrator 视角。
  2. 点击 WorkloadsPods
  3. Project 设置为 All Projectsredhat-ods-operator
  4. rhods-operator-<random string> pod。

    Pod 详情页面会显示。

  5. Logs
  6. 从下拉列表中选择 rhods-operator
  7. 检查 ERROR: Addon managed odh parameter secret does not exist. 错误信息。

解决方案

  • 联系红帽支持。

问题

在安装了未由 OpenShift AI 安装的 Argo 工作流安装 OpenShift AI 2.9 或更高版本后,虽然 Datasciencepipelines 组件在 DataScienceCluster 对象中启用了 datasciencepipelines 组件,则不会启用数据科学管道。

诊断

安装 OpenShift AI 2.9 或更高版本后,Data Science Pipelines 选项卡在 OpenShift AI 仪表板导航菜单中不可见。

解决方案

  • 删除集群中的 Argo 工作流的独立安装。在从集群中删除任何不是由 OpenShift AI 创建的 Argo Workflows 资源后,会自动启用数据科学管道。

第 12 章 卸载 Red Hat OpenShift AI Self-Managed

本节介绍如何使用 OpenShift 命令行界面(CLI)卸载 Red Hat OpenShift AI Operator 以及由 Operator 安装和管理的任何 OpenShift AI 组件。

注意

使用 CLI 是卸载 Operator 的建议方法。根据您的 OpenShift 版本,使用 Web 控制台执行卸载可能无法提示您卸载所有相关组件。这可能会导致您不知道集群的最终状态。

12.1. 了解卸载过程

安装 Red Hat OpenShift AI 在 OpenShift 集群上为 OpenShift AI 的不同组件创建了多个自定义资源实例。安装后,用户可能会在使用 OpenShift AI 时创建多个其他资源。卸载 OpenShift AI 会删除 Operator 创建的资源,但保留用户创建的资源,以防止意外删除您可能需要的信息。

要删除的内容

卸载 OpenShift AI 从 OpenShift 集群中删除以下资源:

  • DataScienceCluster 自定义资源实例
  • DSCInitialization 自定义资源实例
  • FeatureTracker 自定义资源实例在安装过程中或安装后创建
  • 在 Operator 期间或安装后创建的 ServiceMesh 自定义资源实例
  • Operator 在安装过程中或安装后创建的 KnativeServing 自定义资源实例
  • redhat-ods-applications,redhat-ods-monitoring, 和 rhods-notebooks 命名空间由 Operator 创建
  • rhods-notebooks 命名空间中的工作负载
  • Subscription, ClusterServiceVersion, 和 InstallPlan 对象
  • KfDef 对象(仅限版本 1 Operator)

可能保留什么

卸载 OpenShift AI 在 OpenShift 集群中保留以下资源:

  • 用户创建的数据科学项目
  • 用户创建的自定义资源实例
  • 由用户或 Operator 创建的自定义资源定义 (CRD)

虽然这些资源可能仍然保留在 OpenShift 集群中,但它们无法正常工作。卸载后,红帽建议您查看 OpenShift 集群中的数据科学项目和自定义资源,并删除不再用于防止潜在问题(如无法取消部署且无法取消部署的管道)的任何内容。

12.2. 使用 CLI 卸载 OpenShift AI 自我管理

以下流程演示了如何使用 OpenShift 命令行界面(CLI) 卸载 Red Hat OpenShift AI Operator 以及由 Operator 安装和管理的任何 OpenShift AI 组件。

先决条件

  • 具有集群管理员特权。
  • 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI
  • 您已备份了持久性卷声明 (PVC) 使用的持久性卷或卷。

流程

  1. 打开一个新的终端窗口。
  2. 在 OpenShift 命令行界面(CLI)中,以集群管理员身份登录到 OpenShift 集群,如下例所示:

    $ oc login <openshift_cluster_url> -u system:admin
  3. 创建 ConfigMap 对象以删除 Red Hat OpenShift AI Operator。

    $ oc create configmap delete-self-managed-odh -n redhat-ods-operator
  4. 要删除 rhods-operator,请将 addon-managed-odh-delete 标签设置为 true

    $ oc label configmap/delete-self-managed-odh api.openshift.com/addon-managed-odh-delete=true -n redhat-ods-operator
  5. 删除与 Operator 关联的所有对象时,删除 redhat-ods-operator 项目。

    1. redhat-ods-applications 项目设置环境变量。

      $ PROJECT_NAME=redhat-ods-applications
    2. 等待 redhat-ods-applications 项目已被删除。

      $ while oc get project $PROJECT_NAME &> /dev/null; do
      echo "The $PROJECT_NAME project still exists"
      sleep 1
      done
      echo "The $PROJECT_NAME project no longer exists"

      删除 redhat-ods-applications 项目后,您会看到以下输出:

      The redhat-ods-applications project no longer exists
    3. 删除 redhat-ods-applications 项目后,删除 redhat-ods-operator 项目。

      $ oc delete namespace redhat-ods-operator

验证

  • 确认 rhods-operator 订阅不再存在。

    $ oc get subscriptions --all-namespaces | grep rhods-operator
  • 确认以下项目不再存在。

    • redhat-ods-applications
    • redhat-ods-monitoring
    • redhat-ods-operator
    • rhods-notebooks

      $ oc get namespaces | grep -e redhat-ods* -e rhods*
      注意

      只有在安装了 OpenShift AI 的工作台组件时,才会创建 rhods-notebooks 项目。请参阅 安装和管理 Red Hat OpenShift AI 组件

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部