OCP 4.14/4.16:在 SDI Observer Operator 支持的 OpenShift Container Platform 4 上安装 SAP Data Intelligence 3
内容
- 1.简介
- 2.OpenShift Container Platform 验证版本矩阵
- 3.要求
- 4.安装 Red Hat OpenShift Container Platform
- 5.在 OpenShift 上安装 SDI
- 6.升级 OpenShift Container Platform
- 7.升级或更新 SAP Data Intelligence
- 8.附录
- 9.故障排除
1.简介
通常,SAP Data Intelligence (SDI)的安装遵循以下步骤:
- 安装 Red Hat OpenShift Container Platform。
- 安装 SDI Observer Operator。
- 使用 SDI Observer Operator 配置 SAP Data Intelligence 的先决条件。
- 在 OpenShift Container Platform 上安装 SAP Data Intelligence。
如果您对安装 SAP Data Intelligence 之前的版本或之前的方法有兴趣,请参阅 OpenShift Container Platform 4 上的 SAP Data Intelligence 3 指南。
备注:
- 在本文中,OpenShift Container Storage (OCS)在其新产品名称下被称为 OpenShift Data Foundation (ODF)。
- OpenShift Container Platform (OCP)可以被 OpenShift Kubernetes Engine (OKE)替换。OKE 足够了,且支持运行 SAP Data Intelligence。
- 在安全审计过程中可能会发现已知的 SAP 镜像安全问题。红帽无法解决它们。请针对以下任一情况,开一个 SAP 的支持问题单:
- SAP 容器以 root 身份运行
- SAP 容器运行没有限制(不受 SELinux 限制)
- SAP 容器需要特权安全上下文
2.OpenShift Container Platform 验证版本矩阵
以下 SDI 3.X、OpenShift Container Platform (OCP)、SDI Observer Operator、RHEL 或 RHCOS 版本组合已针对生产环境进行了验证:
SAP Data Intelligence | OpenShift Container Platform | 操作系统 | 基础设施和(存储) | 被 SAP 确认和支持 |
---|---|---|---|---|
3.3 | 4.14, 4.16 | RHCOS (节点)、RHEL 8.6+ 或 Fedora (管理主机) | VMware vSphere (ODF 4) | 支持 |
3.3 | 4.14, 4.16 | RHCOS (节点)、RHEL 8.6+ 或 Fedora (管理主机) | 裸机 ∗ (ODF 4 ¡) | 支持 |
+ 引用的 OpenShift 版本不再被红帽支持!
∗
在两个不同的硬件配置上验证了。
-
如需有关 IBM Cloud™ 上 OCP 的更多信息,请参阅 开始学习 IBM Cloud 上的 Red Hat OpenShift。
如果使用此平台,您不需要安装 OpenShift,并可能直接跳到 IBM 文档 规划您的 SAP Data Intelligence 部署。将指导您完成所有安装步骤,并找到指向红帽文章的合适链接。 -
(Dev/PoC 级别) Lnovo 4 裸机主机设置由以下组成:
-
3 个可调度的控制平面节点,运行 ODF 和 SDI (Lenovo ThinkSystem SR530)
-
1 个运行 SDI 的计算节点(Lenovo ThinkSystem SR530)
-
(生产级别) Dell Technologies 裸机集群包括:
-
1 CSAH 节点(Dell EMC PowerEdge R640s)
- 3 个控制平面节点(Dell EMC PowerEdge R640s)
- 3 个专用 ODF 节点(Dell EMC PowerEdge R640s)
- 3 个专用 SDI 节点(Dell EMC PowerEdge R740xd)
提供 CSI 支持的外部 Dell EMC 存储选项和集群大小选项。
CSAH
代表集群系统管理主机 - 等同于 管理主机。
有关被视为可工作的版本组合,请参阅 兼容性矩阵。您还可以参阅 SAP Note #2871970 ,以了解更多详细信息。
3.要求
3.1.硬件/VM 和 OS 要求
3.1.1.OpenShift 集群
确保检查以下官方集群要求:
- SAP 文档中的 SAP Data Intelligence:
- OpenShift 4 - 最低资源要求
- 另外,如果部署 OpenShift Data Foundation (也称为 ODF),请参阅 ODF 支持的配置
- 在 VMware vSphere 上部署时,还要考虑 VMware vSphere 基础设施要求
- 在部署 NetApp Trident 时,还请参阅 NetApp Hardware/VM 和 OS 要求
3.1.1.1. 不同类型的节点
有四种节点:
- Bootstrap Node - OpenShift 部署需要的一个临时 bootstrap 节点。节点可以由安装程序销毁(使用 infrastructure-provisioned-installation,也称为 IPI)或由管理员手动删除。或者,它可以被重用为 worker 节点。如需更多信息,请参阅 安装过程(4.14)。
- 主节点 (4.14) - 控制平面管理 OpenShift Container Platform 集群。控制平面可以设成 可调度的 ,来启用 SDI 工作负载。
- 计算节点 (4.14) - 运行实际的工作负载(如 SDI pod)。它们在一个三节点集群(其中主节点是可调度的)上是可选的。
- ODF 节点 (4.12) - 运行 OpenShift Data Foundation (也称为 ODF)。节点可以划分为 starting 节点(运行 OSD 和监控)和 additional 节点(仅运行 OSD)。只有在 ODF 被用作备份存储提供者时才需要。
- 请注意,从 ODF 4.8 开始,完全支持在 紧凑模式 下运行(在控制平面上)。
-
管理主机(也称为 管理员的工作站 或 跳板机 )- 管理主机用于:
- 通过配置的命令行客户端(
oc
或kubectl
)访问 OpenShift 集群。 - 配置 OpenShift 集群.
- 运行软件生命周期容器网桥(SLC 网桥)。
- 通过配置的命令行客户端(
管理主机 的硬件/软件要求可以是:
- OS:Red Hat Enterprise Linux 8.1+, RHEL 7.6+ 或 Fedora 30+
- 磁盘空间:20GiB
3.1.1.2. [不支持] 断开连接的和气隙的环境
对于其它 SAP Data Intelligence 安装的方法,会验证断开连接的和气隙的环境安装,它们不在指导范围之内。请参阅 OpenShift Container Platform 4 上 SAP Data Intelligence 3 的已验证的安装方法,以便在断开连接的或气隙的环境中部署。
3.1.1.3.最低硬件要求
下表列出了最新经过验证的 SDI 和 OpenShift 4.X 版本的每个节点类型的 最低 要求和最少实例数。这对于 PoC(概念验证)环境来说足够了。
类型 | 数量 | 操作系统 | vCPU ⑃ | RAM (GB) | 存储(GB) | AWS 实例类型 |
---|---|---|---|---|---|---|
Bootstrap | 1 | RHCOS | 4 | 16 | 120 | m4.xlarge |
Master | 3 | RHCOS | 4 | 16 | 120 | m4.xlarge |
Compute | 3+ | RHCOS 或 RHEL 8.6, 8.7 或 8.8 | 8 | 32 | 120 | m4.2xlarge |
在三节点集群中,它类似如下:
类型 | 数量 | 操作系统 | vCPU ⑃ | RAM (GB) | 存储(GB) | AWS 实例类型 |
---|---|---|---|---|---|---|
Bootstrap | 1 | RHCOS | 4 | 16 | 120 | m4.xlarge |
Master/Compute | 3 | RHCOS | 10 | 40 | 120 | m4.xlarge |
如果在内部模式下使用 ODF,则建议至少三个额外的 (starting) 节点。或者,上面概述的计算节点也可以运行 ⑂ ODF pod。在这种情况下,硬件规范需要相应地扩展。下表列出了每个额外节点的最低要求:
类型 | 数量 | 操作系统 | vCPU ⑃ | RAM (GB) | 存储(GB) | AWS 实例类型 |
---|---|---|---|---|---|---|
ODF starting (OSD+MON) | 3 | RHCOS | 10 | 24 | 120 + 2048 ♢ | m5.4xlarge |
3.1.1.4.最低生产环境硬件要求
最新验证的 SDI 和 OpenShift 4 的生产系统的 最低 生产要求如下:
类型 | 数量 | 操作系统 | vCPU ⑃ | RAM (GB) | 存储(GB) | AWS 实例类型 |
---|---|---|---|---|---|---|
Bootstrap | 1 | RHCOS | 4 | 16 | 120 | m4.xlarge |
Master | 3+ | RHCOS | 8 | 16 | 120 | c5.xlarge |
Compute | 3+ | RHCOS 或 RHEL 8.6, 8.7 或 8.8 | 16 | 64 | 120 | m4.4xlarge |
在三节点集群中,它类似如下:
类型 | 数量 | 操作系统 | vCPU ⑃ | RAM (GB) | 存储(GB) | AWS 实例类型 |
---|---|---|---|---|---|---|
Bootstrap | 1 | RHCOS | 4 | 16 | 120 | m4.xlarge |
Master/Compute | 3 | RHCOS | 22 | 72 | 120 | c5.9xlarge |
如果在内部模式下使用 ODF 4,则建议至少 3 个额外的 (starting) 节点。或者,上面概述的计算节点也可以运行 ODF ⑂ pod。在这种情况下,硬件规范需要相应地扩展。下表列出了每个额外节点的最低要求:
类型 | 数量 | 操作系统 | vCPU ⑃ | RAM (GB) | 存储(GB) | AWS 实例类型 |
---|---|---|---|---|---|---|
ODF starting (OSD+MON) | 3 | RHCOS | 20 | 49 | 120 + 6×2048 ♢ | c5a.8xlarge |
♢
请参阅 ODF 平台要求(4.12)。
⑂
从 ODF 4.8 开始,完全支持在 紧凑模式 下运行(在控制平面上)。
⑃
启用了超线程时,1 个物理核提供 2 个 vCPU。当未启用超线程时,一个物理核提供一个 vCPU。
3.2.软件要求
3.2.1.兼容性矩阵
SAP Data Intelligence 的后续版本支持较新的 Kubernetes 和 OpenShift Container Platform 或 OpenShift Kubernetes Engine 版本。即使未在 上面的 OpenShift 验证版本矩阵 中列出,以下版本组合也被视为完全可以正常工作并被支持:
SAP Data Intelligence | OpenShift Container Platform ² | Worker 节点 | 管理主机 | 基础设施 | 存储 | 对象存储 |
---|---|---|---|---|---|---|
3.3 | 4.14, 4.16 | RHCOS | RHEL 8.1 或更新版本 | Cloud ❄, VMware vSphere, Bare metal | ODF 4,NetApp Trident 20.04 或更新版本, vSphere volumes ♣, NFS ♣ | ODF ¡, NetApp StorageGRID 11.4 或更新版本 |
²
OpenShift Kubernetes Engine (OKE)是 OpenShift Container Platform (OCP)的可行的和支持的替代品。
❄
Cloud 表示 OpenShift Container Platform 支持的任何云供应商。对于经过测试和支持的基础设施平台的完整列表,请参阅 OpenShift Container Platform 4.x 已测试的集成。在这种情况下,云提供商必须提供持久性存储。如需支持的存储提供商的完整列表,请参阅 理解持久性存储(4.14)。
♣
此持久性存储提供商不提供 SDI 的检查点存储 所需的受支持的对象存储服务,因此仅适用于 SAP Data Intelligence 开发和 PoC 集群。它需要一个对象存储解决方案进行补充,来实现完整的 SDI 功能。
¡
对于完整的功能(包括 SDI 备份和恢复),需要 ODF 4.6.4 或更新版本。或者,在对 SDI 备份和恢复使用 RGW 时,可以使用 ODF 外部模式(检查点存储)。
除非另有说明,否则列出的 SDI 版本的兼容性还包括其所有补丁版本。
3.2.2.持久性卷
SDI 需要持久性存储。需要使用可以动态创建的存储。您可以在 理解持久性存储(4.14) 文档中找到更多信息。
3.2.3.容器镜像注册中心
SDI 安装需要一个安全的镜像注册中心,其中镜像首先从 SAP 注册中心镜像,然后传送到 OpenShift 集群节点。集成的 OpenShift 容器注册中心(4.14) 不 适合此目的。AWS ECR 注册中心也不适合。目前,需要建立另一个镜像注册中心。
此处列出的要求是 容器注册中心(3.3) 中列出的官方要求的子集。
此上下文中的 安全 一词表示通信使用 TLS 进行了加密。理想情况下,使用可信证书颁发机构签名的证书。如果注册中心也公开了,则需要身份验证和授权才能拉取 SAP 镜像。
3.2.3.1.已验证的注册中心
-
(推荐的) Red Hat Quay 3.6 或更高版本与 SAP Data Intelligence 镜像兼容,并支持此目的。Quay 注册中心可以在 OpenShift 集群本身上、另一个 OpenShift 集群上运行或独立运行。如需更多信息,请参阅 SAP DI 的 Quay 注册中心。
-
(已弃用的) SDI 注册中心是一个社区支持的容器镜像注册中心。其目前不被 SAP Data Intelligence Observer Operator 支持。您需要参阅 OpenShift Container Platform 4 上的 SAP Data Intelligence 3 来部署社区支持的容器镜像注册中心。
完成后,您应该有一个启动并运行的外部镜像注册中心。我们将使用 URL local.image.registry:5000
作为一个示例。您可以使用以下命令验证其是否准备就绪:
# curl -k https://local.image.registry:5000/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
3.2.4.检查点存储启用
要启用 SAP Vora 数据库流表,需要启用检查点存储。存储是存储在特定存储后端上的对象。SDI 安装程序支持多种后端类型,覆盖大部分存储云提供商。
对于生产环境集群,强烈建议启用。禁用此功能的集群仅适用于测试、开发或 PoC 用例。
确保在安装 SDI 之前创建所需的存储桶。如果检查点存储将驻留在存储桶上的一个目录中,则目录也需要存在。
3.2.5.SDI Observer Operator
它是一个监控 SAP Data Intelligence (SDI)命名空间的 operator,并修改其中在 OpenShift 上面启用 SDI 运行的对象。observer 应在专用的命名空间中运行。它必须在 SDI 安装启动前部署。SDI Observer Operator 部分将指导您完成部署的过程。
4.安装 Red Hat OpenShift Container Platform
4.1.准备管理主机
请注意,以下已在 RHEL 8.4 上进行了测试。这些步骤将与其他基于 RPM 的 Linux 发行版类似。推荐的是 RHEL 7.7+、Fedora 30+ 和 CentOS 7+。
4.1.1.准备连接的管理主机
- 至少订阅以下存储库的 管理主机 :
# OCP_RELEASE=4.14
# sudo subscription-manager repos \
--enable=rhel-8-for-x86_64-appstream-rpms \
--enable=rhel-8-for-x86_64-baseos-rpms \
--enable=rhocp-${OCP_RELEASE:-4.14}-for-rhel-8-x86_64-rpms
- 安装
jq
二进制文件。这个安装指南已使用 jq 1.6 进行了测试。
-
在 RHEL 8 中,确保启用了
rhocp-4.14-for-rhel-8-x86_64-rpms
存储库,并从那里安装它:# dnf install jq-1.6
-
在早期发行版本或其他发行版本上,从上游社区下载二进制文件:
# sudo curl -L -O /usr/local/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 # sudo chmod a+x /usr/local/bin/jq
- 下载并安装 OpenShift 客户端二进制文件。
# sudo dnf install -y openshift-clients
从本地 RPM 存储库安装 jq-1.6
和 openshift-clients
。
4.2.安装 OpenShift Container Platform
在所需集群主机上安装 OpenShift Container Platform。按照 OpenShift 安装指南(4.14) 进行操作。
下一节中将介绍它们。
4.3.安装后步骤
4.3.1.(可选) 安装 OpenShift Data Foundation
Red Hat OpenShift Data Foundation (ODF)已作为 SAP Data Intelligence 的持久性存储提供商进行了验证。请参阅 ODF 文档(4.12)。
如果您在断开连接的集群上安装,请确保阅读并遵循 断开连接的环境(4.12)。
4.3.2.(可选) 安装 NetApp Trident
NetApp Trident 和 StorageGRID 已针对 SAP Data Intelligence 和 OpenShift 进行了验证。如需更详细的信息,请参阅 带有 NetApp Trident 的OpenShift 4 上的 SAP Data Intelligence。
4.3.3.配置 SDI 计算节点
一些 SDI 组件需要对计算节点的 OS 级别进行更改。这会影响在同一集群上运行的其他工作负载。为防止这种情况发生,建议将一组节点专用于 SDI 工作负载。需要完成以下操作:
- 所选节点必须被标记,例如使用
node-role.kubernetes.io/sdi=""
标签。 - 需要创建特定于 SDI 的 MachineConfig,它们只应用于所选节点。SDI Observer Operator 可以被配置为执行此操作,如下一节中所述,将
manageSDINodeConfig
参数设置为 "true"。 - 必须创建 MachineConfigPool ,来将所选节点与新创建的 MachineConfig 关联。在此之前,不会对节点进行任何更改。SDI Observer Operator 可以被配置为执行此操作,如下一节中所述,将
manageSDINodeConfig
参数设置为 "true"。 - (可选) 将节点选择器应用到
sdi
、sap-slcbridge
和datahub-system
项目。SDI Observer Operator 可以被配置为执行此操作,如下一节中所述,使用SDINodeLabel
参数。
4.3.3.1.为 SAP Data Intelligence 标记计算节点
为 SDI 工作负载选择计算节点,并从 管理主机 中标记它们,如下所示:
# oc label node/sdi-worker{1,2,3} node-role.kubernetes.io/sdi=""
此步骤与 SDI Observer Operator 功能相结合,确保特定命名空间中与 SAP DI 相关的工作负载在标记的节点上运行。SDI Observer 向相关的 SAP DI 命名空间(如 openshift.io/node-selector: node-role.kubernetes.io/sdi=)添加节点选择器注解,它通常包括 SAP DI 命名空间、datahub-系统和 sap-slcbridge 命名空间。
4.4.安装 SDI Observer Operator
SDI Observer Operator 监控 SDI 和 SLC 网桥命名空间,并对 SDI 部署应用更改,以允许 SDI 在 OpenShift 上运行。另外,它还执行以下操作:
- 向
vsystem-vrep
StatefulSet 添加额外的持久性卷,以允许它在 RHCOS 系统上运行。 - 公开 SDI 系统管理服务。
- 公开 SLC 网桥服务。
- 为 SDI
vsystem-vrep
配置 NFS 导出。 - 为 SDI 诊断 pod 配置主机路径挂载。
- 在命名空间中配置节点选择器。
- 为 SDI 命名空间中的服务帐户添加角色和角色绑定。
它被部署为 OpenShift Community Operator。其行为由 SDIObserver 实例配置控制,可以在部署 Observer Operator 后创建。
有关当前尝试解决的问题的完整列表,请参阅 其文档。
您可以使用 Red Hat OpenShift Container Platform Operator Hub 安装 SAP Data Intelligence Observer Operator。
先决条件
- 使用具有 cluster-admin 和 operator 安装权限的账户访问 OpenShift Container Platform 集群。
4.4.1 安装 SDI Observer Operator
您可以从命令行或通过 OpenShift Web 控制台安装 SDI Observer Operator 和 SDIObserver 实例。两种方式在以下章节中进行了详细介绍。
4.4.1.1 使用命令行界面安装 SDI Observer Operator
流程
- 订阅 sdi-observer-operator ,来安装 Operator
cat <<EOF | oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
labels:
operators.coreos.com/sap-data-intelligence-observer-operator.openshift-operators: ""
name: sap-data-intelligence-observer-operator
namespace: openshift-operators
spec:
channel: stable
installPlanApproval: Automatic
name: sap-data-intelligence-observer-operator
source: community-operators
sourceNamespace: openshift-marketplace
EOF
- 创建 sdi-observer 命名空间
cat <<EOF | oc apply -f -
apiVersion: v1
kind: Namespace
metadata:
name: sdi-observer
spec: {}
EOF
- 创建 sdiObserver 实例
cat <<EOF | oc apply -f -
apiVersion: sdi.sap-redhat.io/v1alpha1
kind: SDIObserver
metadata:
name: sdiobserver-instance
namespace: sdi-observer
spec:
SDINodeLabel: node-role.kubernetes.io/sdi= # <-- Modify the node label if it's different than this one
manageSDINodeConfig: true
sdiNamespace: sdi # <-- Modify the namespace if SDI is not installed in "sdi" namespace
sdiVSystemRoute:
managementState: Managed
slcbNamespace: sap-slcbridge # <-- Modify the namespace if sap slc bridge is not installed in "sap-slcbridge" namespace
slcbRoute:
managementState: Managed
EOF
4.4.1.2 使用 OpenShift Web 控制台安装 SDI Observer Operator
流程
- 登录到
OpenShift Web Console
。 - 点 Operators → OperatorHub。
- 在 Filter by keyword 框中滚动或输入
SAP Data Intelligence 3 - Observer Operator
,来查找 SAP Data Intelligence Observer Operator。 - 点 Install。
- 在 Install Operator 页面上设置以下选项:
- 将渠道更新为 stable。
- 安装模式作为默认的 All namespaces on the cluster。
- 安装的命名空间作为默认的 Operator 推荐的命名空间 openshift-operators。
- 将 Approval Strategy 选为 Automatic 或 Manual。
- 如果选择 Automatic 更新,Operator Lifecycle Manager (OLM)将自动升级 Operator 的运行实例,而不进行任何干预。
- 如果选择 Manual 更新,则 OLM 会创建一个更新请求。作为集群管理员,您必须手动批准该更新请求,来将 Operator 更新至更新的版本。
- 确保为控制台插件选择了 Enable 选项。
- 单击 Install。
安装 SDI Observer Operator 后。我们可以使用 OpenShift Web 控制台创建 SDIObserver 实例:
流程
- 在 OpenShift Web 控制台中,点 Operators → Installed Operators ,查看所有已安装的 Operator。
确保所选的 Project 是您期望的 sdi observer 安装命名空间,如"sdi-observer" (在本例中,请确保事先使用 "oc new-project sdi-observer" 创建命名空间)。 - 点 SAP Data Intelligence 3 - Observer Operator,然后点 SDIObserver 的 Create instance 。
在 Create SDIObserver 页面中,执行以下操作:
- 选择 Form view。
- 为 SDIObserver 实例设置 Name,或使用默认值。
- 选择或取消选择 manageSDINodeConfig 的复选框。
- 设置 sdiNamespace ,来指定将在哪个命名空间上安装 SAP Data Intelligence。
- 单击 sdiVsystemRoute 来更改 SAP Data Intelligence vSystem 路由的 managementState。
- 设置 slcbNamespace ,来指定在哪个命名空间中安装 SLC 网桥。
- 单击 slcbRoute 来更改 SLC 网桥路由的 managementState。
- 为 SDI 节点标签设置 SDINodeLabel,或使用默认值
node-role.kubernetes.io/sdi=
。 - 从 Form view 通过 Configure via 切换到 YAML view,以验证字段是否被正确设置,特别是 metadata 部分下的 namespace。
- 点 Create。
验证步骤
要验证已安装的 SDIObserver 实例的最终状态:
- 在 OpenShift Web 控制台中,导航到 Installed Operators → SAP Data Intelligence 3 - Observer Operator → SDIObserver。
- 单击 SDIObservers。
- 验证 SDIObserver 实例是否被正确创建。
4.4.2.管理 SDIObserver 实例
您可以从 OpenShift Web 控制台更改和管理 SDIObserver 实例。
- 在 OpenShift Web 控制台中,点 Operators → Installed Operators ,查看所有已安装的 Operator。
确保所选的 Project 是您期望的 sdi observer 安装命名空间,如 "sdi-observer"。 - 点 SAP Data Intelligence 3 - Observer Operator,然后点 SDIObserver 选项卡来查找现有的 SDIObserver 实例。
- 单击现有的 SDIObserver instance,然后单击 YAML 选项卡,您可以相应地修改配置。
根据操作要求,spec.sdiVsystemroute.managementState
和spec.slcbRoute.managementState
可以设置为Managed
、Unmanaged
或Removed
。 - 在修改后,单击 Save。
4.4.2.1.监控 SDIObserver 日志并处理错误
- 要检查 SDIObserver pod 日志,请使用以下命令:
# oc logs -n openshift-operators $(kubectl get pods -n openshift-operators --no-headers -o custom-columns=":metadata.name" | grep '^observer-operator-controller-manager')
- 如果 observer-operator pod 遇到错误或卡在错误状态,请删除 pod ,以重启协调过程:
# oc delete pod -n openshift-operators $(kubectl get pods -n openshift-operators --no-headers -o custom-columns=":metadata.name" | grep '^observer-operator-controller-manager')
- 等待几分钟,然后重新检查日志以确认协调过程是否已成功完成。
4.4.3.(可选) 在控制平面上启用 SDI
如果控制平面(或主节点)应该用于运行 SDI 工作负载,除了上一步外,还需要执行以下操作:
- 请确保 控制平面是可调度的
- 为主节点复制机器配置:
# oc get -o json mc -l machineconfiguration.openshift.io/role=sdi | jq '.items[] |
select((.metadata.annotations//{}) |
has("machineconfiguration.openshift.io/generated-by-controller-version") | not) |
.metadata |= ( .name |= sub("^(?<i>(\\d+-)*)(worker-)?"; "\(.i)master-") |
.labels |= {"machineconfiguration.openshift.io/role": "master"} )' | oc apply -f -
请注意,如果之前已经完成了,您可能会看到一些警告 ∇。
- 使主机器配置池继承 PID 限制更改:
# oc label mcp/master workload=sapdataintelligence
以下命令可用于等待,直到更改应用到所有 worker 节点:
# oc wait mcp/master --all --for=condition=updated
4.4.4.验证节点配置
以下步骤假设 node-role.kubernetes.io/sdi=""
标签已应用到运行 SDI 工作负载的节点。所有命令将在 管理主机 上执行。所有诊断命令将在这样的节点上并行运行。
- 验证 PID 限制是否已增加到 16384:
# oc get nodes -l node-role.kubernetes.io/sdi= -o name | \
xargs -P 6 -n 1 -i oc debug $ocDebugArgs {} -- chroot /host /bin/bash -c \
"cat /etc/kubernetes/kubelet.conf" | jq '.podPidsLimit'
- 验证内核模块是否已载入:
# oc get nodes -l node-role.kubernetes.io/sdi= -o name | \
xargs -P 6 -n 1 -i oc debug {} -- chroot /host /bin/sh -c \
"lsmod | awk 'BEGIN {ORS=\":\t\"; print ENVIRON[\"HOSTNAME\"]; ORS=\",\"}
/^(nfs|ip_tables|iptable_nat|[^[:space:]]+(REDIRECT|owner|filter))/ {
print \$1
}'; echo" 2>/dev/null
输出示例类似如下:
sdi-worker2: iptable_filter,iptable_nat,xt_owner,xt_REDIRECT,nfsv4,nfs,nfsd,nfs_acl,ip_tables,
sdi-worker3: iptable_filter,iptable_nat,xt_owner,xt_REDIRECT,nfsv4,nfs,nfsd,nfs_acl,ip_tables,
sdi-worker1: iptable_filter,iptable_nat,xt_owner,xt_REDIRECT,nfsv4,nfs,nfsd,nfs_acl,ip_tables,
如果在任何 SDI 节点上缺少以下模块,则模块加载无法工作:iptable_nat
、nfsv4
、nfsd
ip_tables
。 xt_owner
要进一步调试缺少的模块,也可以执行以下命令:
# oc get nodes -l node-role.kubernetes.io/sdi= -o name | \
xargs -P 6 -n 1 -i oc debug {} -- chroot /host /bin/bash -c \
"( for service in {sdi-modules-load,systemd-modules-load}.service; do \
printf '%s:\t%s\n' \$service \$(systemctl is-active \$service); \
done; find /etc/modules-load.d -type f \
-regex '.*\(sap\|sdi\)[^/]+\.conf\$' -printf '%p\n';) | \
awk '{print ENVIRON[\"HOSTNAME\"]\":\t\"\$0}'" 2>/dev/null
请确保 systemd 服务都处于 active
状态,并为每个主机至少列出了一个 *.conf
文件,如下面示例输出中所示:
sdi-worker3: sdi-modules-load.service: active
sdi-worker3: systemd-modules-load.service: active
sdi-worker3: /etc/modules-load.d/sdi-dependencies.conf
sdi-worker1: sdi-modules-load.service: active
sdi-worker1: systemd-modules-load.service: active
sdi-worker1: /etc/modules-load.d/sdi-dependencies.conf
sdi-worker2: sdi-modules-load.service: active
sdi-worker2: systemd-modules-load.service: active
sdi-worker2: /etc/modules-load.d/sdi-dependencies.conf
4.4.5.部署持久性存储提供商
除非您的平台已提供了受支持的持久性存储提供商,否则需要部署一个。如需了解可能的选项的概述,请参阅 理解持久性存储(4.14)。
在 OpenShift 商,可以部署在 OpenShift 节点上聚合运行的 OpenShift Data Foundation (ODF) (4.14),从而提供持久性卷和对象存储。如需更多信息和安装说明,请参阅 ODF 规划您的部署(4.12) 和 部署 OpenShift Data Foundation (4.12)。
对于基于 NFS 的持久性存储,动态存储置备方法是前提条件。请参考以下文章以了解详细信息,"如何在 OpenShift 环境中为 NFS 动态存储调配创建存储类?" 。
4.4.6.配置 S3 访问和存储桶
SDI 的以下功能需要对象存储:
- 备份和恢复(之前的检查点存储)功能 提供 SDI 服务数据的常规备份
- 用于机器学习场景的 SDL 数据湖连接(3.3)
SDI 支持到对象存储的几个接口。S3 接口是其中之一。有关完整列表,请查看 所需的输入参数(3.3) 处的检查点存储类型。SAP 帮助页面 涵盖了对象存储的准备(3.3)。
只要 ODF 是 4.6.4 或更高版本,就可以对 ODF NooBaa 的 S3 端点启用备份和恢复,或者在外部模式下部署 ODF 时针对 RADOS Object Gateway S3 端点启用备份和恢复。
4.4.6.1.使用 NooBaa 或 RADOS 对象网关 S3 端点作为对象存储
ODF 包含一个 用于混合和多云环境的 NooBaa 对象数据服务 ,它提供了一个可以与 SAP Data Intelligence 一起使用的 S3 API。从 ODF 版本 4.6.4 开始,它也可用于 SDI 的备份和恢复功能。或者,可以针对 RADOS 对象网关 S3 端点(从现在开始,只是 RGW)启用功能,该功能在 外部模式(4.12) 下部署 ODF 时可用。
对于 SDI,需要提供以下内容:
- 带有
https://
或http://
前缀的 S3 主机 URL AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
- 存储桶名称
请注意 在 https://
的情况,端点必须由可信证书颁发机构签名的证书进行保护。到目前为止,自签名 CA 将无法开箱即用。
部署 ODF 后,可以使用以下方法之一创建访问密钥和存储桶:
- (仅限内部模式) 通过 NooBaa 管理控制台公开,默认在
noobaa-mgmt-openshift-storage.apps.
公开. - (内部和外部模式) 通过 CLI 使用
mksdibuckets
脚本
在这两种情况下,到目前为止,提供给 SAP Data Intelligence 的 S3 端点无法使用自签名证书进行保护。除非端点使用正确签名的证书进行了保护,否则必须使用不安全的 HTTP 连接。NooBaa 和 RGW 都有一个可从集群内部(在 SDN 内)访问的不安全服务,该服务无法从集群外部解析,除非 通过例如路由公开。
以下两个 URL 是部署了 ODF 的 OpenShift 集群上的端点示例。
http://s3.openshift-storage.svc.cluster.local
- NooBaa S3 端点始终可用http://rook-ceph-rgw-ocs-external-storagecluster-cephobjectstore.openshift-storage.svc.cluster.local:8080
- 当在外部模式下部署时 ODF 部署时,应该最好使用 RGW 端点
4.4.6.1.1.使用 CLI 创建 S3 存储桶
可以从 管理主机 执行以下命令来创建存储桶。在执行以下命令或向其附加参数 -n SDI_NAMESPACE
之前,请确保先切换到合适的项目或命名空间(例如 sdi
)。
- (创建存储桶)
# bash <(curl -s https://raw.githubusercontent.com/redhat-sap/sap-data-intelligence/master/utils/mksdibuckets)
- (列出存储桶)
# bash <(curl -s https://raw.githubusercontent.com/redhat-sap/sap-data-intelligence/master/utils/mksdibuckets) list
输出示例:
Bucket claim namespace/name: sdi/sdi-checkpoint-store (Status: Bound, Age: 7m33s)
Cluster internal URL: http://s3.openshift-storage.svc.cluster.local
Bucket name: sdi-checkpoint-store-ef4999e0-2d89-4900-9352-b1e1e7b361d9
AWS_ACCESS_KEY_ID: LQ7YciYTw8UlDLPi83MO
AWS_SECRET_ACCESS_KEY: 8QY8j1U4Ts3RO4rERXCHGWGIhjzr0SxtlXc2xbtE
Bucket claim namespace/name: sdi/sdi-data-lake (Status: Bound, Age: 7m33s)
Cluster internal URL: http://s3.openshift-storage.svc.cluster.local
Bucket name: sdi-data-lake-f86a7e6e-27fb-4656-98cf-298a572f74f3
AWS_ACCESS_KEY_ID: cOxfi4hQhGFW54WFqP3R
AWS_SECRET_ACCESS_KEY: rIlvpcZXnonJvjn6aAhBOT/Yr+F7wdJNeLDBh231
如需更多信息和选项,请使用 --help
运行命令。
上面的示例使用 ODF NooBaa 的 S3 端点,该端点一直是 ODF 内部模式的首选。
声明 sdi-checkpoint-store
的值应该在 SDI 的安装 过程中传递给以下 SLC 网桥参数,以便启用备份和恢复(以前称为检查点存储)功能。
参数 | 示例值 |
---|---|
对象存储类型 | S3 compatible object store |
访问密钥 | LQ7YciYTw8UlDLPi83MO |
Secret 密钥 | 8QY8j1U4Ts3RO4rERXCHGWGIhjzr0SxtlXc2xbtE |
端点 | http://s3.openshift-storage.svc.cluster.local |
路径 | sdi-checkpoint-store-ef4999e0-2d89-4900-9352-b1e1e7b361d9 |
禁用证书验证 | 是 |
4.4.6.1.2.增加对象存储桶限制
请注意,这只适用于 RGW (ODF 外部模式)
在 SDI 安装过程中执行检查点存储验证时,安装程序将创建一个临时存储桶。要使其与 RGW 一起工作,需要增加存储桶所有者对最大可分配存储桶的限制。限制默认被设为 1。
您可以使用以下命令对分配给备份和恢复的存储桶执行所需的更改(检查点存储)。请在外部 Red Hat Ceph Storage 集群的管理节点上执行(或在运行外部 RGW 服务的主机上)。最后一个参数是 "Bucket name",而不是 "Bucket claim name"。
# bash <(curl -s https://raw.githubusercontent.com/redhat-sap/sap-data-intelligence/master/utils/rgwtunebuckets) \
sdi-checkpoint-store-ef4999e0-2d89-4900-9352-b1e1e7b361d9
如需更多信息和附加选项,请在末尾附加 --help
参数。
4.4.7.设置容器镜像注册中心
如果您还没有这样做,请按照 容器镜像注册中心先决条件 操作。
请注意,现在需要对 SDI 使用 TLS 保护的注册中心。普通 HTTP
将不会这样做。
如果注册中心是由正确的可信(不是自签名)证书签名的,则这可以跳过。
有两种方式使 OpenShift 使用自签名证书颁发机构签名的证书信任其它注册中心:
- (推荐) 在 OpenShift 的镜像配置中更新 CA 证书信任
- (不太安全) 将注册中心标记为不安全
4.4.8.为 SDI 配置 OpenShift 集群
4.4.8.1.成为 cluster-admin
以下的许多命令都需要 集群 admin 特权。要成为 cluster-admin,您可以执行以下操作之一:
- 使用安装 OpenShift 集群过程中在工作目录中生成的
auth/kubeconfig
:
INFO Install complete!
INFO Run 'export KUBECONFIG=<your working directory>/auth/kubeconfig' to manage the cluster with 'oc', the OpenShift CLI.
INFO The cluster is ready when 'oc login -u kubeadmin -p <provided>' succeeds (wait a few minutes).
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.demo1.openshift4-beta-abcorp.com
INFO Login to the console with user: kubeadmin, password: <provided>
# export KUBECONFIG=working_directory/auth/kubeconfig
# oc whoami
system:admin
- 以
system:admin
用户或cluster-admin
组的成员身份,使另一个用户成为集群 admin,以允许他执行 SDI 安装:
- 以 cluster-admin 用户身份,配置身份验证(4.14) ,并添加所需的用户(例如
sdiadmin
)。 - 以 cluster-admin 的身份,授予用户管理集群的权限:
# oc adm policy add-cluster-role-to-user cluster-admin sdiadmin
您可以在 集群角色和本地角色文章(4.14) 中了解更多有关 cluster-admin 角色的信息。
5.在 OpenShift 上安装 SDI
5.1.安装软件生命周期容器网桥
请按照指南 使用 SLC 网桥安装 SAP Data Intelligence(3.3) 操作。
5.1.1.重要参数
参数 | 条件 | 描述 |
---|---|---|
Mode | 总是 | 确保选择 Expert 模式。 |
Address of the Container Image Repository | 总是 | 容器镜像注册中心的 URL。 |
Image registry username | if … ‡ | 请参阅注册中心配置。 |
Image registry password | if … ‡ | 请参阅注册中心配置。 |
Namespace of the SLC Bridge | 总是 | 如果您覆盖了默认(sap-slcbridge ),请确保使用相应的 SLCB 命名空间参数 部署 SDIObserver 实例。 |
Service Type | SLC 网桥基础安装 | 在 vSphere 上,确保使用 NodePort 。在 AWS 上,请使用 LoadBalancer 。 |
Cluster No Proxy | 与 HTTPS Proxy 值一同使用时需要 | 确保根据 为 SLC 网桥配置 HTTP 代理 部分进行此操作。 |
‡
如果注册中心需要身份验证,Red Hat Quay 会做。
如需了解更多详细信息,请参阅 配置集群范围代理(4.14)。
在 NAT 内部集群上,为了访问 slcbridgebase-service
NodePort
服务,需要有对一个 SDI 计算节点的直接访问,或者修改外部负载均衡器,来向服务添加一个额外的路由。
5.1.2.安装 SLC 网桥
请根据 使 SLC 网桥基础在 Kubernetes (3.3)上可用 来安装 SLC 网桥,同时注意对 安装参数 的备注。
5.1.2.1.使用 OpenShift 入口控制器公开 SLC 网桥
对于 SLC 网桥,唯一可能的 TLS 终止类型是 passthrough
,除非 入口控制器被配置为使用全局信任的证书。
建议让 SDI Observer Operator 管理路由创建和更新。如果 SDI Observer 实例已使用 spec.sdislcbRoute.managementState: Managed
部署了,则可以跳过本节。
过一会儿,网桥将在 https://sap-slcbridge-sap-slcbridge.apps.
处可用。您可以等待路由的可用性,如下所示:
# oc get route -w -n "${SLCB_NAMESPACE:-sap-slcbridge}"
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
sap-slcbridge <ROUTE_NAME>-<SLCB_NAMESPACE>.apps.<cluster_name>.<base_domain> slcbridgebase-service <all> passthrough/Redirect None
5.1.2.1.1.使用入口手动公开 SLC 网桥
或者,您可以使用这种方法手动公开 SLC 网桥。
- 查找
slcbridgebase-service
服务:
# oc project "${SLCB_NAMESPACE:-sap-slcbridge}" # switch to the Software Lifecycle Bridge project
# oc get services | grep 'NAME\|slcbridge'
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
slcbridgebase-service NodePort 172.30.206.105 <none> 32455:31477/TCP 14d
- 为服务创建路由:
# oc create route passthrough sap-slcbridge --service=slcbridgebase-service \
--insecure-policy=Redirect --dry-run=client -o json | \
oc annotate --local -f - haproxy.router.openshift.io/timeout=10m -o json | oc apply -f -
您还可以使用 --hostname
参数设置所需的主机名。确保它解析为路由器的 IP。
- 获取生成的主机名:
# oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
vsystem vsystem-<SDI_NAMESPACE>.apps.<cluster_name>.<base_domain> vsystem vsystem passthrough/Redirect None
-
确保配置外部负载均衡器,来将这个特定主机名的 WebSocket 连接的超时时间至少增加 10 分钟。例如,在 HAProxy 中,它将是
timeout tunnel 10m
。 -
访问
https://vsystem-
处的系统管理服务来进行验证。.apps. .
5.1.2.2.使用外部负载均衡器访问 SLC 网桥的 NodePort
请注意,这只在"Service Type"被设置为"NodePort"时才适用。
部署 SLC 网桥后,就应该确定其 NodePort
,以便将负载平衡器指向它。
# oc get svc -n "${SLCB_NAMESPACE:-sap-slcbridge}" slcbridgebase-service -o jsonpath='{.spec.ports[0].nodePort}{"\n"}'
31875
负载平衡器应指向运行 SDI 工作负载的所有计算节点。以下是 HAProxy 负载均衡器的一个示例:
# # in the example, the <cluster_name> is "boston" and <base_domain> is "ocp.vslen"
# cat /etc/haproxy/haproxy.cfg
....
frontend slcb
bind *:9000
mode tcp
option tcplog
# # commented blocks are useful for multiple OpenShift clusters or multiple SLC Bridge services
#tcp-request inspect-delay 5s
#tcp-request content accept if { req_ssl_hello_type 1 }
use_backend boston-slcb #if { req_ssl_sni -m end -i boston.ocp.vslen }
#use_backend raleigh-slcb #if { req_ssl_sni -m end -i raleigh.ocp.vslen }
backend boston-slcb
balance source
mode tcp
server sdi-worker1 sdi-worker1.boston.ocp.vslen:31875 check
server sdi-worker2 sdi-worker2.boston.ocp.vslen:31875 check
server sdi-worker3 sdi-worker3.boston.ocp.vslen:31875 check
backend raleigh-slcb
....
然后就可以在 URL https://boston.ocp.vslen:9000/docs/index.html
访问 SLC 网桥,只要 boston.ocp.vslen
被正确地解析为负载均衡器的 IP,。
5.2.SDI 安装参数
请按照有关配置 SDI 的 SAP 的指南操作,同时注意以下额外的注释:
名称 | 条件 | 建议 |
---|---|---|
Kubernetes 命名空间 | 总是 | 必须与 项目设置(例如 sdi )中选择的项目名称匹配。 |
安装类型 | 安装或更新 | 如果您需要指定您要选择一个特定的存储类,或者没有设置 默认的存储类(4.14) / (4.10) ,或者您要在同一集群上部署多个 SDI 实例,请选择 Advanced Installation 。 |
容器镜像存储库 | 安装 | 必须设置为 容器镜像注册中心。 |
集群代理设置 | 高级安装或更新 | 如果必须使用本地 HTTP (S)代理访问外部 Web 资源,请选择 yes。 |
Cluster No Proxy | 当 Cluster Proxy Settings 已配置时。 |
请参阅 HTTP 代理配置。 |
备份配置 | 从没有启用备份的系统安装或升级 | 对于生产环境,请选择 yes。⁴ |
检查点存储配置 | 安装 | 建议用于生产环境部署。如果启用了备份,则其默认被启用。 |
检查点存储类型 | 如果启用了 Checkpoint Store Configuration 参数。 | 如果例如使用了 ODF 或 NetApp StorageGRID 作为对象存储,则设置为 S3 兼容对象存储。如需了解更多详细信息,请参阅 使用 NooBaa 作为对象存储网关 或 NetApp StorageGRID。 |
禁用证书验证 | 如果启用了 Checkpoint Store Configuration 参数。 | 如果对您的使用自签名 CA 证书保护的对象存储端点使用 HTTPS ,请选择 yes。对于 ODF NooBaa,您可以将其设置为 no。 |
检查点存储验证 | 安装 | 请确保在安装过程中验证连接。否则,如果提供了不正确的值,安装将在稍后失败。 |
Pipeline Modeler 的容器注册中心设置 | 高级安装 | 如果将同一注册中心用于多个 SAP Data Intelligence 实例,则应进行更改。另一个 或不同的
或两者都将更改。 |
StorageClass 配置 | 高级安装 | 如果要为不同的 SDI 组件选择不同的动态存储置备程序,或者没有设置 默认的存储类(4.14) / (4.10),或者您想要为 SDI 组件选择一个非默认存储类,请配置此项。 |
默认的 StorageClass | 高级安装,并且如果存储类已配置了 | 如果没有设置 默认的存储类(4.14) / (4.10),或者您想为 SDI 组件选择非默认存储类,请设置此项。 |
启用 Kaniko 使用率 | 高级安装 | 必须在 OpenShift 4 上启用。 |
SAP Data Intelligence Modeler 的容器镜像存储库设置 | 高级安装或升级 | 如果将同一注册中心用于多个 SDI 实例,请选择 "yes"。 |
Pipeline Modeler 的容器注册中心 | 高级安装,且如果上一选择中选择了"Use different one"选项。 | 如果将同一注册中心用于多个 SDI 实例,则需要使用不同的前缀(如 local.image.registry:5000/mymodelerprefix2 )或不同的注册中心。 |
加载 NFS 模块 | 高级安装 | 请随意说"no"。只要配置了 所需内核模块的加载 ,就不再是一个问题。 |
其他安装程序参数 | 高级安装 | 请包含 -e vsystem.vRep.exportsMask=true 。或者 ff 被省略,且 SDIObserver 被相应地配置,它将代表您应用此参数。 |
⁴
注意,验证的 S3 API 端点提供商是 ODF 的 NooBaa 4.6.4 或更新版本,外部模式下的 ODF 4.6 和 NetApp StorageGRID。5.3.安装 SDI
请按照 在具有互联网访问(3.3)的集群中安装具有 SLC 网桥的 SAP Data Intelligence(3.3) 的官方流程操作。
5.4.安装后步骤
5.4.1.(可选) 在外部公开 SDI 服务
有多种使 SDI 服务在集群外可访问的可能性。与 Kubernetes 相比,OpenShift 提供了额外的方法,推荐用于大多数场景,包括 SDI 系统管理服务。它基于 OpenShift Ingress Operator (4.14)。
对于 SAP Vora Transaction Coordinator 和 SAP HANA Wire,请使用 适用于您环境的官方推荐方法(3.3)。
5.4.1.1.使用 OpenShift Ingress Operator
请注意 不是使用此手动方法,现在建议让 SDI Observer Operator 管理路由创建或更新。如果 SDI Observer 实例已使用 spec.sdiVSystemRoute.managementState: Managed
创建了,则可以跳过本节。
或者请继续手动创建路由。
OpenShift 允许您通过 入口控制器(4.14) 访问 Data Intelligence 服务,而不是常规的 NodePort (4.14)。例如,不是通过 https://worker-node.example.com:32322
访问 vsystem 服务,而是在服务公开后,能够在 https://vsystem-sdi.apps.
访问它。这是 在内部公开服务(3.3) 的官方指南文档的替代方案。
有两种 TLS 保护的路由。一种是 reencrypt
,允许使用自定义签名或自签名证书。另一种是 passthrough
,它使用由安装程序生成的预安装证书或传递给安装程序。
5.4.1.1.1.使用重新加密的路由导出服务
有了这种路由,在路由的客户端和服务器端使用不同的证书。路由器在中间,使用对应于另一端的证书对来自任何一方的通信进行重新加密。在这种情况下,客户端由提供的证书保护,服务侧使用生成的原始证书进行加密,或传给 SAP Data Intelligence 安装程序。这是自动创建的同一类路由 SDI Observer。
重新加密路由允许使用正确签名的证书保护客户端连接。
- 查找
vsystem
服务:
# oc project "${SDI_NAMESPACE:-sdi}" # switch to the Data Intelligence project
# oc get services | grep "vsystem "
vsystem ClusterIP 172.30.227.186 <none> 8797/TCP 19h
导出时,生成的主机名将类似如下 vsystem-${SDI_NAMESPACE}.apps.
。但是,可以选择任意的主机名,只要它可以正确解析到路由器的 IP。
- 得到、生成或使用路由的默认证书。在本例中,路由器使用的默认的自签名证书用来保护客户端和 OpenShift 路由器之间的连接。客户端的 CA 证书可以从
router-ca
命名空间中的openshift-ingress-operator
secret 获取:
# oc get secret -n openshift-ingress-operator -o json router-ca | \
jq -r '.data as $d | $d | keys[] | select(test("\\.crt$")) | $d[.] | @base64d' >router-ca.crt
- 获取 SDI 安装时生成的 SDI 的根证书颁发机构捆绑包。生成的捆绑包在
sdi
命名空间中的ca-bundle.pem
secret 中提供。
# oc get -n "${SDI_NAMESPACE:-sdi}" -o go-template='{{index .data "ca-bundle.pem"}}' \
secret/ca-bundle.pem | base64 -d >sdi-service-ca-bundle.pem
- 为 vsystem 服务创建重新加密的路由,如下所示:
# oc create route reencrypt -n "${SDI_NAMESPACE:-sdi}" --dry-run -o json \
--dest-ca-cert=sdi-service-ca-bundle.pem --service vsystem \
--insecure-policy=Redirect | \
oc annotate --local -o json -f - haproxy.router.openshift.io/timeout=2m | \
oc apply -f -
# oc get route
NAME HOST/PORT SERVICES PORT TERMINATION WILDCARD
vsystem vsystem-<SDI_NAMESPACE>.apps.<cluster_name>.<base_domain> vsystem vsystem reencrypt/Redirect None
- 验证连接:
# # use the HOST/PORT value obtained from the previous command instead
# curl --cacert router-ca.crt https://vsystem-<SDI_NAMESPACE>.apps.<cluster_name>.<base_domain>/
5.4.1.1.2.使用 passthrough 路由导出服务
有了 passthrough
路由,到客户端的通信都是由 SDI 服务的证书加密的。
请注意,如果可能的话,首选 reencrypt
路由,因为客户端无法验证 vsystem 证书的主机名,如以下输出中所示:
# oc get -n "${SDI_NAMESPACE:-sdi}" -o go-template='{{index .data "ca-bundle.pem"}}' \
secret/ca-bundle.pem | base64 -d >sdi-service-ca-bundle.pem
# openssl x509 -noout -subject -in sdi-service-ca-bundle.pem
subject=C = DE, ST = BW, L = Walldorf, O = SAP, OU = Data Hub, CN = SAPDataHub
- 查找
vsystem
服务:
# oc project "${SDI_NAMESPACE:-sdi}" # switch to the Data Intelligence project
# oc get services | grep "vsystem "
vsystem ClusterIP 172.30.227.186 <none> 8797/TCP 19h
- 创建路由:
# oc create route passthrough --service=vsystem --insecure-policy=Redirect
# oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
vsystem vsystem-<SDI_NAMESPACE>.apps.<cluster_name>.<base_domain> vsystem vsystem passthrough/Redirect None
您可以使用 --hostname
参数修改主机名。确保它解析为路由器的 IP。
- 访问
https://vsystem-
处的系统管理服务来进行验证。.apps. .
5.4.1.2.使用 NodePort
请注意,对于 OpenShift,首选使用 路由,虽然只适用于系统管理服务(也称为 vsystem
)。
公开 SAP Data Intelligence vsystem
- 使用一个自动生成的 NodePort:
# oc expose service vsystem --type NodePort --name=vsystem-nodeport --generator=service/v2
# oc get -o jsonpath='{.spec.ports[0].nodePort}{"\n"}' services vsystem-nodeport
30617
- 或使用特定的 NodePort(例如 32123):
# oc expose service vsystem --type NodePort --name=vsystem-nodeport --generator=service/v2 --dry-run -o yaml | \
oc patch -p '{"spec":{"ports":[{"port":8797, "nodePort": 32123}]}}' --local -f - -o yaml | oc apply -f -
原始服务仍像以前一样在 ClusterIP:Port
上可访问。另外,它现在可以在 NodePort 下从集群外访问。
[仅适用于 SDI 3.2 ] 公开 SAP Vora Transaction Coordinator 和 HANA Wire
# oc expose service vora-tx-coordinator-ext --type NodePort --name=vora-tx-coordinator-nodeport --generator=service/v2
# oc get -o jsonpath='tx-coordinator:{"\t"}{.spec.ports[0].nodePort}{"\n"}hana-wire:{"\t"}{.spec.ports[1].nodePort}{"\n"}' \
services vora-tx-coordinator-nodeport
tx-coordinator: 32445
hana-wire: 32192
输出显示了为新公开的服务生成的 NodePort。
5.4.2.配置到数据湖的连接
请按照 配置到 DI_DATA_LAKE
的连接(3.3) 处的官方安装后说明操作。
如果 ODF 用作后备对象存储提供者,请确保使用 HTTP 服务端点,如 将 NooBaa 或 RADOS 对象网关 S3 端点用作对象存储 中所述。
根据该部分中的示例输出,配置可能类似如下:
参数 | 值 |
---|---|
Connection Type | SDL |
id | DI_DATA_LAKE |
Object Storage Type | S3 |
Endpoint | http://s3.openshift-storage.svc.cluster.local |
Access Key ID | cOxfi4hQhGFW54WFqP3R |
Secret Access Key | rIlvpcZXnonJvjn6aAhBOT/Yr+F7wdJNeLDBh231 |
Root Path | sdi-data-lake-f86a7e6e-27fb-4656-98cf-298a572f74f3 |
5.4.3.验证 SDI
在 OpenShift 上验证 SDI 安装,以确保一切都按预期工作。请按照 测试您的安装(3.3) 中的说明进行操作。
5.4.3.1.登录到 SAP Data Intelligence launchpad
如果 vsystem
服务已使用 路由 公开了,则可以确定 URL 类似如下:
# oc get route -n "${SDI_NAMESPACE:-sdi}"
NAME HOST/PORT SERVICES PORT TERMINATION WILDCARD
vsystem vsystem-<SDI_NAMESPACE>.apps.<cluster_name>.<base_domain> vsystem vsystem reencrypt None
HOST/PORT
值需要有 https://
前缀,例如:
https://vsystem-sdi.apps.boston.ocp.vslen
5.4.3.2.检查机器学习设置
要使用 ML Data Manager 上传培训和测试数据集,需要为用户分配 app.datahub-app-data.fullAcces
(从 3.2 开始)或 sap.dh.metadata
(最高到 3.1)策略。请确保遵循 使用 SAP Data Intelligence 策略管理(3.3) 将策略分配给需要它们的用户。
5.4.4.配置其他租户
当创建新租户(例如,使用 管理集群指令(3.3))时,没有配置为与容器镜像注册中心一起工作。因此,Pipeline Modeler 不可用,并将无法启动,直到被配置了为止。
对于每个新租户,都需要执行几个步骤:
- 如果 CA 证书是自签名的,则通过 SDI Connection Manager 为注册中心导入 CA 证书
- 只要使用了 modeler 的不同的注册中心,拉取 secret 需要导入到 SDI_NAMESPACE 中
- 使用 SDI 系统管理创建和导入凭证 secret,并在容器镜像注册中心需要身份验证时更新 modeler secret
如果使用 Red Hat Quay,请按照 配置额外的 SDI 租户 操作。请确保根据您的注册中心配置,执行以下文章中的官方说明:
- 为密码保护的容器注册中心提供访问凭证(3.3)(只要您的用于 Pipeline Modeler 的注册中心使用带有自签名 CA 的 TLS。
- (3.3) (只要您的注册中心需要身份验证)。
6.升级 OpenShift Container Platform
本节作为执行 OpenShift 升级至同一次版本的最新异步发行版本 ⁿ 或升级到运行的 SDI 实例支持的较新的次版本,而无需升级 SDI 本身的指南很有用。
6.1.预升级流程
- 熟悉 (4.13 ⇒ 4.14)。
- 计划 SDI 停机时间。
- 确保 重新配置 SDI 计算节点。
6.1.1.停止 SAP Data Intelligence
为了加快集群升级和/或确保 SDI 的一致性,可以在执行升级前停止 SDI。
流程在 官方管理指南(3.3) 中进行了概述。简而言之,命令是:
# oc -n "${SDI_NAMESPACE}" patch datahub default --type='json' -p '[
{"op":"replace","path":"/spec/runLevel","value":"Stopped"}]'
6.2.升级 OpenShift
以下说明概述了 OpenShift 升级到比当前版本高的次版本 2 的过程。如果只需要升级到同一次版本的最新异步版本ⁿ,请跳过第 5 和第 6 步。
- 将 OpenShift 升级到一个更高的次版本或最新的异步发行版本(⇒ 4.14)。
- 如果您已部署了 OpenShift Data Foundation,请根据 互操作性指南 将 ODF 更新至当前 OpenShift 版本的最新支持的版本。
- 更新 管理主机 上的 OpenShift 客户端工具,以匹配目标 ※ OpenShift 发行版本。在 RHEL 8 上,可以执行如下操作:
# current=4.10; new=4.14
# sudo subscription-manager repos \
--disable=rhocp-${current}-for-rhel-8-x86_64-rpms --enable=rhocp-${new}-for-rhel-8-x86_64-rpms
# sudo dnf update -y openshift-clients
- 将 OpenShift 升级到一个更高的次版本或最新的异步版本(⇒ 4.14) ⁿ。
- 如果您已部署了 OpenShift Data Foundation,请根据 互操作性指南 将 ODF 更新至当前 OpenShift 版本的最新支持的版本。
※
对于初始 OpenShift 版本4.X
,目标发行版本为 4.(X+2)
;如果只执行最新的异步发行版本 ⁿ 升级,目标发行版本为 4.X
6.3.升级后流程
- 启动 SAP Data Intelligence,如 官方管理指南(3.3) 中所述。简而言之,命令是:
# oc -n "${SDI_NAMESPACE}" patch datahub default --type='json' -p '[
{"op":"replace","path":"/spec/runLevel","value":"Started"}]'
7.升级或更新 SAP Data Intelligence
请注意,本节涵盖了将 SAP Data Intelligence 升级到较新的次版本、微版本或补丁版本的内容。只与前者或后者相关的部分将使用以下注解进行注解:
- (升级) 表示一个特定于从 Data Intelligence 升级到较新的次版本的部分(
3.X ⇒ 3.(X+1)
) - (更新) 表示一个特定于从 Data Intelligence 更新至较新的微/补丁发行版本的部分(
3.X.Y ⇒ 3.X.(Y+1)
) - 无注释是与两者相关的部分
必须以给定的顺序执行以下步骤:除非需要 OpenShift 升级,否则可以跳过标记为 (ocp-upgrade) 的步骤。
7.1.预升级或预更新流程
- 确保熟悉 (3.2 ⇒ 3.3)。
- (ocp-upgrade) 熟悉 (4.13 ⇒ 4.14)。
- 计划一些停机时间。
- 确保 重新配置 SDI 计算节点。
7.1.1.执行 SDI 的预升级流程
请按照 (3.2 ⇒ 3.3) 操作。
7.1.1.1.自动路由删除
SDI Observer Operator 现在允许创建或更新 vsystem 路由,以供外部访问。它负责在 SDI 更新过程中更新路由的目的地证书。它也可以指示其保持已删除的路由,这在 SDI 更新过程中很有用。您可以指示 SDI Observer Operator 删除路由,如下所示:
- 在 OpenShift Web 控制台中,点 Operators → Installed Operators ,来查看所有已安装的 Operator。确保所选的 项目 是您预期的 sdi observer 安装命名空间,如 "sdi-observer"。
- 点 SAP Data Intelligence 3 - Observer Operator,然后点 SDIObserver 选项卡来查找现有的 SDIObserver 实例。
- 单击现有的 SDIObserver 实例,然后单击 YAML 选项卡,然后相应地修改配置。
- 将
spec.sdiVsystemroute.managementState
设置为Removed
。 - 在修改后,单击 Save。
7.1.1.2. 手动路由删除
如果使用路由公开 vsystem 服务,请删除路由:
# # note the hostname in the output of the following command
# oc get route -n "${SDI_NAMESPACE:-sdi}"
# # delete the route
# oc delete route -n "${SDI_NAMESPACE:-sdi}" --all
7.2.更新或升级 SDI
7.2.1.更新软件生命周期容器网桥
在更新 SLC 网桥之前,请考虑 通过入口控制器公开它。
如果您决定继续使用外部负载均衡器负载均衡的 NodePort 服务,请确保记下当前的服务 NodePort:
# oc get -o jsonpath='{.spec.ports[0].nodePort}{"\n"}' -n sap-slcbridge \
svc/slcbridgebase-service
31555
请按照 官方文档(3.3) 获取二进制文件,并在 OpenShift 集群上更新其资源。
如果通过入口控制器公开了,您可以跳过下一步。否则,将 nodePort 重置为之前的值,以便不需要在负载均衡器端进行更改。
# nodePort=31555 # change your value to the desired one
# oc patch --type=json -n sap-slcbridge svc/slcbridgebase-service -p '[{
"op":"add", "path":"/spec/ports/0/nodePort","value":'"$nodePort"'}]'
7.2.2.将 SAP Data Intelligence 升级到更新的次版本
根据 官方说明(DH 3.2 ⇒ 3.3) 执行 SDI 升级。
7.3.升级 OpenShift
根据目标 SDI 发行版本,OpenShift 集群必须升级到较新的次版本,或升级到当前次版本的最新异步发行版本 ⁿ。
已升级的/当前的 SDI 发行版本 | 所需的和已验证的 OpenShift 发行版本 |
---|---|
3.3 | 4.14 |
3.3 | 4.12 |
如果当前的 OpenShift 发行版本是所需的版本之后的两个或多个版本,则必须将 OpenShift 集群迭代升级到每个连续的次版本,直到达到所需的版本为止。
- (可选) 停止 SAP Data Intelligence,因为它将加快集群更新,并确保 SDI 的一致性。
-
确保遵循您升级路径的官方升级说明:
-
当在 OpenShift 4.13 上时,请确保将
spec.sdiVsystemroute.managementState
设置为Removed
,直到 SDI 更新完成为止。 -
(可选) 如果已到达所需的 OpenShift 版本,请再次 启动 SAP Data Intelligence。
- 在 管理主机 上升级 OpenShift 客户端工具。以下示例可用于 RHEL 8:
# current=4.10; new=4.14
# sudo subscription-manager repos \
--disable=rhocp-${current}-for-rhel-8-x86_64-rpms --enable=rhocp-${new}-for-rhel-8-x86_64-rpms
# sudo dnf update -y openshift-clients
7.4.SAP Data Intelligence 升级后流程
-
执行 SDH 的升级后流程(3.3)。
-
使用以下方法之一为 vsystem 服务重新创建路由:
- (推荐) 指示 SDI Observer Operator 管理路由:
# oc set env -n "${NAMESPACE:-sdi-observer}" dc/sdi-observer MANAGE_VSYSTEM_ROUTE=true
# # wait for the observer to get re-deployed
# oc rollout status -n "${NAMESPACE:-sdi-observer}" -w dc/sdi-observer
- 按照 对外公开 SDI 服务,来手动从头开始重新创建路由。
7.5.验证 SAP Data Intelligence
在 OpenShift 上验证 SDI 安装,以确保一切都按预期工作。请按照 测试您的安装(3.3) 中的说明进行操作。
8.附录
8.1.卸载 SDI
请按照有关 使用 SLC 网桥卸载 SAP Data Intelligence(3.3) 的 SAP 文档进行操作。
另外,还要确保删除 sdi
项目和 datahub-system
:
# oc delete project sdi
然后删除 datahub-system
项目:
# oc delete project datahub-system
另外,还可删除 SDIObserver 实例:
# oc delete SDIObserver sdiobserver-sample -n sdi-observer
完成后,您可以继续在同一或者另一个命名空间中进行 新一轮安装。
8.2.用于 SDI 的 Quay 注册中心
Red Hat Quay 注册中心已经过验证,来托管 SAP Data Intelligence 镜像。Quay 注册中心可以与 SDI 一起在 OpenShift 集群上直接运行,也可以在另一个 OpenShift 集群上或独立运行。
请注意,Red Hat Quay 3.6 或更新版本与 SDI 镜像兼容。
根据文档部署 Red Hat Quay 后,请确保 配置 OpenShift 集群,以信任注册中心。
8.2.1.Quay 命名空间、用户和帐户准备
-
创建一个新机构。在这个示例中,我们将机构称为
sdi
。- 此机构将托管 SLC 网桥、SAP DI 和 SAP DI operator 所需的所有镜像。
-
以 Quay Superadmin 用户身份,创建一个新用户 (如
sdi_slcb
)。请记录凭证。用户将被 SLC 网桥和 OpenShift(而不是由人类)用作机器人帐户。目前,无法使用常规的 Quay 机器人帐户,因为机器人帐户无法在推送时创建存储库。 -
通过将用户添加到"Teams and Membership"窗格中的
owner's
团队或通过在sdi
机构中 创建一个新团队,例如,具有 分配了团队角色Creator
的pushers
,并将sdi_slcb
用户添加为成员 ,来向sdi_slcb
用户授予至少对sdi
机构的Creator
访问权限。 -
(可选)作为 Superadmin,为 pipeline modeler 创建另一个用户(例如
sdi_default_modeler
,其中default
代表默认租户)。- 每个租户的 pipeline modeler 具有单独的注册中心命名空间和用户的优点如下:
- 可以根据每个租户轻松地修剪镜像。SDI 租户不再需要后,可以删除相应的 Quay 用户,其镜像将自动从注册中心中修剪,并恢复空间。
- 改进了安全性。SDI 租户用户无法访问其他 SDI 租户的镜像。
- 此用户将再次用作机器人帐户,类似于
sdi_slcb
。 - 对于用户的电子邮件地址,只要其在所有 Quay 用户中是唯一的,任何虚假地址都可以。
- 用户的名称也是镜像推送到和从中拉取的命名空间。
- 确保记下凭据。
- 用户必须能够从
sdi
机构拉取。
- 每个租户的 pipeline modeler 具有单独的注册中心命名空间和用户的优点如下:
要让用户能够从 sdi
机构拉取,请确保也执行以下操作。
- 作为
sdi
机构的所有者,前往其"Teams and Membership"窗格,并 创建一个新的团队(例如pullers
),具有Member
团队角色。 - 点击 "Set permissions for pullers" 并确保团队可以读取
sdi
机构中已存在的所有存储库。 - 点
puller
团队,搜索sdi_default_modeler
用户,并 将其添加到团队中。 -
返回到
sdi
机构的Default Permissions
,点 "Create Default Permission",并将 "Read" 权限添加到puller
团队,以用于Anyone
创建的存储库。 -
(可选)为您要创建的任何其他 SDI 租户重复上一步。
8.2.2.确定镜像存储库
镜像存储库 输入参数 由
组成。
- OpenShift 集群上运行的 Quay 的注册中心
可以在 管理主机 上决定,如下所示:
# oc get route --all-namespaces -o jsonpath='{range .items[*]}{.spec.host}{"\n"}{end}' \
-l quay-component=quay-app-route
输出示例如下:
quay.apps.cluster.example.com
如果您的本地 Quay 注册中心在 OpenShift 集群外运行,则需要通过其他方法确定其主机名。
是机构名称或用户名。对于sdi
机构,
是sdi
。
在本例中,生成的镜像存储库参数将是 quay.apps.cluster.example.com/sdi
。
8.2.3.将 Quay 的 CA 证书导入到 OpenShift
如果还没有完成,请确保使 OpenShift 集群信任 Quay 注册中心。
- 如果 Quay 注册中心在 OpenShift 集群上运行,则获取 secret 的
router-ca.crt
,如 SDI 注册中心验证部分 中所述。否则,请获取外部 Quay 注册中心的自签名 CA 证书。 - 按照章节 配置 OpenShift 以信任容器镜像注册中心操作,以使注册中心被信任。
8.2.4.配置额外的 SDI 租户
对于每个新 SDI 租户,有三个需要执行的步骤:
- 如果 CA 证书是自签名的,请通过 SDI 连接管理器为注册中心导入 CA 证书。
- 创建 vflow 拉取 secret ,并将其导入到 OpenShift 命名空间。
- 使用 SDI 系统管理创建并导入凭证 secret,并更新 modeler secret。
在本例中,我们将使用新创建的租户 blue
操作,并且我们假定名为 blue_modeler
的新 Quay 注册中心用户已创建。
8.2.4.1.将 Quay 的 CA 证书导入到 SAP DI
- 请按照 将 Quay 的 CA 证书导入到 OpenShift 中的第一步,来将 CA 证书作为
router-ca.crt
在本地获取。 - 按照 管理证书指南(3.3) / (3.2) / (3.1),通过 SDI 连接管理导入
router-ca.crt
。
8.2.4.2.创建 vflow 拉取 secret ,并将其导入到 OpenShift
只有在对每个租户使用不同的 Quay 命名空间时才需要它。
- 以用户
blue_modeler
身份登录您的 Quay 注册中心。 - 点击右上角的用户头像,进到 "Account Settings" -> "User Settings",点 "Create Application Token"。我们使用
blue_modeler_quay_token
作为令牌名称。 - 生成应用程序令牌后,点击它,并下载相应的"Kubernetes Secret"。在此示例中,下载的文件名为
blue-modeler-quay-token-secret.yaml
。 - 在 Management host 上,将 secret 导入到 OpenShift 集群上的
SDI_NAMESPACE
中,例如:
# oc apply -n "${SDI_NAMESPACE:-sdi}" -f blue-modeler-quay-token-secret.yaml
- 在
blue
租户的 SDI "System Management" 中,转到 Applications 选项卡,搜索pull
,点击 Edit 按钮,并将 "Modeler:Docker image pull secret for Modeler"设置为导入的 secret 的名称(如blue-modeler-quay-token-pull-secret
)。
8.2.4.3.将凭证 secret 导入到 SDI 租户
如果您已将 vflow 拉取 secret 导入到 OpenShift 集群中,则您可以将导入的 secret 转换成用于 SDI 的正确文件格式,如下所示:
# secret=blue-modeler-quay-token-pull-secret
# oc get -o json -n "${SDI_NAMESPACE:-sdi}" "secret/$secret" | \
jq -r '.data[".dockerconfigjson"] | @base64d' | jq -r '.auths as $auths | $auths | keys |
map(. as $address | $auths[.].auth | @base64d | capture("^(?<username>[^:]+):(?<password>.+)$") |
{"address": $address, "username": .username, "password": .password})' | \
json2yaml | tee vsystem-registry-secret.txt
否则,手动创建 secret,如下所示:
# cat >/tmp/vsystem-registry-secret.txt <<EOF
- username: "blue_modeler"
password: "CHANGEME"
address: "quay.apps.cluster.example.com"
EOF
请注意,地址不得包含任何 /
后缀!
按照官方 为密码保护的容器注册中心提供访问凭证 (3.3) / (3.2) / (3.1),使用 SDI 系统管理导入 secret。
8.3.将 OpenShift 配置为信任容器镜像注册中心
如果注册中心的证书由自签名证书颁发机构签名,则必须让 OpenShift 知道它。
如果注册中心在 OpenShift 集群本身上运行,并通过 reencrypt
或带有默认 TLS 设置(没有自定义 TLS 证书集)的 edge
路由公开了,则所使用的 CA 证书在 openshift-ingress-operator
命名空间中的 secret router-ca
中可用。
要使注册中心通过这样的可信路由可用,请将路由的主机名设置为 registry
变量,并在 bash 中执行以下代码:
# registry="quay.apps.morris.ocp.vslen"
# caBundle="$(oc get -n openshift-ingress-operator -o json secret/router-ca | \
jq -r '.data as $d | $d | keys[] | select(test("\\.(?:crt|pem)$")) | $d[.] | @base64d')"
# # determine the name of the CA configmap if it exists already
# cmName="$(oc get images.config.openshift.io/cluster -o json | \
jq -r '.spec.additionalTrustedCA.name // "trusted-registry-cabundles"')"
# if oc get -n openshift-config "cm/$cmName" 2>/dev/null; then
# configmap already exists -> just update it
oc get -o json -n openshift-config "cm/$cmName" | \
jq '.data["'"${registry//:/..}"'"] |= "'"$caBundle"'"' | \
oc replace -f - --force
else
# creating the configmap for the first time
oc create configmap -n openshift-config "$cmName" \
--from-literal="${registry//:/..}=$caBundle"
oc patch images.config.openshift.io cluster --type=merge \
-p '{"spec":{"additionalTrustedCA":{"name":"'"$cmName"'"}}}'
fi
如果使用在 OpenShift 外运行或不受默认入口 CA 证书保护的注册中心,请查看 为镜像注册中心 Operator (4.14)配置 ConfigMap 处的的官方指南。
要验证 CA 证书是否已部署,请执行以下操作,并检查所提供的注册中心名称是否出现在输出中的文件名中:
# oc rsh -n openshift-image-registry "$(oc get pods -n openshift-image-registry -l docker-registry=default | \
awk '/Running/ {print $1; exit}')" ls -1 /etc/pki/ca-trust/source/anchors
container-image-registry-sdi-observer.apps.boston.ocp.vslen
image-registry.openshift-image-registry.svc..5000
image-registry.openshift-image-registry.svc.cluster.local..5000
如果这不可行,也可以 将注册中心标记为不安全。
8.4.配置不安全的注册中心
作为 配置 OpenShift ,以信任容器镜像注册中心 的一种不太安全替代方案,注册中心也可以被标记为不安全,这带来了潜在的安全风险。请按照 配置镜像设置(4.14) / (4.10) ,并将注册中心添加到 .spec.registrySources.insecureRegistries
数组中。例如:
apiVersion: config.openshift.io/v1
kind: Image
metadata:
annotations:
release.openshift.io/create-only: "true"
name: cluster
spec:
registrySources:
insecureRegistries:
- local.image.registry:5000
备注 :可能需要过几分钟后,节点才会被重新配置。您可以使用以下命令来监控进度:
watch oc get machineconfigpool
watch oc get nodes
8.5.在单个 OpenShift 集群上运行多个 SDI 实例
在单个 OpenShift 集群上并行运行两个 SAP Data Intelligence 实例已被验证。可以运行多个实例,但很可能需要 SAP 的额外支持声明。
在将多个 SDI 实例部署到集群前,请考虑以下几点:
- 每个 SAP Data Intelligence 实例必须运行在其自己的命名空间/项目中。
- 每个 SAP Data Intelligence 实例必须对 Pipeline Modeler 使用不同的前缀或容器镜像注册中心。例如,第一个实例可以将 "Container Registry Settings for Pipeline Modeler" 配置为
local.image.registry:5000/sdi30blue
,第二个实例将其配置为local.image.registry:5000/sdi30green
。 - 建议 将特定的节点专用于 每个 SDI 实例。
- 建议您使用 网络策略(4.14) SDN 模式,来完全细粒度化网络隔离配置,并提高安全性。有关更多参考和示例,检查 网络策略配置(4.14)。但是,OpenShift 安装 后无法更改。
- 如果在单个 OpenShift 集群上运行生产环境和测试(也称为蓝-绿)SDI 部署,请牢记以下几点:
- 在 SDI 升级前,无法测试 OpenShift 集群的升级。
- 空闲(非生产)环境环境应具有与实时(生产)环境相同的网络安全性。
要将新的 SDI 实例部署到 OpenShift 集群中,请重复 项目设置 中的步骤,从第 6 点开始,使用新项目名称,并继续 SDI 安装。
8.6.在 RHEL 上安装 remarshal 工具
对于本指南中的几个示例片段,需要 yaml2json
或 json2yaml
脚本。
它们由 remarshal 项目 提供,除了 jq
,还需要安装在 管理主机 上。在 RHEL 8.2 上,可以以这种方式安装它:
# sudo dnf install -y python3-pip
# sudo pip3 install remarshal
8.7.从最新的异步版本升级到下一个次版本
如果 OpenShift 集群已订阅了 稳定渠道,则当前次版本的最新可用微版本可能无法升级到较新的次版本。
考虑以下示例:
- OpenShift 集群是版本
4.13.24
。 - stable-4.13 渠道中提供的最新异步发行版本是
4.13.30
。 - 最新的稳定 4.14 发行版本是
4.14.15
(在stable-4.14
渠道中提供)。 - 可以从
4.13.24
微发行版本升级到4.13.27
、4.13.28
、4.13.30
、4.14.13
或4.14.15
之一。 - 但是,无法从
4.13.30
升级到任何更新的版本,因为还没有在 st稳定渠道中验证/提供升级路径。
因此,如果 OpenShift 集群首先升级到最新的异步版本 4.13.30
,而不是直接升级到 4.14
次版本之一,OpenShift 集群可能会在 4.13 版本上卡住。但是,同时,fast-4.14 渠道 包含具有来自 4.14.16
的升级路径的 4.13.30
发行版本。在 fast 渠道 中首次引入后,4.14.16
版本迟早会出现在 stable-4.14
渠道中。
要在不等待升级路径出现在 稳定渠道 中的情况下修改这种情况:
- 临时 切换 到 fast-4.X 渠道。
- 执行升级。
- 切回到 stable-4.X 渠道。
- 继续执行到 stable-4.X 渠道 中提供的最新微版本的升级。
8.8.HTTP 代理配置
HTTP(S)代理必须在不同的地方进行配置。相应的无代理设置由不同的组件以不同的方式处理:
- 管理主机
- OpenShift 集群
- SLC 网桥
- SAP Data Intelligence
以下部分假设:
- 集群的基域是 example.com
- 集群名称是 foo
,这意味着其 API 正在侦听 api.foo.example.com:6443
- 本地代理服务器正在侦听 http://proxy.example.com:3128
- 管理主机 的主机名为 jump.example.com,我们应该将其短名称(jump
)添加到 NO_PROXY
- 本地网络 CIDR 是 192.168.128.0/24
- OpenShift 的服务网络具有默认的 172.30.0.0/16
范围
8.8.1.在管理主机上配置 HTTP 代理
请根据您的 Linux 发行版,在 管理主机 上导出代理环境变量。对于 RHEL,请按照 如何应用系统范围的代理 操作。例如,在 BASH 中:
# sudo cp /dev/stdin /etc/profile.d/http_proxy.sh <<EOF
export http_proxy=http://proxy.example.com:3128
export https_proxy=http://proxy.example.com:3128
export no_proxy=localhost,127.0.0.1,jump,.example.com,192.168.128.0/24
EOF
# source /etc/profile.d/http_proxy.sh
其中 .example.com
是与任何子域匹配的通配符模式,如 foo.example.com
。
8.8.2.在 OpenShift 集群上配置 HTTP 代理
通常,OpenShift 在其安装过程中 被配置为使用代理。
但是也可以 事后设置/重新配置它。
一个配置示例可能类似如下:
# oc get proxy/cluster -o json | jq '.spec'
{
"httpProxy": "http://proxy.example.com:3128",
"httpsProxy": "http://proxy.example.com:3128",
"noProxy": "192.168.128.0/24,jump,.local,.example.com",
"trustedCA": {
"name": "user-ca-bundle"
}
}
请记住,OpenShift 不支持通配符字符(如 *.example.com
)。
为容器和服务网络及额外的服务名称扩展的完整的 no_proxy
列表会自动生成,并存储在代理对象的 .status.noProxy
字段中:
# oc get proxy/cluster -o json | jq -r '.status.noProxy'
.cluster.local,.local,.example.com,.svc,10.128.0.0/14,127.0.0.1,172.30.0.0/16,192.168.128.0/24,api-int.foo.example.com,localhost,jump
8.8.3.为 SLC 网桥配置 HTTP 代理
SLC 网桥二进制文件将使用 之前配置的 管理主机 上的环境中的代理设置。这对于允许 SLCB 与 SAP 镜像注册中心(代理的)、本地镜像注册中心和 OpenShift API(未代理的)进行通信非常重要。
在 SLC 网桥的初始化阶段过程中,它将网桥部署为 OpenShift 集群上的一个容器,在提示时还必须设置代理设置。以下是示例值:
# ./slcb init
...
***************************************************************************
* Choose whether you want to run the deployment in typical or expert mode *
***************************************************************************
1. Typical Mode
> 2. Expert Mode
Choose action <F12> for Back/<F1> for help
possible values [1,2]: 2
...
************************
* Proxy Settings *
************************
Configure Proxy Settings: y
Choose action <F12> for Back/<F1> for help
possible values [yes(y)/no(n)]: y
************************
* HTTPS Proxy *
************************
Enter the URL of the HTTPS Proxy to use
Choose action <F12> for Back/<F1> for help
HTTPS Proxy: http://proxy.example.com:3128
So far no surprise. For the `No Proxy` however, it is recommended to copy&append the `.status.noProxy` settings from the [OpenShift's proxy object](#apx-http-proxy-ocp).
************************
* Cluster No Proxy *
************************
Specify the NO_PROXY setting for the cluster. The value cannot contain white space and it must be comma-separated. You have to include the address range configured for the kubernetes cluster in this list (e.g. "10.240.0.0/20").
Choose action <F12> for Back/<F1> for help
Cluster No Proxy: 10.128.0.0/14,127.0.0.1,172.30.0.0/16,192.168.128.0/24,localhost,jump,169.254.169.254,sap-slcbridge,.local,.example.com,.svc,.internal
备注 :您可以使用以下脚本从 OpenShift 的代理设置中生成值:
# bash <(curl -s https://raw.githubusercontent.com/redhat-sap/sap-data-intelligence/master/utils/get_no_proxy.sh) --slcb
请确保附加 --slcb
参数。
8.8.4.在其安装过程中为 SAP DI 配置 HTTP 代理
在 SDI 安装 过程中,必须为"nstallation Type"选择"Advanced Installation",以便配置代理。
然后,以下是代理设置的一个示例:
**************************
* Cluster Proxy Settings *
**************************
Choose if you want to configure proxy settings on the cluster: y
Choose action <F12> for Back/<F1> for help
possible values [yes(y)/no(n)]: y
************************
* Cluster HTTP Proxy *
************************
Specify the HTTP_PROXY value for the cluster.
Choose action <F12> for Back/<F1> for help
HTTP_PROXY: http://proxy.example.com:3128
************************
* Cluster HTTPS Proxy *
************************
Specify the HTTPS_PROXY value for the cluster.
Choose action <F12> for Back/<F1> for help
HTTPS_PROXY: http://proxy.ocpoff.vslen:3128
************************
* Cluster No Proxy *
************************
Specify the NO_PROXY value for the cluster. NO_PROXY value cannot contain white spaces and it must be comma-separated.
Choose action <F12> for Back/<F1> for help
NO_PROXY: 10.0.0.0/16,10.128.0.0/14,127.0.0.1,172.30.0.0/16,192.168.0.0/16,192.168.128.2,localhost,jump,169.254.169.254,auditlog,datalake,diagnostics-prometheus-pushgateway,hana-service,storagegateway,uaa,vora-consul,vora-dlog,vora-prometheus-pushgateway,vsystem,vsystem-internal,*.local,*.example.com,*.svc,*.internal
注意 :可以使用以下脚本生成值:
# bash <(curl -s https://raw.githubusercontent.com/redhat-sap/sap-data-intelligence/master/utils/get_no_proxy.sh)
# # to see the usage and options, append `--help`
# bash <(curl -s https://raw.githubusercontent.com/redhat-sap/sap-data-intelligence/master/utils/get_no_proxy.sh) --help
在设置 No Proxy
时,请记住以下几点:
- 通配符域必须包含通配符字符。相反,OpenShift 的代理设置 不得包含通配符字符。
- 从 SLC 网桥 1.1.72 开始,
NO_PROXY
不得以通配符域开头。请将通配符域放在NO_PROXY
的末尾。 - 除了 OpenShift 代理的
.status.noProxy
值外,列表还应包括以下服务名称:vora-consul,hana-service,uaa,auditlog,vora-dlog,vsystem-internal,vsystem,vora-prometheus-pushgateway,diagnostics-prometheus-pushgateway,storagegateway,datalake
。
8.8.5.在 SAP DI 安装后配置 HTTP 代理
- 以
system
身份登录clusterAdmin
租户,并打开System Management
。 - 点
Cluster
,然后点Tenants
。 - 对于每个租户,单击租户行。
- 点 "View Application Configuration and Secrets"。
- 搜索
PROXY
,并点击 Edit 按钮。 - 根据需要编辑值。您可以随意使用 上面的
get_no_proxy.sh
脚本 来生成No proxy
值。 - 点击
Update
按钮。 - (如果处理
system
租户,请跳过这一步,直到最后)。返回到租户概述。这一次,单击"Delete all Instances"。请注意,这将导致租户的当前用户略微停机。 - 对其他租户重复第 3 步。
- 也对
system
租户执行第 8 步。
8.9.在 OCP 上为 SDI 启用 GPU
要在 OCP 上为 SDI 启用 GPU 使用,请参阅 在 OCP 上为 SDI 启用 GPU 。
9.故障排除
如需了解详细的故障排除指南,请参阅 OpenShift Container Platform 4 上 SAP Data Intelligence 3 的故障排除指南。
Comments