Istio金丝雀部署和流量镜像

一、金丝雀部署

Istio 的金丝雀发布和 Kubernetes 的金丝雀发布虽然都是用于逐步将新版本应用程序引入生产环境,但它们之间存在一些区别:

  1. 金丝雀发布管理方式

    • Istio 金丝雀发布:Istio 使用流量路由规则和分流功能,在服务之间进行流量分发控制,可以动态地将一部分流量引导到新版本的服务上,监控其性能表现,比如 Istio 的 VirtualService。
    • Kubernetes 金丝雀发布:Kubernetes 金丝雀发布通常采用 Deployment 对象的策略,通过逐步增加新版本 Pod 的副本数量,逐渐降低旧版本 Pod 的副本数量,来实现让新版本逐渐接收更多流量。
  2. 粒度

    • Istio 金丝雀发布:Istio 的金丝雀发布能够在更精细的层面上控制流量的分发,可以基于请求头、标签等条件进行流量路由,实现更灵活和细粒度的控制。
    • Kubernetes 金丝雀发布:Kubernetes 的金丝雀发布通常是根据 Pod 的副本数量来控制流量切换,对于多副本的部署来说,可能缺乏对流量细粒度控制的灵活性。
  3. 依赖性

    • Istio 金丝雀发布:Istio 的金丝雀发布依赖于 Istio 控制平面和 sidecar 代理,需要在 Istio 中配置相应的规则来实现金丝雀发布功能。
    • Kubernetes 金丝雀发布:Kubernetes 金丝雀发布是 Kubernetes 自身的功能,无需额外的服务网格或代理,仅依赖于 Kubernetes 的 Deployment 对象即可实现金丝雀发布。

总的来说,Istio 的金丝雀发布功能更加灵活和强大,可以提供更细粒度的流量控制和管理,但需要依赖 Istio 的服务网格架构。而 Kubernetes 的金丝雀发布功能相对简单直接,适合基本的金丝雀发布需求。
在这里插入图片描述

1、namespace加上label,pod自动注入sidecar

kubectl label ns canary istio-injection=enabled

2、VirtualService制定流量转发规则,将10%流量转到新版本

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: httpserver
spec:
  hosts:
    - httpserver
  http:
  - route:
    - destination:
        host: httpserver
        subset: v1
        weight: 90
    - destination:
        host: httpserver
        subset: v2
        weight: 10
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: httpserver
spec:
  host: httpserver
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

或者匹配HTTP Header,将匹配成功的流量转到新版本,否则转到老版本

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: vservice
spec:
  hosts:
    - httpserver
  http:
    - match:
        - headers:
            user:
              exact: tom
      route:
        - destination:
            host: httpserver
            subset: v2
    - route:
      - destination:
          host: httpserver
          subset: v1

二、流量镜像

流量镜像,也称为影子流量,是一个以尽可能低的风险为生产带来变化的强大的功能。 镜像会将实时流量的副本发送到镜像服务。客户端匹配到请求v1版本的服务,镜像同时会将发往v1服务的请求拷贝发往v2版本,这些被镜像的流量是即发即弃的,就是说镜像请求的响应会被丢弃,不会将v2的响应返回客户端。
在这里插入图片描述

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vservice
spec:
  hosts:
    - httpserver
  http:
    - match:
        - headers:
            user:
              exact: tom
      route:
        - destination:
            host: httpserver
            subset: v1
      mirror:
        host: httpserver
        subset: v2
    - route:
      - destination:
          host: httpserver
          subset: v1

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 10:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 10:18:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 10:18:02       82 阅读
  4. Python语言-面向对象

    2024-02-21 10:18:02       91 阅读

热门阅读

  1. LeetCode23.合并K个升序链表

    2024-02-21 10:18:02       45 阅读
  2. Python在生物信息学中的应用:序列化Python对象

    2024-02-21 10:18:02       47 阅读
  3. 导出docker MySQL中的数据库写一个shell 脚本

    2024-02-21 10:18:02       45 阅读
  4. Python内置函数07——copy

    2024-02-21 10:18:02       49 阅读
  5. 企业内部数据如何进行数据分析

    2024-02-21 10:18:02       57 阅读
  6. MySQL学习Day19——索引的数据结构

    2024-02-21 10:18:02       53 阅读
  7. 使用Discord机器人和Midjourney构建图像生成服务

    2024-02-21 10:18:02       47 阅读
  8. 空指针 postgresql createClob() 方法尚未被实作

    2024-02-21 10:18:02       46 阅读
  9. 提高C++运行效率技巧

    2024-02-21 10:18:02       62 阅读
  10. 快速部署一个深度学习代码教程

    2024-02-21 10:18:02       60 阅读