为您的LangSmith安装创建入口(仅限Kubernetes)
默认情况下,LangSmith 将为 langsmith-frontend 部署一个负载均衡器(LoadBalancer)服务。根据您所使用的云服务提供商,此操作可能导致该服务被分配一个公网 IP 地址。如果您希望使用自定义域名,或对流向 LangSmith 实例的流量路由进行更精细的控制,则可以配置 Ingress。
要求
- 一个现有的 Kubernetes 集群
- 您 Kubernetes 集群中已安装的现有 Ingress 控制器
参数
您可能需要为 LangSmith 安装提供某些参数,以配置 Ingress。此外,我们还需将 langsmith-frontend 服务转换为 ClusterIP 类型的服务。
-
主机名(可选):您希望为 LangSmith 安装使用的主机名。例如
"langsmith.example.com"。如果留空,入口(Ingress)将把所有流量路由至 LangSmith 安装。 -
子域名(可选):如果您希望在子域名下部署 LangSmith,可在此处指定。例如,输入
"langsmith"将使应用在"langsmith.example.com/langsmith"下运行。 -
入口类名称(可选):您希望使用的入口(Ingress)类的名称。如果未设置,则使用默认的入口类。
-
注释(可选):要添加到 Ingress 的其他注释。某些提供商(例如 AWS)可能会使用注释来控制 TLS 终止等功能。
例如,您可以使用 AWS ALB Ingress 控制器添加以下注解,以将 ACM 证书附加到 Ingress:
annotations:
alb.ingress.kubernetes.io/certificate-arn: "<your-certificate-arn>" -
标签(可选):要添加到入口(Ingress)的其他标签。
-
TLS(可选):如果您希望通过 HTTPS 提供 LangSmith 服务,可以在此处添加 TLS 配置(许多 Ingress 控制器可能有其他方式来管理 TLS,因此此配置通常并非必需)。此处应为一个 TLS 配置数组。每个 TLS 配置都应包含以下字段:
- hosts:证书应有效的主机数组,例如 ["langsmith.example.com"]
- secretName:包含证书和私钥的 Kubernetes Secret 的名称。该 Secret 应包含以下键:
- tls.crt:证书
- tls.key:私钥
- 您可以在此处了解有关创建TLS密钥的更多信息。
配置
掌握这些参数后,您即可配置 LangSmith 实例以使用 Ingress。您可以通过修改 LangSmith Helm Chart 安装对应的 config.yaml 文件来实现此配置。
- Helm
ingress:
enabled: true
hostname: "" # Main domain for LangSmith
subdomain: "" # If you want to serve langsmith on a subdomain
ingressClassName: "" # If not set, the default ingress class will be used
annotations: {} # Add annotations here if needed
labels: {} # Add labels here if needed
tls: [] # Add TLS configuration here if needed
frontend:
service:
type: ClusterIP
配置完成后,您需要更新 LangSmith 安装。如果所有配置均正确,您的 LangSmith 实例现在应可通过 Ingress 访问。 您可以运行以下命令来检查 Ingress 的状态:
kubectl get ingress
你将在输出中看到类似这样的内容:
NAME CLASS HOSTS ADDRESS PORTS AGE
langsmith-ingress nginx <host> 35.227.243.203 80, 443 95d
如果没有自动化的 DNS 设置,您需要手动将 IP 地址添加到您的 DNS 提供商中。