为Label Studio Kubernetes部署设置入口控制器
设置一个入口控制器来管理Ingress,这是Kubernetes资源,用于将HTTP和HTTPS路由从Kubernetes集群外部暴露到集群内部的服务,例如Label Studio rqworkers等。
为您的部署选择最佳选项:
- Amazon Elastic Kubernetes Service (EKS) 的入口
- Google Kubernetes Engine (GKE) 入口
- Microsoft Azure Kubernetes 服务 (AKS) 的入口
- 使用nginx的Ingress(与云无关)
- 在负载均衡器上终止TLS(与云无关)
在设置持久化存储之前或之后配置入口规则,但需在部署Label Studio之前完成。
备注
如果您计划在Kubernetes上部署Label Studio,才需要设置入口控制器。
为Amazon EKS配置入口
如果您计划将Label Studio部署到Amazon EKS上,请配置入口。
- 安装AWS负载均衡控制器以使用默认选项安装入口控制器。详情请参阅Amazon EKS用户指南中的AWS Load Balancer Controller文档。
- 安装AWS负载均衡控制器后,使用AWS证书管理器(ACM)配置SSL证书。详情请参阅ACM用户指南中的申请公共证书。
- Update your
ls-values.yamlfile with the ingress details like the following example. Replace"your_domain_name"with your hostname.app: ingress: enabled: true path: /* host: "your_domain_name" className: alb annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip
备注
如果想为负载均衡器配置在ACM中创建的证书,请将此注解(根据您的证书更新)添加到ls-values.yaml文件中:
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:region:account-id:certificate/aaaa-bbbb-cccc
有关可通过ingress配置的注解的更多详情,请参阅GitHub上AWS负载均衡控制器文档中的Ingress注解指南。
为GKE配置入口
Google Kubernetes Engine (GKE) 包含两个预安装的 Ingress 类:
gce类部署了一个外部负载均衡器gce-internal类部署一个内部负载均衡器
Label Studio被视为一项外部服务,因此您需要使用gce类来部署外部负载均衡器。
- Update your
ls-values.yamlfile with the ingress details like the following example. Replace"your_domain_name"with your hostname.app: service: type: nodePort ingress: enabled: true path: /* host: "your_domain_name" className: gce
备注
您还可以申请Google托管的SSL证书以用于负载均衡器。详情请参阅Google Kubernetes Engine操作指南中的使用Google托管的SSL证书。如果使用托管证书,请按以下示例在ls-values.yaml文件中添加注解,并将"managed-cert"替换为您的ManagedCertificate对象名称:
"networking.gke.io/managed-certificates": "managed-cert"
有关GKE中注解和入口的更多详情,请参阅Google Kubernetes Engine操作指南中的配置外部负载均衡入口。
为Microsoft Azure Kubernetes服务配置入口
为Microsoft Azure Kubernetes服务(AKS)配置入口。
- 使用新的应用程序网关部署应用程序网关入口控制器(AGIC)。请参阅Microsoft Azure Ingress for AKS操作指南中的如何使用新的应用程序网关安装应用程序网关入口控制器(AGIC)。
- Update your
ls-values.yamlfile with the ingress details like the following example. Replace"your_domain_name"with your hostname.app: ingress: enabled: true host: "your_domain_name" className: azure/application-gateway
备注
您可以为AGIC创建自签名证书。按照创建自签名证书的步骤操作,该教程位于Microsoft Azure网络教程:使用Azure门户配置带有TLS终止的应用网关。
有关在Microsoft Azure中使用AGIC的更多详情,请参阅Microsoft Azure应用网关文档中的什么是应用网关入口控制器?和应用网关入口控制器的注解。
设置与云无关的入口配置
对于高级Kubernetes管理员,您可以使用NGINX Ingress Controller来设置与云无关的入口控制器。
- 根据您的云部署环境,按照相关步骤部署NGINX Ingress Controller。具体请参阅NGINX Ingress Controller安装指南中的云部署章节。
- 为了在入口控制器中终止SSL证书,请安装cert-manager。详情请参阅cert-manager文档站点上的安装指南。
- 您必须将入口主机与DNS同步。安装ExternalDNS并选择适合您部署的相关云提供商。
- Finally, update your
ls-values.yamlfile with the ingress details like the following example. Replace"your_domain_name"with your hostname andwith the name of the resource that you created with ExternalDNS.app: ingress: enabled: true host: "your_domain_name" className: nginx tls: - secretName:hosts: - "your_domain_name"
在负载均衡器上终止TLS
如果在流量转发到Ingress之前,SSL终止发生在负载均衡器上,您需要设置LABEL_STUDIO_HOST环境变量。
更新您的ls-values.yaml文件,添加LABEL_STUDIO_HOST环境变量,如下例所示。将"your_domain_name"替换为您的主机名。
global:
extraEnvironmentVars:
LABEL_STUDIO_HOST: https://your_domain_name
使用NGINX入口处理大文件上传
通过NGINX入口控制器上传大文件时,您可能会遇到"413请求实体过大"错误。这是因为NGINX默认对客户端请求主体大小设置了1MB的限制。
要处理大文件上传,您可以在入口配置中设置proxy-body-size注解。更新您的ls-values.yaml文件以包含此注解:
app:
ingress:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "200m"
如果您使用的是其他入口控制器,请查阅该特定控制器的文档,了解如何配置请求正文大小限制。例如:
- 对于HAProxy Ingress控制器,使用
haproxy.org/client-max-body-size注解 - 对于Traefik,配置
maxRequestBodyBytes中间件 - 对于AWS ALB Ingress Controller,最大请求体大小由ALB设置控制
具体配置将取决于您的入口控制器类型和版本。请参考您的控制器文档以了解所需的特定注解或配置。