- 概述
- 要求
- 安装
- 安装后
- 迁移和升级
- 监控和警示
- 集群管理
- 特定于产品的配置
- 故障排除
EKS/AKS 上的 Automation Suite 安装指南
网络
您必须预配和配置 Azure 或 AWS 网络资源,以确保集群上的 Automation Suite 可以连接并访问云基础架构先决条件(例如,存储、数据库、缓存和 DNS)。 根据您的网络架构,这可能包括配置 VNET/VPC、DNS、子网、网络安全组/安全组、NAT 网关、弹性 IP 和互联网网关。 有关详细信息,请参阅部署方案。
请注意,根据工作负载扩展情况,可能需要更多副本。默认情况下,HA 模式需要两个副本,最多需要十个或更多副本。请确保您的网络支持此扩展级别。
只要 Pod 可以相互通信,您就可以使用任何 CNI。我们的建议是使用 Azure CNI 或 Calico。
对于云 CNI,例如 Azure CNI 和 Amazon VPC CNI 有特殊注意事项,它们不支持内部或私有 Pod 网络子网。 Automation Suite 所需的 Pod 数量取决于您的产品选择和工作负载扩展。 例如,对于已启用所有服务且高利用率的部署,您可能需要 400 多个 IP 来支持扩展要求。 因此,我们建议分配至少为 /23 的 CIDR 范围。
Automation Suite 不支持 IPv6 互联网协议。
如果您有自定义入口控制器 (NGINX),请参阅 配置 NGINX 入口 并跳过页面的其余部分。
Automation Suite 在安装过程中代表您配置负载均衡器。 必须为负载均衡器分配公共或私有 IP 地址,才能路由传入的 FQDN 请求。 您可以通过两个选项配置负载均衡器:
-
预分配的 IP:为负载均衡器分配公共 IP 或私有 IP,配置 DNS 记录以将 FQDN 映射到这些 IP,并将这些 IP 作为
input.json
的入口部分的一部分提供。 -
动态分配的 IP: 如果您不提供 IP 地址,则 Automation Suite 会将 IP 从集群子网动态分配给负载均衡器。
负载均衡器上的网络安全组必须允许通过端口 443 来自最终客户端的 HTTPS 流量。 默认情况下,我们将负载均衡器配置为定期进行 TCP 运行状况检查。
如果使用自己的入口(例如 NGINX),请确保您满足配置 NGINX 入口控制器中记录的网络要求。 使用部署 NLB 的 Istio 时,请注意,它通常会创建三个侦听器,其中包括端口 80、443 和 15021。 但是,这是典型设置,您的实际要求可能会因您的确切情况而异,因此请根据需要进行调整。
input.json
的 ingress
部分中提供以下服务注释。
有关 EKS 中的服务注释列表,请参阅 AWS 负载均衡器文档。
有关 AKS 中的服务注释列表,请参阅 Azure 负载均衡器文档。
input.json
中创建 ingress.service_annotations
节。在安装示例之前,您必须在 EKS 集群上部署 AWS 负载均衡器控制器,以使其正常工作。
以下示例显示了如何从 AWS 分配弹性 IP 并配置公共负载均衡器。 如果您使用此示例作为配置的起点,请确保将 IP 替换为实际值。
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "ssl",
"service.beta.kubernetes.io/aws-load-balancer-eip-allocations": "<elastic_ip_id_0>,<elastic_ip_id_1>",
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type": "ip",
"service.beta.kubernetes.io/aws-load-balancer-scheme": "internet-facing",
"service.beta.kubernetes.io/aws-load-balancer-type": "nlb"
}
}
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "ssl",
"service.beta.kubernetes.io/aws-load-balancer-eip-allocations": "<elastic_ip_id_0>,<elastic_ip_id_1>",
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type": "ip",
"service.beta.kubernetes.io/aws-load-balancer-scheme": "internet-facing",
"service.beta.kubernetes.io/aws-load-balancer-type": "nlb"
}
}
以下示例显示了如何从 EKS 集群子网将私有 IP 分配给内部负载均衡器。 如果使用此示例作为配置的起点,请确保使用实际值更新 IP 和子网。
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "ssl",
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type": "ip",
"service.beta.kubernetes.io/aws-load-balancer-private-ipv4-addresses":"<IP_0>,<IP_1>",
"service.beta.kubernetes.io/aws-load-balancer-subnets": "<SUBNET_ID_0>,<SUBNET_ID_1>",
"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal",
"service.beta.kubernetes.io/aws-load-balancer-type": "nlb"
"service.beta.kubernetes.io/aws-load-balancer-target-group-attributes": "preserve_client_ip.enabled=false"
}
}
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "ssl",
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type": "ip",
"service.beta.kubernetes.io/aws-load-balancer-private-ipv4-addresses":"<IP_0>,<IP_1>",
"service.beta.kubernetes.io/aws-load-balancer-subnets": "<SUBNET_ID_0>,<SUBNET_ID_1>",
"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal",
"service.beta.kubernetes.io/aws-load-balancer-type": "nlb"
"service.beta.kubernetes.io/aws-load-balancer-target-group-attributes": "preserve_client_ip.enabled=false"
}
}
IP 和子网必须匹配。
<IP_0>
位于 <SUBNET_0>
中, <IP_1>
位于 <SUBNET_1>
中。
以下示例显示了如何从 Azure 分配公共 IP 并配置公共负载均衡器。 如果使用此示例作为配置的起点,请确保使用实际值更新 IP。
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/azure-load-balancer-internal": "false",
"service.beta.kubernetes.io/azure-load-balancer-ipv4": "<IP>"
}
}
...
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/azure-load-balancer-internal": "false",
"service.beta.kubernetes.io/azure-load-balancer-ipv4": "<IP>"
}
}
...
以下示例显示了如何将 AKS 集群子网中的私有 IP 分配到内部负载均衡器。如果您使用此示例作为配置的起点,请确保使用实际值更新 IP 和子网。
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/azure-load-balancer-internal": "true",
"service.beta.kubernetes.io/azure-load-balancer-ipv4": "<IP>",
"service.beta.kubernetes.io/azure-load-balancer-internal-subnet": "<SUBNET_0>", "<SUBNET_1>"
}
}
...
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/azure-load-balancer-internal": "true",
"service.beta.kubernetes.io/azure-load-balancer-ipv4": "<IP>",
"service.beta.kubernetes.io/azure-load-balancer-internal-subnet": "<SUBNET_0>", "<SUBNET_1>"
}
}
...
IP 和子网必须匹配。
<IP_0>
位于 <SUBNET_0>
中, <IP_1>
位于 <SUBNET_1>
中。
input.json
中未提供任何 IP,则 Automation Suite 将从工作器节点子网动态分配私有 IP。 在这种情况下,请通过以下方式运行 Automation Suite 安装。
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "ssl",
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type": "ip",
"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal",
"service.beta.kubernetes.io/aws-load-balancer-type": "nlb",
"service.beta.kubernetes.io/aws-load-balancer-internal": true
}
}
...
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "ssl",
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type": "ip",
"service.beta.kubernetes.io/aws-load-balancer-scheme": "internal",
"service.beta.kubernetes.io/aws-load-balancer-type": "nlb",
"service.beta.kubernetes.io/aws-load-balancer-internal": true
}
}
...
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/azure-load-balancer-internal": "true"
}
}
...
...
"ingress": {
"service_annotations": {
"service.beta.kubernetes.io/azure-load-balancer-internal": "true"
}
}
...
在这种情况下,请按如下方式运行安装程序:
-
仅在配置负载均衡器之前运行安装程序:
uipathctl manifest apply <INPUT_JSON> --versions <VERSIONS_JSON> --override=gateway
uipathctl manifest apply <INPUT_JSON> --versions <VERSIONS_JSON> --override=gateway -
检索负载均衡器主机名:
kubectl get svc -n istio-system istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
kubectl get svc -n istio-system istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}' -
使用映射到负载均衡器端点或 IP 的 FQDN 配置 DNS。
-
重新运行安装程序以完成安装:
uipathctl manifest apply input.json --versions versions.json
uipathctl manifest apply input.json --versions versions.json
请注意,如果没有 DNS 映射,FQDN 先决条件检查将失败。 先决条件检查旨在让您确信在安装 Automation Suite 之前已正确配置所有先决条件。 FQDN 检查不会阻止您安装 Automation Suite 。