服务网格
服务网格是微服务架构中的基础设施层,它处理服务之间的通信,提供流量管理、安全、可观测性等功能。
📋 学习目标
完成本教程后,你将能够:
- 理解服务网格的概念和架构
- 了解 Istio 服务网格
- 实现流量管理(路由、负载均衡)
- 实现安全策略(mTLS、认证)
- 实现可观测性(追踪、指标、日志)
- 部署和管理服务网格
🎯 服务网格简介
什么是服务网格
服务网格是微服务架构中的基础设施层,它处理服务之间的通信,提供:
- 流量管理:路由、负载均衡、熔断
- 安全:mTLS、认证、授权
- 可观测性:追踪、指标、日志
- 策略:限流、重试、超时
服务网格架构
应用服务 → Sidecar 代理 → 服务网格控制平面
↓ ↓ ↓
业务逻辑 流量管理 配置管理为什么需要服务网格
优势:
- 解耦:业务代码与基础设施解耦
- 统一:统一的服务间通信
- 可观测:自动收集指标和追踪
- 安全:自动 mTLS 加密
- 策略:统一的策略管理
🔧 Istio 服务网格
什么是 Istio
Istio 是 Google、IBM 和 Lyft 开源的服务网格,提供:
- 流量管理
- 安全策略
- 可观测性
- 策略执行
安装 Istio
bash
# 下载 Istio
curl -L https://istio.io/downloadIstio | sh -
cd istio-*
# 安装 Istio
istioctl install --set profile=demo -y
# 启用自动注入
kubectl label namespace default istio-injection=enabled流量管理
1. 虚拟服务(VirtualService)
yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: jason
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v12. 目标规则(DestinationRule)
yaml
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2安全策略
1. 启用 mTLS
yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
spec:
mtls:
mode: STRICT2. 授权策略
yaml
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: httpbin-policy
spec:
selector:
matchLabels:
app: httpbin
action: ALLOW
rules:
- from:
- source:
principals: ["cluster.local/ns/default/sa/sleep"]可观测性
Istio 自动提供:
- 追踪:分布式追踪(Jaeger)
- 指标:Prometheus 指标
- 日志:访问日志
💡 最佳实践
1. 渐进式采用
- 从单个服务开始
- 逐步扩展到所有服务
- 监控性能影响
2. 性能优化
- 使用 Sidecar 代理
- 优化资源限制
- 监控延迟
3. 安全配置
- 启用 mTLS
- 配置授权策略
- 定期更新
🚀 总结
服务网格是微服务架构中的重要基础设施,通过 Istio,我们可以:
- 统一管理:统一的服务间通信
- 增强安全:自动 mTLS 和授权
- 提升可观测性:自动收集指标和追踪
- 简化运维:集中管理策略
📚 扩展阅读
⏭️ 下一步
完成微服务学习后,可以进入:
🎉 恭喜! 你已经掌握了服务网格的基础知识。继续学习,构建更强大的微服务系统!
