组织可能对于处理路由到 ArcGIS Enterprise on Kubernetes 部署的客户端流量具有特定要求。 这些要求可能需要使用在7 层 OSI 模型 (L7) 上运行的特定于提供商的负载平衡解决方案所提供的高级功能,例如 Web 应用程序防火墙功能、基于路径和主机的路由或者基于客户端请求标头的其他确定性路由行为。
作为管理员,您可以使用集群级入口控制器以将传入流量路由到您的 ArcGIS Enterprise on Kubernetes 部署。 这些集群级入口控制器允许组织利用这些功能。 入口控制器可将 Kubernetes Ingress 对象转换为相应 7 层负载均衡器实施上的功能路由规则。 Ingress 对象内的规范包含一组到 Kubernetes 命名空间中一个或多个后端服务对象的路由规则。
最终将通过托管云提供商(例如 Amazon Elastic Kubernetes Service (EKS)、Microsoft Azure Kubernetes Service (AKS) 和 Google Kubernetes Engine)上的 7 层负载均衡器来实现这些 Ingress 对象。 创建具有特定注记和 ingressClass 名称的 Ingress 对象可以触发负载均衡器的配置,包括前端和后端侦听器以及目标组设置。 这些集群级入口控制器用于处理从集群边缘到内部公开服务的流量路由。
有关如何使用集群级入口控制器将流量路由到 ArcGIS Enterprise 部署的详细信息,请参阅以下内容:
对于每个部署平台,均提供 YAML 数据,允许通过创建 Kubernetes Ingress 对象来初始部署和配置 7 层负载均衡器。 您可以向这些 Ingress 对象添加更多配置以满足组织目标,例如应用附加 Ingress 对象注记。 还可以根据需要为现有集群内 NGINX 入口控制器服务添加注记,并提供有关如何执行这些注记的说明。
注:
某些提供商可能需要刷新 arcgis-ingress-controller 部署,才能通过新创建的 Ingress 建立正确的连接。 在创建该入口后,如果您在访问 ArcGIS Enterprise Manager 时收到错误,请尝试运行以下命令:
kubectl rollout restart deployment/arcgis-ingress-controller -n <deploymentNamespace>
先决条件
最初部署 ArcGIS Enterprise on Kubernetes 时,您必须指示您希望使用集群级入口控制器以将流量路由到您的部署。 如何执行此操作将取决于运行部署脚本的模式:
- 如果以静默模式运行该脚本,则将需要在 deploy.properties 文件中设置 INGRESS_SERVICE_USE_CLUSTER_IP = true。 此属性将覆盖为 INGRESS_TYPE 参数设置的任何值。
- 如果以交互模式运行该脚本,则当询问您是否要配置云平衡器时,您需要回答 no,然后,当询问您是否将使用集群级入口控制器以将流量路由到您的部署时,您需要回答 yes。 由此可将集群内 NGINX 入口控制器服务创建为 ClusterIP 类型,该服务用于将客户端流量正确路由到请求的 ArcGIS Enterprise 端点。
7 层负载均衡器将用作客户端流量到集群内服务的访问点。 对于 ArcGIS Enterprise on Kubernetes,应将集群级入口控制器配置为将流量传递到作为应用程序一部分部署的嵌入式入口控制器。
注:
在 ArcGIS Enterprise 11.2 之前的版本中,通过指定是否使用 OpenShift Route 将流量路由到部署的选项,提供了创建 ClusterIP 类型集群内入口控制器服务的功能。 在部署脚本内,此问题已更改为询问是否使用集群级入口控制器将流量路由到部署。 如果此选项设置为 true,则入口控制器服务将创建为 ClusterIP 类型,无论部署的 INGRESS_TYPE 已设置为 NodePort,还是设置为 LoadBalancer。
常规入口要求
可以在本文档中尚未指定的平台上使用入口控制器。 为此,上述常规先决条件同样适用。 还要考虑以下几点内容:
- 在配置 Ingress 对象以将流量路由到 ArcGIS Enterprise on Kubernetes 部署时,确保将集群内 arcgis-ingress-nginx 服务用作客户端流量将路由到的后端目标。
- 将流量从入口控制器管理的负载均衡器传递到后端集群内 NGINX 入口控制器时,确保使用 TLS 协议。
以下为 Ingress YAML 的通用示例,该示例不特定于提供商,并且包含将流量路由到 ArcGIS Enterprise on Kubernetes 部署所需的值:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: arcgis-enterprise-ingress
namespace: <deploymentNamespace>
annotations:
spec:
tls:
- hosts:
- <deploymentFQDN>
secretName: <tlsSecretName>
rules:
- host: <deploymentFQDN>
http:
paths:
- backend:
service:
name: arcgis-ingress-nginx
port:
number: 443
path: /<context>
pathType: Prefix
注:
以上示例假设已在部署命名空间内创建了包含证书信息的 TLS 密钥,并将使用该密钥,通过入口控制器来配置 TLS 证书。 某些提供商允许通过注记来指定此信息,也可以使用注记。