Ingress 是 Kubernetes 中用于管理 HTTP 和 HTTPS 路由的资源。以下是一个典型的 Ingress 配置示例,用于将流量引导到两个不同的服务:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
tls:
- hosts:
- example.com
secretName: example-tls-secret
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
tls:
- hosts:
- example.com
secretName: example-tls-secret
在这个示例中:
apiVersion
指定了 Ingress 资源的 API 版本。kind
表示资源类型,这里是 Ingress。metadata
部分包含了 Ingress 的名称。spec
部分定义了 Ingress 的规则和 TLS 配置。
在规则部分:
host
指定了要路由的主机名,这里是example.com
。http
定义了 HTTP 路由规则。paths
包含了路径规则,它们将请求路由到不同的后端服务。path
指定了路径的前缀,例如/app1
和/app2
。pathType
设置为Prefix
表示使用前缀匹配。backend
定义了后端服务的名称(app1-service
和app2-service
)以及端口号。
在 TLS 部分:
hosts
列出了要启用 TLS 的主机名,这里是example.com
。secretName
是用于 TLS 加密的证书密钥对的名称,这个密钥对需要事先创建并存储在 Kubernetes Secret 中。
这个 Ingress 配置示例将流量路由到两个不同的后端服务 app1-service
和 app2-service
,基于请求的路径前缀。同时,它启用了 TLS 加密以确保安全的通信。
请注意,要使此配置生效,你需要在你的 Kubernetes 集群中部署和配置一个 Ingress Controller,以确保它能够理解和处理 Ingress 资源。不同的 Ingress Controller 可能有略微不同的配置方式,因此你需要参考特定 Ingress Controller 的文档来进行部署和配置。