全书目录

第十一篇:Kubernetes 完全指南 —— 星际舰队宇宙

第七章:Ingress —— 舰队对外的星港关口

1 分钟 425 字 第 230 / 962 个阅读单元

Service 解决的是“集群内怎么找到一组 Pod”。
那外部用户从浏览器里访问 app.example.com 怎么进来?

这就是 Ingress 干的事。

你可以把它想成:

整支舰队对外开放的星港关口,按域名、路径,把来船分流到不同 Service。

text
Internet
   │
   ▼
Ingress
   ├── app.example.com/        -> city-web-svc:80
   └── api.example.com/        -> city-api-svc:8080

一个最简单的 Ingress:

yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: city-ingress
spec:
  ingressClassName: nginx
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: city-web-svc
                port:
                  number: 80

如果要 TLS:

yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: city-ingress
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - app.example.com
      secretName: app-example-com-tls
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: city-web-svc
                port:
                  number: 80

这里最容易犯的错是:

“我已经创建 Ingress 了,为什么没生效?”

因为 Ingress 资源本身不会自动工作,你必须有 Ingress Controller
只建对象,不装控制器,等于只贴了关口图纸,没修闸机。

再补一个 2026-03-28 时点的重要事实:

  • 官方仍保留 Ingress
  • 但官方已经明确推荐新能力优先看 Gateway API
  • Ingress API 处于冻结状态,不再继续扩展新特性

所以今天的实务建议是:

  • 学会 Ingress,因为大量存量集群都在用
  • 新建设计要知道 Gateway API 才是未来路线