- 概述
- 要求
- 预安装
- 安装
- 安装后
- 迁移和升级
- 监控和警示
- 集群管理
- 特定于产品的配置
- 故障排除
先决条件检查
运行 uipathctl Prereq run,以验证 OpenShift 上的 Automation Suite 的基础架构先决条件,包括命名空间范围的流程。
建议运行先决条件检查,以确保您正确配置了云基础架构,并在开始安装 Automation Suite 之前验证 input.json。
本页面涵盖:
运行先决条件检查
使用具有集群范围访问权限的 kubeconfig 运行先决条件检查。如果uipathadmin仅适用于命名空间作用域,请按照在不使用集群角色的情况下运行先决条件检查的方式操作。
要根据您在 input.json 中配置的输入检查先决条件,请在有权访问集群的 Kubernetes API 的计算机上运行以下命令:
uipathctl prereq run input.json --versions versions.json
uipathctl prereq run input.json --versions versions.json
For details on the flags that you can use with the uipathctl prereq run command, refer to uipathctl prereq run.
默认情况下, uipathctl prereq命令会检查所有先决条件。 或者,该命令也允许您严格运行与您相关的检查,如下所示:
- 如果要从执行中排除组件,请使用
--excluded标志。例如,如果您不想检查数据库连接字符串,请运行uipathctl prereq --excluded SQL。该命令运行所有先决条件检查,与 SQL 相关的检查除外。 - 如果您只想在执行中包含某些组件,请使用
--included标志。例如,如果您只想检查 DNS 和对象存储,请运行uipathctl prereq --included DNS,OBJECTSTORAGE。 - 如果要访问详细的先决条件检查输出,请使用
--verbose标志。您可以跳过此标志,以获得更简洁和更简洁的输出。
You can find the names of the components you can include or exclude from the prerequisite checks in the prerequisite check output. In the example, the first word on each outdented line represents the component name. For example: SQL, OBJECTSTORE, DNS, etc.
先决条件和运行状况检查/测试在<uipath>命名空间中运行。 您必须向uipathctl工具授予必要的权限,以允许创建<uipath>命名空间,或在运行检查/测试之前自行创建。 此外,某些检查/测试要求您启用hostNetwork 。
要运行与主机网络相关的测试,您必须允许该工具使用集群管理员权限运行。否则,先决条件检查输出中将显示以下警告:
Ran CONNECTIVITY checks...
⚠ [CONNECTIVITY]
⚠ [NETWORK_TEST_SETUP] Failed to create the network test infrastructure: failed to create echo-host-role role: error creating role: roles.rbac.authorization.k8s.io "network-prereq-6c5mt-echo-host-role" is forbidden: user "system:serviceaccount:uipath:uipathadmin" (groups=["system:serviceaccounts" "system:serviceaccounts:uipath" "system:authenticated"]) is attempting to grant RBAC permissions not currently held:
{APIGroups:["security.openshift.io"], Resources:["securitycontextconstraints"], ResourceNames:["hostnetwork-v2"], Verbs:["use"]}
Ran CONNECTIVITY checks...
⚠ [CONNECTIVITY]
⚠ [NETWORK_TEST_SETUP] Failed to create the network test infrastructure: failed to create echo-host-role role: error creating role: roles.rbac.authorization.k8s.io "network-prereq-6c5mt-echo-host-role" is forbidden: user "system:serviceaccount:uipath:uipathadmin" (groups=["system:serviceaccounts" "system:serviceaccounts:uipath" "system:authenticated"]) is attempting to grant RBAC permissions not currently held:
{APIGroups:["security.openshift.io"], Resources:["securitycontextconstraints"], ResourceNames:["hostnetwork-v2"], Verbs:["use"]}
先决条件检查的验证内容
下表中的检查在每个节点上运行:
| 选中 | 描述 |
|---|---|
| SQL 连接 | 验证 Automation Suite 是否可以使用input.json文件中提供的 SQL 连接字符串成功连接到 UiPath™ 产品和共享服务(例如身份、门户、组织管理等)的 SQL Server。这是成功安装所必需的一环。 |
| SQL DB 角色 | 验证 UiPath™ 产品所需的必要角色和权限。这是成功安装所必需的一环。 |
| SQL DB 兼容性 | 验证 SQL DB 兼容性要求。 |
| FQDN 解析 | 验证 FQDN 和子域是否可成功解析。 |
| 对象存储 API | 验证是否可根据input.json文件中提供的访问权限信息访问对象存储 API。 这是成功安装 UiPath™ 服务的必要条件。 |
| 缓存/Redis | 验证与 Redis 的连接。 这是成功安装所必需的一环。 |
| 容量 | 根据input.json文件中启用的产品,验证工作器节点上是否具有最低 CPU 和 RAM 容量。 |
| 存储类 | 验证是否已根据 Automation Suite Robot 的要求配置文件存储的存储类。 |
| 可选组件 | 验证集群是否具有您选择从 Automation Suite 安装中排除的组件。 |
| 入口 | 验证集群入口是否已正确配置,以及 FQDN URL 请求是否可以到达 UiPath™ 产品。 |
| 网络策略 | 检查 Automation Suite 中配置的网络策略是否与集群兼容。 |
| 注册表 | 验证 Automation Suite 是否可以访问 UiPath™ Docker 注册表。这是成功安装所必需的一环。 |
| 集群连接 | 验证集群通信是否配置正确: - 在两个随机 Pod 之间完成 - 在 Pod 和多节点 ClusterIP 之间 - 在 Pod 与没有集群 IP 的多节点集群 IP 之间 - 使用主机网络在 Pod 和多节点 ClusterIP 之间 - 在 Pod 与未使用主机网络设置集群 IP 的多节点集群 IP 之间 - 通过 ClusterIP 在同一节点上托管的两个 Pod 之间 Connectivity checks can fail on OpenShift 4.16–4.18 control-plane nodes due to port conflicts. To address the issue, refer to the Troubleshooting section. |
在没有集群角色的情况下运行先决条件检查
仅当您仅向 Automation Suite 安装程序服务帐户 (uipathadmin) 授予了命名空间范围的权限,而未授予任何集群范围的权限,本节内容适用。有关详细信息,请参阅在不带集群角色的情况下授予安装权限。
如果uipathadmin具有集群范围的权限,请按照运行先决条件检查中的说明运行先决条件检查。
当 uipathadmin 仅命名空间范围内时,一组固定的 uipathctl prereq run 检查会失败,因为它们需要集群范围的访问权限 - 对集群范围资源的读取(例如 nodes、namespaces、storageclasses或 customresourcedefinitions),或者,在连接性检查的情况下,可以使用 hostnetwork-v2 安全上下文约束。使用 --excluded 标志跳过这些检查:
uipathctl prereq run input.json \
--kubeconfig <uipathadmin.kubeconfig> \
--versions versions.json \
--excluded "INGRESS,NAMESPACE,OSS,StorageClass,NODE,GPU,CONNECTIVITY"
uipathctl prereq run input.json \
--kubeconfig <uipathadmin.kubeconfig> \
--versions versions.json \
--excluded "INGRESS,NAMESPACE,OSS,StorageClass,NODE,GPU,CONNECTIVITY"
排除选中项并不会移除基础需求;对于正常安装,该属性仍为必要项。下表描述了每项排除检查的验证内容、所需的集群范围访问权限,以及集群管理员必须使用具有 cluster-admin 权限的 kubeconfig 带外确认的内容。
| 已排除的令牌 | 所需的集群范围的访问权限 | 检查验证的内容 |
|---|---|---|
INGRESS | nodes [list] | 确保可以从集群内的每个节点上,通过 Istio 入口网关通过 HTTPS 访问 Automation Suite FQDN。 |
NAMESPACE | namespaces [get, list] | <argocd>、安装程序和 <uipath> 命名空间存在,并且 <uipath> 包含所需的注入标签。 |
OSS | customresourcedefinitions [list] | 您从安装中排除的自带组件(例如 Istio 和 OPA Gatekeeper)存在,并且版本受支持。 |
StorageClass | storageclasses [get], nodes [list] | input.json 中的存储类存在,并且可以实际在工作器节点上配置和装载卷(检查将创建测试有状态集,并等待卷绑定和装载)。 |
NODE | nodes [list, get]、节点指标 | 每个工作器节点都满足最低 CPU 和 RAM 要求,并且 CPU、内存或 Pod 计数未过度利用。 |
GPU | nodes [list] | 对于启用的 GPU 产品,确保存在足够数量且具有可用 GPU 的 GPU 标记节点,最低节点数取决于启用的 GPU 产品。 |
CONNECTIVITY | securitycontextconstraints use 上的 hostnetwork-v2; roles [create],适用于主机网络测试 Pod | Pod 可以通过 ClusterIP Service 和使用 hostNetwork 通过覆盖网络(按 Pod IP)在节点之间通信。 |
手动验证排除的检查
排除检查后,集群管理员必须使用具有 cluster-admin 权限的 kubeconfig 手动验证每个排除的要求:
-
INGRESS:确认所有工作器节点都为Ready,并且入口路由存在:kubectl get nodes -o wide oc get routes -n <istio-system> curl -sko /dev/null -w "%{http_code}\n" https://<fqdn>kubectl get nodes -o wide oc get routes -n <istio-system> curl -sko /dev/null -w "%{http_code}\n" https://<fqdn>安装程序的
INGRESS检查会从集群内部的每个节点上探测 FQDN,并在响应时将网关视为可访问(包括使用404或 OpenShift 上的503),因为之前没有后端提供 FQDN Automation Suite 已安装。现阶段预计不会出现200。由于上述curl命令在您的工作站运行,因此当 FQDN 尚未从您的计算机解析或路由时,它可能会打印000;反映客户端可访问性,其本身不是集群问题。此处重要的信号是工作器节点为Ready,并且入口路由存在。 -
NAMESPACE:确认命名空间存在,并且<uipath>包含所需的注入标签:kubectl get ns <argocd> <uipath> kubectl get ns <uipath> --show-labelskubectl get ns <argocd> <uipath> kubectl get ns <uipath> --show-labels输出必须显示
istio-injection=enabled和uipath-injection=enabled。 -
OSS:确认 CRD 存在,Istio 处于受支持的版本,并且配置的网关正在运行:kubectl get crd | grep -E 'istio.io|gatekeeper' istioctl version oc get pods -l istio=ingressgateway -n <istio-system>kubectl get crd | grep -E 'istio.io|gatekeeper' istioctl version oc get pods -l istio=ingressgateway -n <istio-system>确认 Istio 版本为 1.14.0 或更高版本,并且
gateway_selector中的input.json与正在运行的网关匹配。 -
StorageClass:确认存储类别存在:kubectl get sc <name>kubectl get sc <name>然后为其创建一个 1 GiB 的
PersistentVolumeClaim和一个装载它的 Pod。确认 PVC 达到Bound并且 Pod 在工作器节点上启动 - 这将练习检查涵盖的相同区域和拓扑兼容性。 -
NODE:确认每个节点的可分配容量和利用率:kubectl get nodes -o custom-columns=NAME:.metadata.name,CPU:.status.allocatable.cpu,MEM:.status.allocatable.memory kubectl top nodeskubectl get nodes -o custom-columns=NAME:.metadata.name,CPU:.status.allocatable.cpu,MEM:.status.allocatable.memory kubectl top nodes每个节点必须至少显示 8 个 CPU 和 16 个 Gi 可分配,并且 CPU 和内存使用率低于 80%。交叉检查Kubernetes 集群和节点中的节点大小调整。
-
GPU:确认 GPU 节点数量满足要求(Document Understanding 新式项目为 5 个节点,否则不设最低要求),并且可分配的 GPU 在这些节点上可用:kubectl get nodes -l nvidia.com/gpu.present=true kubectl get nodes -o custom-columns=NAME:.metadata.name,GPU:.status.allocatable.'nvidia\.com/gpu'kubectl get nodes -l nvidia.com/gpu.present=true kubectl get nodes -o custom-columns=NAME:.metadata.name,GPU:.status.allocatable.'nvidia\.com/gpu'第二个命令的输出显示的值必须大于 0。有关 GPU 大小调整要求,请参阅Kubernetes 集群和节点。
-
CONNECTIVITY:最可靠的选项是让集群管理员使用管理员 kubeconfig 仅运行此检查:uipathctl prereq run input.json --versions versions.json --included CONNECTIVITYuipathctl prereq run input.json --versions versions.json --included CONNECTIVITY或者,在不同的工作器节点上计划两个 Pod,并确认它们可以通过 Pod IP 和
ClusterIPService相互访问。
排除这些检查不会消除基础要求; Runtime 仍需要相应行为。在继续安装之前,验证上表中的每个属性。