Ingress 控制器
时间: 2025-05-29 10:01:43 浏览: 3
### Ingress 控制器的概念、配置与使用教程
#### 概念概述
Ingress 控制器是一种特殊的组件,用于管理和实现 Kubernetes 中的 Ingress 资源。它通过监听 Ingress API 对象中的规则配置,并将其转化为具体的反向代理或负载均衡策略[^3]。常见的 Ingress 控制器实现包括 NGINX、Traefik 和 HAProxy 等。
NGINX Ingress 控制器的核心功能是将 Ingress 规则转换为 NGINX 配置文件,并动态更新这些配置以适应集群内的服务变化。这使得外部流量可以通过单一入口点访问多个内部服务,同时支持 SSL/TLS 加密、路径匹配和负载均衡等功能[^1]。
---
#### 配置步骤
##### 1. 安装 NGINX Ingress Controller
在 Kubernetes 集群中安装 NGINX Ingress Controller 的典型方法如下所示:
```bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/cloud/deploy.yaml
```
该命令会部署一个包含以下资源的默认 NGINX Ingress Controller 实现:
- Deployment:运行 NGINX 进程的主要容器。
- Service:暴露 NGINX 控制器的服务(通常是 LoadBalancer 类型)。
- ConfigMap:存储自定义 NGINX 配置参数。
如果需要更精细的控制,可以根据具体需求修改 YAML 文件中的字段[^2]。
---
##### 2. 创建 Ingress Resource
为了使 NGINX Ingress Controller 正常工作,还需要定义至少一个 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-service
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
```
在此配置中:
- `annotations` 字段指定了额外的功能选项(如 URL 重写)。
- `rules` 列表描述了主机名到服务映射的关系以及对应的路径匹配逻辑[^4]。
---
##### 3. 测试 Ingress 设置
完成上述操作后,可通过浏览器或工具测试新创建的 Ingress 是否按预期工作。假设已成功绑定域名,则可以直接访问 `http://example.com/app1` 或 `http://example.com/app2` 并验证返回的内容是否来自对应的服务实例。
此外还可以借助 kubectl 查看实时状态信息:
```bash
kubectl get ingress
kubectl describe ingress example-ingress
```
---
#### 使用场景扩展
除了基础的流量路由外,现代应用开发还可能涉及更多高级特性,例如 TLS 自动化配置、蓝绿发布模式集成等。对于前者来说,推荐结合 Cert-Manager 插件简化证书生命周期管理;而对于后者而言,则可以探索 Argo Rollouts 提供的支持渐进式交付能力的解决方案。
---
阅读全文
相关推荐


















