Skip to content

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

褚成志 · 简历中心