夏日幽灵 サマーゴースト (2021)
K8s Gateway API + Traefik 生产上线 Checklist k8s gateway api traefik checklist Kubernetes Gateway API Traefik 云原生 后端
757 字
4 分钟
K8s Gateway API + Traefik 生产上线 Checklist
先说目标
这篇不讲概念 只给可执行清单 目标是四件事
- 稳定
- 可观测
- 可灰度
- 可回滚
上线前先对齐三个指标
- 可用性目标 例如月可用性
>= 99.95% - 延迟目标 例如
P95 < 120msP99 < 300ms - 恢复目标 例如
RTO 10mRPO 1m
NOTE没有指标就没有上线完成
角色边界清单
- 平台团队负责
GatewayClassGateway - 业务团队负责
HTTPRoute - 跨命名空间引用必须有
ReferenceGrant - 业务命名空间不能直接改核心 Gateway
Traefik 部署清单
高可用
-
replicas >= 2 -
podAntiAffinity已配置 -
PodDisruptionBudget已配置
资源和弹性
-
requests/limits已配置 - HPA 已配置
- 高峰压测已通过
升级策略
-
maxUnavailable: 0 -
maxSurge: 1 - 滚动升级期间无中断
Gateway 治理清单
-
allowedRoutes使用白名单策略 - 生产环境避免直接
from: All - Gateway 命名规范统一
- Route 命名规范统一
示例
apiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata: name: gw-public namespace: infra-gatewayspec: gatewayClassName: traefik listeners: - name: https protocol: HTTPS port: 443 tls: mode: Terminate certificateRefs: - kind: Secret name: wildcard-example-com allowedRoutes: namespaces: from: Selector selector: matchLabels: gateway-access: "true"TLS 清单
- 已启用
80 -> 443强制跳转 - 证书自动签发和续期可用
- 证书过期告警可触达
- TLS 最低版本策略已生效
- 证书 Secret 命名空间正确
证书问题通常不是功能故障 会直接变成线上事故
灰度清单
- 灰度路径已定义
- 权重切流脚本可执行
- 异常阈值已定义
- 自动回滚条件已定义
推荐节奏
1% -> 5% -> 20% -> 50% -> 100%
示例
apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata: name: app-route namespace: appspec: parentRefs: - name: gw-public namespace: infra-gateway hostnames: - api.example.com rules: - matches: - path: type: PathPrefix value: /v1 backendRefs: - name: app-v1 port: 8080 weight: 90 - name: app-v2 port: 8080 weight: 10观测清单
指标
- 网关入口
QPS/RPS -
2xx/4xx/5xx比例 -
P95/P99延迟 - 上游错误率 重试率 超时率
- Traefik Pod CPU 内存 重启次数
日志和追踪
- 访问日志采样已启用
- Request ID Trace ID 已透传
- 错误日志按 Route 聚合
安全清单
- 网关命名空间独立 RBAC
- Traefik 控制面仅内网访问
- 高风险路径有 ACL 或 WAF
- 限流策略已生效
回滚清单
- 旧配置快照已保留
- 回滚脚本可执行
- 灰度观察窗口已约定
- 超阈值自动回滚可触发
- 回滚后验证脚本可执行
回滚流程
- 新入口灰度切流
- 观察
10 ~ 15分钟 - 指标超阈值立即回滚权重
- 必要时切回旧入口
发布日 Runbook
| 阶段 | 动作 | 通过条件 |
|---|---|---|
| T-30m | 配置冻结 | 无临时高风险变更 |
| T-10m | 健康检查 | 核心探针全绿 |
| T+0m | 开始灰度 | 1% 流量成功 |
| T+15m | 提升流量 | 指标稳定 |
| T+45m | 全量切流 | 错误率和延迟在阈值内 |
| T+60m | 结束观察 | 无异常告警 |
结尾
Gateway API 迁移里最关键的不是 YAML 是工程化流程
我的实践重点一直是三件事
- 边界清晰
- 观测完整
- 回滚快速
把这三件事做实 入口层就能长期稳定
K8s Gateway API + Traefik 生产上线 Checklist
https://bangwu.top/posts/k8s-gateway-api-traefik-checklist/