Istio 生产级极简全套配置(带逐行注释)
核心生产能力:HTTPS 强制跳转、mTLS 双向加密、超时/重试、熔断降级、连接池限流、负载均衡、内外网统一路由
包含三大核心资源:Gateway(网关)、VirtualService(流量路由)、DestinationRule(流量策略)
一、Istio 完整生产配置(单文件整合)
yaml
# 【1、网关配置】集群流量入口,统一管理域名、HTTPS、端口暴露
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
name: prod-gateway # 生产网关名称
namespace: istio-system # 网关固定部署在istio系统命名空间
spec:
selector:
istio: ingressgateway # 绑定istio官方入口网关组件
servers:
# HTTP端口配置,强制跳转HTTPS
- port:
number: 80
name: http
protocol: HTTP
hosts: ["*"]
tls:
httpsRedirect: true # 生产必备:所有HTTP请求自动跳转HTTPS
# HTTPS加密端口配置
- port:
number: 443
name: https
protocol: HTTPS
hosts: ["api.prod.com"] # 业务生产域名,自行替换
tls:
mode: SIMPLE # 单向TLS,对外提供加密访问
credentialName: prod-tls-secret # k8s证书secret名称,自行替换
---
# 【2、虚拟服务配置】路由分发、超时、重试、跨域、流量权重
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: business-service-vs
namespace: default # 与业务服务同命名空间
spec:
hosts:
- api.prod.com # 对外访问域名
- business-service # 集群内部service名称
gateways:
- prod-gateway # 绑定上方定义的网关
- mesh # 开启集群内部服务网格流量管控
http:
- route:
- destination:
host: business-service # 目标后端服务
subset: v1 # 流量指向v1版本实例
weight: 100 # 100%流量分发到v1版本
timeout: 3s # 单请求超时时间,防止请求堆积
retries:
attempts: 2 # 失败最大重试2次
perTryTimeout: 1s # 单次重试超时时间
retryOn: "5xx,connect-failure" # 仅服务异常、连接失败时重试
corsPolicy: # 生产前端跨域配置
allowOrigins: [{regex: ".*"}]
allowMethods: ["GET","POST","PUT","DELETE","OPTIONS"]
maxAge: 24h
---
# 【3、目标规则配置】负载均衡、连接池限流、熔断、mTLS加密
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: business-service-dr
namespace: default
spec:
host: business-service # 管控的目标服务,与vs保持一致
# 全局流量策略(生产高可用核心)
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN # 轮询负载均衡,均匀分发流量
# 连接池限流:防止单服务连接打爆
connectionPool:
tcp:
maxConnections: 800 # 最大TCP并发连接数
http:
http1MaxPendingRequests: 150 # 最大等待请求数
maxRequestsPerConnection: 8 # 单连接最大请求复用数
# 异常熔断:自动摘除故障实例
outlierDetection:
consecutiveErrors: 4 # 连续4次异常则标记实例故障
interval: 10s # 每10秒扫描一次实例状态
baseEjectionTime: 20s # 故障实例熔断隔离20秒
maxEjectionPercent: 50 # 最多摘除50%实例,避免集群雪崩
# 网格内部mTLS双向加密
tls:
mode: ISTIO_MUTUAL
# 服务版本子集(用于灰度发布)
subsets:
- name: v1
labels:
version: v1 # 匹配pod的label标签
- name: v2
labels:
version: v2二、核心配置极简说明
Gateway:对外暴露端口、绑定域名证书、强制HTTPS,是流量出入口
VirtualService:管控流量路由、权重、超时重试、跨域,负责「流量怎么走」
DestinationRule:管控服务后端策略,负责「流量怎么稳」(限流、熔断、加密、负载均衡)
三、部署命令
kubectl apply \-f istio\-prod\.yaml