Kubernetes 中如何设置 ingress 路由

在 Kubernetes 中,使用 Ingress 控制器可以方便地为集群中的服务设置路由。通过 Ingress,可以将外部请求路由到集群中的不同服务,实现负载均衡、SSL 终止、路径匹配等功能。在本篇文章中,我们将介绍如何在 Kubernetes 中设置 Ingress 路由。

准备工作

在开始设置 Ingress 路由之前,需要完成以下几个准备工作:

  1. 安装 Kubernetes 集群:可以使用 Minikube 在本地安装一个单节点 Kubernetes 集群。
  2. 安装 Ingress 控制器:Kubernetes 中有多个 Ingress 控制器可供选择,如 Nginx、Traefik 等。在本篇文章中,我们以 Nginx Ingress Controller 为例进行讲解。
  3. 部署应用程序:为了测试 Ingress 路由,需要在 Kubernetes 集群中部署一个或多个应用程序。

安装 Nginx Ingress Controller

在 Kubernetes 中,可以使用 Helm 包管理器安装 Nginx Ingress Controller。在安装之前,需要先安装 Helm。可以按照 官方文档 的说明进行安装。

安装 Helm 后,可以执行以下命令添加 Nginx Ingress Controller 的 Helm 仓库:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

然后,可以执行以下命令安装 Nginx Ingress Controller:

helm install ingress-nginx ingress-nginx/ingress-nginx

安装完成后,可以使用以下命令查看 Nginx Ingress Controller 的状态:

kubectl get pods -n ingress-nginx

如果所有的 Pod 都处于 Running 状态,则说明 Nginx Ingress Controller 安装成功。

配置 Ingress 路由

在安装完 Ingress 控制器后,就可以开始配置 Ingress 路由了。在 Kubernetes 中,可以使用 YAML 文件定义 Ingress 路由规则。下面是一个示例 YAML 文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /app1
            pathType: Prefix
            backend:
              service:
                name: app1
                port:
                  name: http
          - path: /app2
            pathType: Prefix
            backend:
              service:
                name: app2
                port:
                  name: http

上面的 YAML 文件定义了一个名为 example-ingress 的 Ingress 路由,将 example.com 域名下的 /app1/app2 路径分别路由到 Kubernetes 集群中的名为 app1app2 的服务上。

在 YAML 文件中,可以使用 annotations 字段为 Ingress 路由添加注释。在上面的示例中,使用了 nginx.ingress.kubernetes.io/rewrite-target 注释,将请求重新定向到 / 路径上。

spec 字段中,可以使用 rules 字段定义路由规则。在上面的示例中,使用了 host 字段指定了域名,然后使用 http 字段定义了 HTTP 请求的路由规则。在 http 字段中,可以使用 paths 字段定义路径匹配规则,并将匹配的请求路由到后端服务。在示例中,使用了 path 字段定义了路径匹配规则,使用了 backend 字段将匹配的请求路由到名为 app1app2 的服务上。

应用 Ingress 路由

在完成 Ingress 路由的配置后,就可以使用 kubectl apply 命令将 YAML 文件中的配置应用到 Kubernetes 集群中。可以执行以下命令应用示例 YAML 文件:

kubectl apply -f example-ingress.yaml

应用完成后,可以使用以下命令查看 Ingress 路由的状态:

kubectl get ingress

如果 Ingress 路由的状态为 READY,则说明配置成功。此时,可以在浏览器中输入 http://example.com/app1http://example.com/app2 访问 Kubernetes 集群中的应用程序。

总结

通过本篇文章的介绍,我们了解了如何在 Kubernetes 中设置 Ingress 路由。通过 Ingress,可以方便地为集群中的服务设置路由,实现负载均衡、SSL 终止、路径匹配等功能。在实际应用中,需要根据具体的需求和场景进行配置和调整。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c161b9add4f0e0ffb5134f