基本用法 - 基于主机的路由 ¶

内容

ingress-nginx 可以用于许多用例,适用于各种云服务提供商,并支持多种配置。在本节中,您可以找到一个常见的使用场景,其中由 ingress-nginx 提供支持的单个负载均衡器将根据主机名将流量路由到 2 个不同的 HTTP 后端服务。

首先按照说明安装 ingress-nginx。然后想象一下,您需要暴露已经安装的两个 HTTP 服务,myServiceAmyServiceB,并配置为 type: ClusterIP

假设你想在 myServiceA.foo.org 上暴露第一个,在 myServiceB.foo.org 上暴露第二个。

如果集群版本低于 1.19,您可以像这样创建两个 ingress 资源:

`apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress-myservicea spec: ingressClassName: nginx rules:

  • host: myservicea.foo.org http: paths:
    • path: / backend: serviceName: myservicea servicePort: 80

apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress-myserviceb annotations: # 使用共享的 ingress-nginx kubernetes.io/ingress.class: "nginx" spec: rules:

  • host: myserviceb.foo.org http: paths:
    • path: / backend: serviceName: myserviceb servicePort: 80`

如果集群使用 Kubernetes 版本 >= 1.19.x,则建议创建 2 个 ingress 资源,使用下面显示的 yaml 示例。这些示例符合 networking.kubernetes.io/v1 api。

总结
本文介绍了如何使用ingress-nginx在Kubernetes中路由流量到两个不同的HTTP后端服务。首先,需要安装ingress-nginx,并假设已有两个类型为ClusterIP的HTTP服务:myServiceA和myServiceB。接着,分别将这两个服务暴露在myServiceA.foo.org和myServiceB.foo.org。对于Kubernetes版本低于1.19,需创建两个ingress资源,使用v1beta1 API;而对于1.19及以上版本,则应使用v1 API创建ingress资源。创建后,ingress-nginx会自动发现这些资源,并管理它们。最后,用户需在DNS提供商中添加A记录,将域名指向nginx的外部IP。文中还提到在minikube中测试ingress的相关文档。