介绍
Ingress 是 Kubernetes 中用于公开和管理集群内服务的一种 API 资源。它充当了集群入口的角色,可以将外部流量路由到集群内部的服务,同时提供了一些高级功能,如负载均衡、TLS 终止、虚拟主机路由等。
下面是 Ingress 的一个简单示例,可将所有流量都发送到同一 Service:
通过配置,Ingress 可为 Service 提供外部可访问的 URL、对其流量作负载均衡、 终止 SSL/TLS,以及基于名称的虚拟托管等能力
环境准备
必须拥有一个 Ingress 控制器 才能满足 Ingress 的要求。仅创建 Ingress 资源本身没有任何效果。
需要先安装Helm 点击跳转
在安装 Ingress 控制器 点击跳转
Ingress 资源
Ingress 资源示例:
apiVersion: networking.k8s.io/v1
kind: Ingress # 指定了资源的类型为 Ingress
metadata:
name: web-dashboard # 指定了资源的名称 为 web-dashboard
annotations:
kubernetes.io/tls-acme: "true" # 启用自动获取 TLS 证书的功能
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 指定后端服务的通信协议为 HTTPS
nginx.ingress.kubernetes.io/server-snippet: | # 自定义 Nginx 配置片段,关闭对后端服务证书的验证
proxy_ssl_verify off;
spec:
ingressClassName: "nginx" # 指定使用的 Ingress Controller 的类别为 "nginx"
tls:
- hosts:
- web.example.com # 指定 TLS 证书的域名为 "web.example.com"
secretName: web.example.com # 指定存储 TLS 证书的 Secret 的名称为 "web.example.com"
rules:
- host: web.example.com
http:
paths:
- path: /
pathType: Prefix # 指定路径匹配类型为 Prefix,即匹配以 "/" 开头的所有路径
backend:
service:
name: web-dashboard # 指