在 Kubernetes 中,使用 Ingress 控制器可以方便地为集群中的服务设置路由。通过 Ingress,可以将外部请求路由到集群中的不同服务,实现负载均衡、SSL 终止、路径匹配等功能。在本篇文章中,我们将介绍如何在 Kubernetes 中设置 Ingress 路由。
准备工作
在开始设置 Ingress 路由之前,需要完成以下几个准备工作:
- 安装 Kubernetes 集群:可以使用 Minikube 在本地安装一个单节点 Kubernetes 集群。
- 安装 Ingress 控制器:Kubernetes 中有多个 Ingress 控制器可供选择,如 Nginx、Traefik 等。在本篇文章中,我们以 Nginx Ingress Controller 为例进行讲解。
- 部署应用程序:为了测试 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 集群中的名为 app1
和 app2
的服务上。
在 YAML 文件中,可以使用 annotations
字段为 Ingress 路由添加注释。在上面的示例中,使用了 nginx.ingress.kubernetes.io/rewrite-target
注释,将请求重新定向到 /
路径上。
在 spec
字段中,可以使用 rules
字段定义路由规则。在上面的示例中,使用了 host
字段指定了域名,然后使用 http
字段定义了 HTTP 请求的路由规则。在 http
字段中,可以使用 paths
字段定义路径匹配规则,并将匹配的请求路由到后端服务。在示例中,使用了 path
字段定义了路径匹配规则,使用了 backend
字段将匹配的请求路由到名为 app1
和 app2
的服务上。
应用 Ingress 路由
在完成 Ingress 路由的配置后,就可以使用 kubectl apply
命令将 YAML 文件中的配置应用到 Kubernetes 集群中。可以执行以下命令应用示例 YAML 文件:
kubectl apply -f example-ingress.yaml
应用完成后,可以使用以下命令查看 Ingress 路由的状态:
kubectl get ingress
如果 Ingress 路由的状态为 READY
,则说明配置成功。此时,可以在浏览器中输入 http://example.com/app1
和 http://example.com/app2
访问 Kubernetes 集群中的应用程序。
总结
通过本篇文章的介绍,我们了解了如何在 Kubernetes 中设置 Ingress 路由。通过 Ingress,可以方便地为集群中的服务设置路由,实现负载均衡、SSL 终止、路径匹配等功能。在实际应用中,需要根据具体的需求和场景进行配置和调整。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c161b9add4f0e0ffb5134f