K8s Ingress 对照
Caddy 作 Ingress Controller 概念。
25 分钟
K8s Ingress 对照
Kubernetes 集群用 Ingress Controller 做七层路由与 TLS。常见实现是 Nginx Ingress;Caddy 也可作 Ingress Controller。理解裸机 Caddyfile 与 K8s 资源的映射,便于从 ngx-k8s 扩展阅读。
学习目标
- 对照 Caddyfile site/handle 与 Ingress / Service
- 了解 Caddy Ingress Controller 的 TLS 与 path 路由
- 明确 CodeRoadMap 容器化后的推荐入口
核心内容
概念映射
| 裸机 Caddy | Kubernetes |
|---|---|
reverse_proxy backend:8080 | Service backend:8080 |
handle /api/* | Ingress path /api → backend Service |
handle { ... } | Ingress path / → platform Service |
| 自动 ACME / 证书目录 | cert-manager Certificate + Secret tls |
caddy reload | Controller reconcile CRD / Ingress |
Ingress 示例(Nginx Controller,与 Caddy 路由等价)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: coderoadmap
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
tls:
- hosts: [www.coderoadmap.cn]
secretName: coderoadmap-tls
rules:
- host: www.coderoadmap.cn
http:
paths:
- path: /api(/|$)(.*)
pathType: ImplementationSpecific
backend:
service:
name: backend
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: platform
port:
number: 3000
Caddy Ingress Controller 用 Caddyfile 模板 + Ingress 资源 生成配置;path 剥离 /api 等价 uri strip_prefix(caddy-api)。
裸机 vs K8s 选型
- 单机 / Compose:docker-essentials + 宿主机 Nginx 或 Caddy
- 多副本滚动发布:kubernetes-essentials Service + Ingress