Ingress——1

目录

基本概念

一、技术原理

二、核心特性

三、技术演进意义

基本部署

 部署Nginx Ingress Controller

ingress资源

‌关键操作命令‌


基本概念

一、技术原理

网络流量管理核心

  • 基于Kubernetes的七层反向代理机制
  • 通过声明式API配置路由规则(YAML/JSON)
  • 核心组件包含Ingress Controller和Ingress资源对象

工作流程

客户端请求 → Ingress Controller → 路由规则匹配 → 服务发现 → 负载均衡 → 后端Pod

二、核心特性

高级路由能力

  • 基于Host/Path的路由分发
  • 正则表达式路径匹配
  • 流量镜像(Canary发布)
  • 自定义Header重写

安全防护体系

  • TLS终止与证书自动续期(Let's Encrypt集成)
  • 速率限制(Rate Limiting)
  • 基于OAuth2.0的身份验证
  • IP黑白名单控制

可视化监控

  • 实时流量热力图
  • 请求耗时百分位统计
  • 错误代码分布分析
  • 自动生成OpenAPI文档

三、技术演进意义

云原生架构转型

  1. 实现从传统负载均衡器到声明式配置的范式转移
  2. 推动Service Mesh与Ingress的融合(如Gloo Mesh)
  3. 支持混合云流量管理

开发效率提升

  1. 配置版本化(GitOps工作流)
  2. 自助式路由管理(开发者门户)
  3. 环境一致性保障(Dev/Test/Prod)

成本优化

  1. 硬件LB替代方案(节约60%+成本)
  2. 智能流量调度(基于地理位置/运营商)
  3. 自动伸缩能力(HPA联动)

行业影响

  1. 成为CNCF毕业项目标准组件
  2. 催生新一代API网关产品(如Kong, Traefik)
  3. 推动云服务商标准化Ingress实现(ALB Ingress Controller等)

基本部署

 部署Nginx Ingress Controller


apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-ingress
  template:
    metadata:
      labels:
        app: nginx-ingress
    spec:
      containers:
      - name: nginx-ingress
        image: registry.k8s.io/ingress-nginx/controller:v1.8.1
        args:
          - /nginx-ingress-controller
          - --publish-service=$(POD_NAMESPACE)/nginx-ingress-controller
          - --election-id=ingress-controller-leader
        ports:
          - name: http
            containerPort: 80
          - name: https
            containerPort: 443

逐行解释‌:

  1. apiVersion: apps/v1:使用Deployment的API版本
  2. kind: Deployment:声明资源类型为无状态部署
  3. namespace: ingress-nginx:指定命名空间(需提前创建)
  4. replicas: 1:控制器副本数(生产环境建议≥2)
  5. image: registry.k8s.io...:官方Ingress-NGINX镜像
  6. args:启动参数,--publish-service指定服务暴露方式
  7. ports:暴露HTTP(80)和HTTPS(443)端口

ingress资源


apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: demo.example.com
    http:
      paths:
      - path: /app
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 8080

逐行解释‌:

  1. apiVersion: networking.k8s.io/v1:Ingress的API版本
  2. annotations:控制器特定配置(此处为Nginx路径重写)
  3. host: demo.example.com:域名绑定规则
  4. path: /app:URL路径前缀匹配
  5. backend:将流量转发到名为my-service的Service的8080端口

关键操作命令

# 创建命名空间 
kubectl create ns ingress-nginx 
# 部署Controller(需提前下载YAML) 
kubectl apply -f ingress-controller.yaml 
# 应用Ingress规则 
kubectl apply -f my-ingress.yaml 
# 验证状态 
kubectl get ingress -n ingress-nginx 

说明‌:

  • 实际部署前需确保集群已配置StorageClass(如需持久化日志)
  • 生产环境建议通过Helm管理Controller部署
  • 域名需提前解析到集群入口IP(如LoadBalancer的EXTERNAL-IP)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值