1.
概述与目标
目标说明:部署云 WAF 以保护 Kubernetes 服务免受常见攻击(XSS/SQLi/CC)。
场景假设:生产环境运行在线服务,使用公网域名、CDN 加速与负载均衡。
规模参考:集群初期 3 节点,后期支持弹性扩容到 10+ 节点。
性能指标:期望峰值 10k rps,P95 响应 < 300ms。
合规需求:日志保留 90 天,审计链路到 ELK/Fluentd。
运维目标:引入自动化脚本与 CI/CD 管道,实现零停机发布。
2.
架构设计与关键组件
组件清单:Kubernetes 集群、Ingress(nginx/traefik)、云 WAF(以 sidecar 或 Ingress Controller 形式)、CDN、外部负载均衡。
网络设计:外网 -> CDN -> LB -> Ingress -> Service -> Pod。
安全边界:WAF 放在 Ingress 前或作为 Ingress Controller 的插件,拦截 Layer7 攻击。
高可用设计:WAF Deployment replica=3,Service 使用 ClusterIP+NodePort/LoadBalancer。
监控告警:Prometheus + Alertmanager,关键指标:请求成功率、阻止率、WAF CPU/内存使用率。
3.
自动化部署脚本示例(Shell + kubectl + Helm)
脚本目的:一键部署 WAF Helm Chart、ConfigMap、TLS 证书并验证健康。
关键步骤:1) 准备 kubeconfig;2) helm repo add 并更新;3) helm install/upgrade;4) apply Ingress、ConfigMap;5) 验证 Pod Ready。
配置示例:WAF replica=3,resources.requests.cpu=250m,memory=256Mi;resources.limits.cpu=500m,memory=512Mi。
回滚策略:若就绪探针失败,自动执行 helm rollback 并通知运维。
示例脚本片段:
#!/bin/bash
set -e
HELM_CHART="my-cloud-waf/waf"
RELEASE="cloud-waf"
NAMESPACE="security"
kubectl create ns ${NAMESPACE} || true
helm repo add my-cloud-waf https://charts.example.com
helm repo update
helm upgrade --install ${RELEASE} ${HELM_CHART} -n ${NAMESPACE} \
--set replicaCount=3 \
--set resources.requests.cpu=250m \
--set resources.requests.memory=256Mi
kubectl rollout status deploy/${RELEASE}-controller -n ${NAMESPACE} --timeout=120s
4.
持续交付(CI/CD)集成示例
管道目标:通过 GitLab CI 或 Jenkins 实现代码/配置变更自动部署到 k8s。
阶段设计:lint->build->helm-template->security-scan->deploy->smoke-test。
审计与审批:prod 环境需要人工批准(manual step)。
回滚机制:部署失败触发自动 rollback,并通过钉钉/邮件告警。
示例 GitLab CI job(关键步骤展示):
stages:
- deploy
deploy_waf:
stage: deploy
image: alpine/k8s:latest
script:
- helm repo add my-cloud-waf https://charts.example.com
- helm upgrade --install cloud-waf my-cloud-waf/waf -n security --set replicaCount=3
when: manual
environment:
name: production
5.
真实案例与服务器配置数据示例
案例背景:某在线教育平台,日活 50k,峰值并发请求约 8k rps,采用 k8s + CDN + 云 WAF 结合防护。
集群配置:初期 3 节点,每节点 4 vCPU、16 GB RAM、1 TB NVMe、带宽 1 Gbps。
WAF 配置:Deployment replicas=3,容器镜像 registry.example.com/waf:2.1.0,资源 requests 250m/256Mi,limits 500m/512Mi。
域名与 CDN:域名 www.example-edu.com,使用全球 CDN 节点 200+,缓存命中率 85%。
防护效果:上线 30 天内阻止恶意请求 1.2M 次,峰值阻断速率 12k rps,误判率 <0.1%。
服务器与集群概要表:(下表为示例配置)
6.
运维、监控与 DDoS 防御策略
DDoS 防护:结合 CDN 边缘限流 + LB 层速率限制 + WAF 策略集拦截大流量异常。
弹性扩缩:Horizontal Pod Autoscaler(基于 CPU/请求延迟),节点自动扩容到 10+ 节点。
日志与溯源:WAF 拦截日志写入 Elasticsearch,保留 90 天并支持审计查询。
应急演练:定期演练流量突增场景(模拟 50k rps),验证弹性与黑/白名单策略有效性。
优化建议:1) 细化 WAF 规则;2) CDN 缓存策略优化静态资源;3) 定期漏洞扫描与基线检查。
来源:k8s部署云waf 自动化部署脚本与持续交付集成示例