3.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,请联系红帽支持。
3.3.1. 安装 KServe 依赖项 复制链接链接已复制到粘贴板!
在安装 KServe 前,您必须安装和配置一些依赖项。具体来说,您必须创建 Red Hat OpenShift Service Mesh 和 Knative Serving 实例,然后为 Knative Serving 配置安全网关。
目前,只支持 OpenShift Service Mesh v2。如需更多信息,请参阅 支持的配置。
3.3.1.1. 创建 OpenShift Service Mesh 实例 复制链接链接已复制到粘贴板!
以下流程演示了如何创建 Red Hat OpenShift Service Mesh 实例。
先决条件
- 具有 OpenShift Container Platform 集群的集群管理员特权。
- 您的集群有 4 个 CPU 和 16 GB 内存的节点。
- 您已下载并安装 OpenShift 命令行界面(CLI)。请参阅安装 OpenShift CLI。
- 已安装 Red Hat OpenShift Service Mesh Operator 和依赖的 Operator。
步骤
在终端窗口中,如果您还没有以集群管理员身份登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Red Hat OpenShift Service Mesh 创建所需的命名空间。
oc create ns istio-system
$ oc create ns istio-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会看到以下输出:
namespace/istio-system created
namespace/istio-system createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
smcp.yaml的 YAML 文件中定义ServiceMeshControlPlane对象,其内容如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需有关 YAML 文件中值的更多信息,请参阅 Service Mesh control plane 配置参考。
创建服务网格 control plane。
oc apply -f smcp.yaml
$ oc apply -f smcp.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证服务网格实例的创建,如下所示:
在 OpenShift CLI 中输入以下命令:
oc get pods -n istio-system
$ oc get pods -n istio-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令列出了
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
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 22hCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.1.2. 创建 Knative Serving 实例 复制链接链接已复制到粘贴板!
以下流程演示了如何安装 Knative Serving,然后创建实例。
先决条件
- 具有 OpenShift Container Platform 集群的集群管理员特权。
- 您的集群有 4 个 CPU 和 16 GB 内存的节点。
- 您已下载并安装 OpenShift 命令行界面(CLI)。请参阅安装 OpenShift CLI。
- 您已创建了 Red Hat OpenShift Service Mesh 实例。
- 已安装 Red Hat OpenShift Serverless Operator。
步骤
在终端窗口中,如果您还没有以集群管理员身份登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Knative Serving 所需的项目(即 命名空间)是否已存在。
oc get ns knative-serving
$ oc get ns knative-servingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果项目存在,您会看到类似以下示例的输出:
NAME STATUS AGE knative-serving Active 4d20h
NAME STATUS AGE knative-serving Active 4d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
knative-serving项目不存在,请创建它。oc create ns knative-serving
$ oc create ns knative-servingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会看到以下输出:
namespace/knative-serving created
namespace/knative-serving createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
default-smm.yaml的 YAML 文件中定义ServiceMeshMember对象,其内容如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
istio-system命名空间中创建ServiceMeshMember对象。oc apply -f default-smm.yaml
$ oc apply -f default-smm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会看到以下输出:
servicemeshmember.maistra.io/default created
servicemeshmember.maistra.io/default createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
knativeserving-istio.yaml的 YAML 文件中定义KnativeServing对象,其内容如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的文件为
KnativeServing对象定义自定义资源(CR)。CR 还为每个激活器和自动扩展 pod 添加以下操作:注意如果为 Knative 服务配置自定义域,您可以使用 TLS 证书来保护映射的服务。要做到这一点,您必须创建一个 TLS secret,然后更新
DomainMappingCR 以使用您创建的 TLS secret。如需更多信息,请参阅 Red Hat OpenShift Serverless 文档中的使用 TLS 证书保护映射的服务。在指定的
knative-serving命名空间中创建KnativeServing对象。oc apply -f knativeserving-istio.yaml
$ oc apply -f knativeserving-istio.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会看到以下输出:
knativeserving.operator.knative.dev/knative-serving created
knativeserving.operator.knative.dev/knative-serving createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看
istio-system命名空间中的默认ServiceMeshMemberRoll对象。oc describe smmr default -n istio-system
$ oc describe smmr default -n istio-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
ServiceMeshMemberRoll对象的描述中,找到Status.Members字段,并确认它包含knative-serving命名空间。验证 Knative Serving 实例的创建,如下所示:
在 OpenShift CLI 中输入以下命令:
oc get pods -n knative-serving
$ oc get pods -n knative-servingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令列出了
knative-serving项目中所有正在运行的 pod。这是您在其中创建 Knative Serving 实例的项目。确认
knative-serving项目中有多个正在运行的 pod,包括 activator、自动扩展器、控制器和域映射 pod,以及控制 OpenShift Serverless 和 OpenShift Service Mesh 的集成的 pod。此时会显示一个示例。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.1.3. 为 Knative Serving 创建安全网关 复制链接链接已复制到粘贴板!
要保护 Knative Serving 实例和服务网格之间的流量,您必须为 Knative Serving 实例创建安全网关。
以下流程演示了如何使用 OpenSSL 生成通配符证书和密钥,然后使用它们为 Knative Serving 创建本地和入口网关。
如果您有自己的通配符证书和密钥在配置网关时指定,您可以跳过这个过程的第 11 步。
先决条件
- 具有 OpenShift Container Platform 集群的集群管理员特权。
- 您已下载并安装 OpenShift 命令行界面(CLI)。请参阅安装 OpenShift CLI。
- 您已创建了 Red Hat OpenShift Service Mesh 实例。
- 您已创建了 Knative Serving 实例。
- 如果要生成通配符证书和密钥,您已 下载并安装 OpenSSL。
步骤
在终端窗口中,如果您还没有以集群管理员身份登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您有自己的通配符证书和密钥在配置网关时指定,请跳至此流程的第 11 步。
设置环境变量,以定义用于为网关生成通配符证书和密钥的基础目录。
export BASE_DIR=/tmp/kserve export BASE_CERT_DIR=${BASE_DIR}/certs$ export BASE_DIR=/tmp/kserve $ export BASE_CERT_DIR=${BASE_DIR}/certsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置环境变量,以定义 OpenShift 集群的入口控制器使用的通用名称。
export COMMON_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}' | awk -F'.' '{print $(NF-1)"."$NF}')$ export COMMON_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}' | awk -F'.' '{print $(NF-1)"."$NF}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置环境变量,以定义 OpenShift 集群的入口控制器使用的域名。
export DOMAIN_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}')$ export DOMAIN_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据之前设置的环境变量,为证书生成创建所需的基础目录。
mkdir ${BASE_DIR} mkdir ${BASE_CERT_DIR}$ mkdir ${BASE_DIR} $ mkdir ${BASE_CERT_DIR}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于生成通配符证书的 OpenSSL 配置。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 root 证书。
openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \ -subj "/O=Example Inc./CN=${COMMON_NAME}" \ -keyout $BASE_DIR/root.key \ -out $BASE_DIR/root.crt$ openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \ -subj "/O=Example Inc./CN=${COMMON_NAME}" \ -keyout $BASE_DIR/root.key \ -out $BASE_DIR/root.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成由 root 证书签名的通配符证书。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证通配符证书。
openssl verify -CAfile ${BASE_DIR}/root.crt ${BASE_DIR}/wildcard.crt$ openssl verify -CAfile ${BASE_DIR}/root.crt ${BASE_DIR}/wildcard.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将脚本创建的通配符密钥和证书导出到新环境变量。
export TARGET_CUSTOM_CERT=${BASE_CERT_DIR}/wildcard.crt export TARGET_CUSTOM_KEY=${BASE_CERT_DIR}/wildcard.key$ export TARGET_CUSTOM_CERT=${BASE_CERT_DIR}/wildcard.crt $ export TARGET_CUSTOM_KEY=${BASE_CERT_DIR}/wildcard.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要将 自己的 通配符密钥和证书导出到新环境变量,请输入以下命令:
export TARGET_CUSTOM_CERT=<path_to_certificate> export TARGET_CUSTOM_KEY=<path_to_key>
$ export TARGET_CUSTOM_CERT=<path_to_certificate> $ export TARGET_CUSTOM_KEY=<path_to_key>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在您提供的证书中,您必须指定 OpenShift 集群的 ingress 控制器使用的域名。您可以运行以下命令来检查这个值:
$ oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}'使用您为通配符证书和密钥设置的环境变量在
istio-system命名空间中创建 TLS secret。oc create secret tls wildcard-certs --cert=${TARGET_CUSTOM_CERT} --key=${TARGET_CUSTOM_KEY} -n istio-system$ oc create secret tls wildcard-certs --cert=${TARGET_CUSTOM_CERT} --key=${TARGET_CUSTOM_KEY} -n istio-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建一个
gateways.yamlYAML 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用
gateways.yaml文件以创建定义的资源。oc apply -f gateways.yaml
$ oc apply -f gateways.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会看到以下输出:
service/knative-local-gateway created gateway.networking.istio.io/knative-ingress-gateway created gateway.networking.istio.io/knative-local-gateway created
service/knative-local-gateway created gateway.networking.istio.io/knative-ingress-gateway created gateway.networking.istio.io/knative-local-gateway createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看您创建的网关。
oc get gateway --all-namespaces
$ oc get gateway --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认您看到在
knative-serving命名空间中创建的本地和入口网关,如下例所示:NAMESPACE NAME AGE knative-serving knative-ingress-gateway 69s knative-serving knative-local-gateway 2m
NAMESPACE NAME AGE knative-serving knative-ingress-gateway 69s knative-serving knative-local-gateway 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. 安装 KServe 复制链接链接已复制到粘贴板!
要完成 KServe 的手动安装,您必须安装 Red Hat OpenShift AI Operator。然后,您可以将 Operator 配置为安装 KServe。
先决条件
步骤
- 以集群管理员身份登录 OpenShift Web 控制台。
-
在 Web 控制台中,点 Operators
Installed Operators,然后点 Red Hat OpenShift AI Operator。 要安装 KServe,请配置 OpenShift Service Mesh 组件,如下所示:
- 单击 DSC 初始化 选项卡。
- 点 default-dsci 对象。
- 点 YAML 标签。
在
spec部分,添加并配置serviceMesh组件,如下所示:spec: serviceMesh: managementState: Unmanaged
spec: serviceMesh: managementState: UnmanagedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点击 Save。
要安装 KServe,请配置 KServe 和 OpenShift Serverless 组件,如下所示:
-
在 Web 控制台中,点 Operators
Installed Operators,然后点 Red Hat OpenShift AI Operator。 - 点 Data Science Cluster 选项卡。
- 单击 default-dsc DSC 对象。
- 点 YAML 标签。
在
spec.components部分中,配置kserve组件,如下所示:spec: components: kserve: managementState: Managedspec: components: kserve: managementState: ManagedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
kserve组件中,添加serving组件并进行配置,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点击 Save。
-
在 Web 控制台中,点 Operators