0
点赞
收藏
分享

微信扫一扫

Istio与Envoy全链路治理

_阿瑶 04-19 06:00 阅读 9

一、服务网格核心价值解析

1.1 微服务治理演进路线

阶段

治理方式

核心能力

代表技术

原始阶段

代码硬编码

基础通信

HTTP Client

中间件阶段

SDK集成

服务发现/负载均衡

Dubbo/Spring Cloud

Sidecar阶段

代理拦截

流量管控/可观测性

Linkerd/Envoy

全网格阶段

控制平面统一管理

跨集群治理/安全策略

Istio/Consul

1.2 Istio核心组件对比

组件

功能定位

关键特性

Envoy

数据平面代理

支持HTTP/2 gRPC、动态配置更新

Pilot

服务发现与流量管理

抽象服务模型、版本路由规则

Citadel

安全认证中心

mTLS自动轮换、RBAC策略管理

Galley

配置校验与分发

配置规范化、多集群同步

Telemetry

可观测性收集

Prometheus/Jeager集成

二、生产级Istio集群部署

2.1 多集群联邦方案

# 主集群配置
istioctl install -f primary-cluster.yaml
# 输出共享CA证书
kubectl get secret cacerts -n istio-system -o jsonpath='{.data}' > cacerts.json

# 从集群配置
istioctl install -f remote-cluster.yaml \
  --set values.global.remotePilotAddress=${PRIMARY_PILOT_IP}
# 注入CA证书
kubectl create secret generic cacerts -n istio-system --from-file=cacerts.json

2.2 精细化资源分配

# istio-operator.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    pilot:
      k8s:
        resources:
          limits:
            cpu: 2000m
            memory: 2Gi
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
          initialDelaySeconds: 5
    ingressGateways:
    - name: istio-ingressgateway
      enabled: true
      k8s:
        service:
          ports:
          - port: 80
            targetPort: 8080
            name: http2
          - port: 443
            targetPort: 8443
            name: https

三、全链路流量治理

3.1 金丝雀发布策略

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: product-vs
spec:
  hosts:
  - product.prod.svc.cluster.local
  http:
  - route:
    - destination:
        host: product.prod.svc.cluster.local
        subset: v1
      weight: 90
    - destination:
        host: product.prod.svc.cluster.local
        subset: v2
      weight: 10
    mirror:
      host: product-shadow.prod.svc.cluster.local
    retries:
      attempts: 3
      retryOn: gateway-error,connect-failure

3.2 故障注入测试

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: payment-test
spec:
  hosts:
  - payment.prod.svc.cluster.local
  http:
  - fault:
      delay:
        percentage:
          value: 30
        fixedDelay: 5s
      abort:
        percentage:
          value: 10
        httpStatus: 503
    route:
    - destination:
        host: payment.prod.svc.cluster.local

四、零信任安全体系

4.1 mTLS双向认证

# 启用全局mTLS
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
spec:
  mtls:
    mode: STRICT

# 特定命名空间例外
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: legacy-ns
  namespace: legacy
spec:
  mtls:
    mode: PERMISSIVE

4.2 细粒度访问控制

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: payment-access
spec:
  selector:
    matchLabels:
      app: payment
  action: ALLOW
  rules:
  - from:
    - source:
        namespaces: ["order"]
    to:
    - operation:
        methods: ["POST"]
        paths: ["/api/v1/pay"]

五、深度可观测性实践

5.1 自定义指标采集

apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  name: custom-metrics
spec:
  metrics:
  - providers:
    - name: prometheus
    overrides:
    - match:
        metric: REQUEST_COUNT
        mode: CLIENT_AND_SERVER
      tagOverrides:
        custom_tag:
          value: "user_agent"
    - match:
        metric: REQUEST_DURATION
      disabled: true

5.2 分布式追踪优化

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: tracing-filter
spec:
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      context: SIDECAR_INBOUND
      listener:
        filterChain:
          filter:
            name: envoy.filters.network.http_connection_manager
    patch:
      operation: INSERT_BEFORE
      value:
        name: envoy.filters.http.router
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
          dynamic_stats: false
          start_child_span: true


举报

相关推荐

0 条评论