k8s ingress
时间: 2025-07-10 12:12:02 浏览: 8
在 Kubernetes 中,Ingress 是一种用于管理外部访问集群内部服务的 API 资源,它提供了一种标准化的方式来定义 HTTP 和 HTTPS 路由规则。通过 Ingress,用户可以实现基于路径或子域名的路由、负载均衡、SSL 终止等功能[^1]。
### Ingress 的基本配置结构
一个典型的 Ingress 配置文件包含以下核心字段:
- `apiVersion`: 指定使用的 API 版本,如 `networking.k8s.io/v1`。
- `kind`: 定义资源类型为 `Ingress`。
- `metadata`: 包含名称(name)、命名空间(namespace)和注解(annotations)等信息。
- `spec`: 描述 Ingress 的行为,包括规则(rules)和 TLS 设置。
下面是一个基础示例:
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
spec:
rules:
- http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- http:
paths:
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
```
此配置将 `/app1` 和 `/app2` 路径分别路由到名为 `app1-service` 和 `app2-service` 的后端服务[^3]。
### 使用注解(Annotations)
Ingress 支持使用注解来配置特定于控制器的行为。例如,在使用 Ingress-NGINX 控制器时,可以通过注解来启用重写路径、设置超时时间或自定义 Nginx 模板等高级功能。
以下是一些常见的注解示例:
```yaml
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/proxy-connect-timeout: "30s"
nginx.ingress.kubernetes.io/canary: "true"
```
这些注解分别用于路径重写、设置代理连接超时时间和启用金丝雀发布特性[^1]。
### 配置负载均衡策略
Ingress 可以通过注解来指定不同的负载均衡算法。例如,Ingress-NGINX 支持轮询(round_robin)、最少连接(least_conn)和 IP 哈希(ip_hash)等方式。
```yaml
metadata:
annotations:
nginx.ingress.kubernetes.io/canary-weight: "10"
nginx.ingress.kubernetes.io/canary-weight-total: "100"
```
以上注解可用于控制金丝雀发布的流量权重分配,其中 `canary-weight` 表示当前 Ingress 分配的流量比例,而 `canary-weight-total` 表示总权重值[^2]。
### TLS 配置
为了支持 HTTPS,可以在 Ingress 中定义 TLS 设置。这通常涉及创建 Kubernetes Secret 来存储证书和私钥,并将其引用到 Ingress 配置中。
```yaml
spec:
tls:
- hosts:
- example.com
secretName: tls-secret
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80
```
在这个例子中,`tls-secret` 是一个预先创建的 Kubernetes Secret,包含了 SSL/TLS 证书和对应的私钥[^2]。
### 使用 Helm 进行安装与配置
对于 Ingress-NGINX 控制器的部署,推荐使用 Helm 图表进行快速安装和配置。Helm 提供了丰富的可配置参数,使得用户能够轻松地调整 Nginx 的行为、资源限制以及日志记录选项等。
安装命令如下:
```bash
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx
```
通过这种方式,用户可以快速启动并运行 Ingress-NGINX 控制器,并根据需要进一步调整其配置[^2]。
### 总结
Kubernetes Ingress 提供了一个强大的机制来管理对外暴露的服务。通过合理配置规则、注解和 TLS 设置,可以实现灵活的路由逻辑、安全的通信通道以及高效的负载均衡策略。结合 Ingress 控制器(如 Ingress-NGINX),还可以扩展出更多高级功能,满足不同场景下的需求。
---
阅读全文
相关推荐
















