4.4. 为 single-model 服务平台添加授权供应商
您可以将 Authorino 添加为 single-model 服务平台的授权供应商。通过添加授权供应商,您可以为平台上部署的模型启用令牌身份验证,以确保只有授权方能够对模型发出推测请求。
用于将 Authorino 添加为授权提供程序的方法取决于您如何安装单model服务平台。该平台的安装选项如下所述:
- 自动安装
如果您还没有在 OpenShift 集群上创建
ServiceMeshControlPlane或KNativeServing资源,您可以将 Red Hat OpenShift AI Operator 配置为安装 KServe 及其依赖项。您可以包含 Authorino 作为自动安装过程的一部分。有关自动安装的更多信息,包括 Authorino,请参阅配置 KServe 的自动安装。
- 手动安装
如果您已在 OpenShift 集群上创建了
ServiceMeshControlPlane或KNativeServing资源,则无法 配置 Red Hat OpenShift AI Operator 来安装 KServe 及其依赖项。在这种情况下,您必须手动安装 KServe。您还必须手动配置 Authorino。有关手动安装的更多信息,包括 Authorino,请参阅 手动安装 KServe。
注意您可以在手动安装单型号服务平台的过程中,以
Unmanaged模式运行 KServe。 当您需要对 KServe 组件进行更多控制时,此模式很有用,如修改 KServe 控制器的资源限值。
4.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。
4.4.2. 安装 Red Hat Authorino Operator 复制链接链接已复制到粘贴板!
在将 Authorino 添加为授权提供程序之前,您必须在 OpenShift 集群上安装 Red Hat - Authorino Operator。
先决条件
- 有 OpenShift 集群的集群管理员特权。
流程
- 以集群管理员身份登录 OpenShift Web 控制台。
-
在 Web 控制台中,点 Operators
OperatorHub。 - 在 OperatorHub 页面上,在 Filter by keyword 字段中键入 Red Hat - Authorino。
- 点 Red Hat - Authorino Operator。
- 在 Red Hat - Authorino Operator 页面中,查看 Operator 信息,然后点 Install。
在 Install Operator 页面中,保留 Installation mode、Installed Namespace 和 Update Approval 的默认值。
- 对于 更新频道,请选择 Stable。
- 对于 Version,请选择 1.2.1 或更高版本。
- 点 Install。
验证
在 OpenShift Web 控制台中,点 Operators
Installed Operators,并确认 Red Hat - AuthorinoOperator 显示了以下状态之一:-
Installing- 安装正在进行中;等待它变为Succeeded。这可能需要几分钟。 -
Succeeded- 安装成功。
-
4.4.3. 创建 Authorino 实例 复制链接链接已复制到粘贴板!
在 OpenShift 集群上安装 Red Hat - Authorino Operator 时,您必须创建一个 Authorino 实例。
先决条件
-
已安装
Red Hat - AuthorinoOperator。 您有将资源添加到创建 OpenShift Service Mesh 实例的项目中的权限。请参阅创建 OpenShift Service Mesh 实例。
如需有关 OpenShift 权限的更多信息,请参阅使用 RBAC 定义和应用权限 (Red Hat OpenShift Dedicated)或使用 RBAC 定义并应用权限 (Red Hat OpenShift Service on AWS)。
流程
- 打开一个新的终端窗口。
登录到 OpenShift 命令行界面(CLI),如下所示:
oc login <openshift_cluster_url> -u <username> -p <password>
$ oc login <openshift_cluster_url> -u <username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个命名空间来安装 Authorino 实例。
oc new-project <namespace_for_authorino_instance>
$ oc new-project <namespace_for_authorino_instance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意自动安装过程为 Authorino 实例创建一个名为
redhat-ods-applications-auth-provider的命名空间。考虑在手动安装时使用相同的命名空间名称。要在现有 OpenShift Service Mesh 实例中为 Authorino 实例注册新命名空间,请创建一个包含以下内容的新 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 YAML 文件。
在集群中创建
ServiceMeshMember资源。oc create -f <file_name>.yaml
$ oc create -f <file_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要配置 Authorino 实例,请创建一个新的 YAML 文件,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 YAML 文件。
在集群中创建
Authorino资源。oc create -f <file_name>.yaml
$ oc create -f <file_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对 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"}}}} }'$ oc patch deployment <name_of_authorino_instance> -n <namespace_for_authorino_instance> -p '{"spec": {"template":{"metadata":{"labels":{"sidecar.istio.io/inject":"true"}}}} }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确认 Authorino 实例正在运行,如下所示:
检查您为 Authorino 实例创建的命名空间中运行的 pod (和容器),如下例所示:
oc get pods -n redhat-ods-applications-auth-provider -o="custom-columns=NAME:.metadata.name,STATUS:.status.phase,CONTAINERS:.spec.containers[*].name"
$ oc get pods -n redhat-ods-applications-auth-provider -o="custom-columns=NAME:.metadata.name,STATUS:.status.phase,CONTAINERS:.spec.containers[*].name"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认输出类似以下示例:
NAME STATUS CONTAINERS authorino-6bc64bd667-kn28z Running authorino,istio-proxy
NAME STATUS CONTAINERS authorino-6bc64bd667-kn28z Running authorino,istio-proxyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如示例所示,有一个用于 Authorino 实例的 pod。pod 为 Authorino 和您注入的 Istio sidecar 容器。
4.4.4. 将 OpenShift Service Mesh 实例配置为使用 Authorino 复制链接链接已复制到粘贴板!
创建 Authorino 实例时,您必须将 OpenShift Service Mesh 实例配置为使用 Authorino 作为授权供应商。
为确保 OpenShift Service Mesh 实例处于支持状态,请只 进行以下流程中显示的配置更新。
先决条件
- 您已创建了 Authorino 实例,并在 OpenShift Service Mesh 实例中注册 Authorino 实例的命名空间。
- 有修改 OpenShift Service Mesh 实例的权限。请参阅创建 OpenShift Service Mesh 实例。
流程
在一个终端窗口中,如果您还没有以具有更新 OpenShift Service Mesh 实例的用户身份登录 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <username> -p <password>
$ oc login <openshift_cluster_url> -u <username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的新 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 YAML 文件。
使用
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
$ oc patch smcp <name_of_service_mesh_instance> --type merge -n <namespace_for_service_mesh_instance> --patch-file <file_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要只有在 OpenShift Service Mesh 实例中尚未指定其他扩展供应商时,才能应用显示的配置作为补丁。如果您已经指定了其他扩展供应商,则必须手动编辑
ServiceMeshControlPlane资源来添加配置。
验证
验证您的 Authorino 实例是否已作为扩展供应商添加到 OpenShift Service Mesh 配置中,如下所示:
检查 OpenShift Service Mesh 实例的
ConfigMap对象:oc get configmap istio-<name_of_service_mesh_instance> -n <namespace_for_service_mesh_instance> --output=jsonpath={.data.mesh}$ oc get configmap istio-<name_of_service_mesh_instance> -n <namespace_for_service_mesh_instance> --output=jsonpath={.data.mesh}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认您看到与以下示例类似的输出,这表明 Authorino 实例已成功添加为扩展提供程序。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.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 实例。
流程
在一个终端窗口中,如果您还没有以具有更新 KServe 部署权限的用户身份登录 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <username> -p <password>
$ oc login <openshift_cluster_url> -u <username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的新 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您指定的名称必须与添加到 OpenShift Service Mesh 实例的扩展供应商名称匹配。
- 保存 YAML 文件。
在命名空间中为 OpenShift Service Mesh 实例创建
AuthorizationPolicy资源。oc create -n <namespace_for_service_mesh_instance> -f <file_name>.yaml
$ oc create -n <namespace_for_service_mesh_instance> -f <file_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的另一个新 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示的
EnvoyFilter资源持续将 HTTP 主机标头重置为最初包含在任何推销请求中的标头。在命名空间中为您的 OpenShift Service Mesh 实例创建
EnvoyFilter资源。oc create -n <namespace_for_service_mesh_instance> -f <file_name>.yaml
$ oc create -n <namespace_for_service_mesh_instance> -f <file_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查
AuthorizationPolicy资源是否已成功创建。oc get authorizationpolicies -n <namespace_for_service_mesh_instance>
$ oc get authorizationpolicies -n <namespace_for_service_mesh_instance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认输出类似以下示例:
NAME AGE kserve-predictor 28h
NAME AGE kserve-predictor 28hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
EnvoyFilter资源是否已成功创建。oc get envoyfilter -n <namespace_for_service_mesh_instance>
$ oc get envoyfilter -n <namespace_for_service_mesh_instance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认输出类似以下示例:
NAME AGE activator-host-header 28h
NAME AGE activator-host-header 28hCopy to Clipboard Copied! Toggle word wrap Toggle overflow