zoukankan      html  css  js  c++  java
  • OpenShift蓝绿及灰度部署

    内容转自https://blog.csdn.net/jj_tyro/article/details/80136316, 并不断补充,感谢作者.

    1.蓝绿部署

    蓝绿部署实现的是全流量切换,适合于在测试完部署的服务新版本后,最少时间将流量切换到新的服务版本。

     

     切换路由带来的问题是,如果一个请求尚未完成,能否实现graceful switch

    针对服务生成Route

    oc expose service serviceA --name=service
    apiVersion: route.openshift.io/v1
    kind: Route
      name: bluegreen
      namespace: bluegreen
    spec:
      host: service.192.168.42.65.nip.io
      port:
        targetPort: 8080-tcp
      to:
        kind: Service
        name: serviceA
        weight: 100

    在ServiceB测试没有问题的时候把路由切换成B

    # switch service to serviceB
    $ oc patch route/service -p '{"spec":{"to":{"name":"serviceB"}}}'
    
    # switch back to serviceA again
    $ oc patch route/service -p '{"spec":{"to":{"name":"serviceA"}}}'

    2.A/B部署

    A/B部署得名于将应用功能新版本做为整体部署一部分、与旧版本并存线上进行测试的能力。通过这种方式,可以创建一个假定,执行A/B部署,测试假定是正确还是错误,以及回滚到初始应用部署(A)还是继续新版本应用部署(B)

    分别创建route指到各自服务,然后进行测试

    oc expose service serviceAroute --name=serviceA -l name='serviceA'
    oc expose service serviceBroute --name=serviceB -l name='serviceB'

    创建总体路由 serviceRoute,并指定分发策略

    $ oc expose service serviceA --name='serviceroute' -l name='serviceroute'
    $ oc annotate route/serivceroute haproxy.router.openshift.io/balance=roundrobin
    $ oc set route-backends serviceroute serviceA=100 serviceB=0

    可以通过命令调整分发策略

    oc set route-backends serviceroute --adjust serviceB=+10%

    界面上的设置如下

    找到一个Route,然后在TLS下点击Edit

    选择Alernate Service,会出现其他服务,默认的权重是50%,设定权重即可

    3.金丝雀部署

    金丝雀部署是一种类似于A/B部署的技术,可将变更缓慢地向部分用户推出,然后再将其推出到整个基础架构,并提供给所有人使用。

    金丝雀部署策略可以根据具体的场景制定

    • 一个简单的策略是针对随机抽样用户来使用新版本 —— 这是A/B部署策略
    • 将新版本提供给内部测试人员,直接把他们流量导入serviceB路由,以进行测试
    • 在OpenShift里创建一个测试项目做为金丝雀,在测试通过之后再发布
    • 更复杂的方法是根据用户的个人资料和其他人口统计资料选择用户。
  • 相关阅读:
    jquery中,input获得焦点时光标自动定位到文字后面
    微信接口调用
    bootstrap-datetimepicker插件双日期的设置
    input输入框在移动端点击有阴影解决方法
    input输入框光标高度问题
    Appendix 2- Lebesgue integration and Reimann integration
    Appendix 1- LLN and Central Limit Theorem
    LESSON 7- High Rate Quantizers and Waveform Encoding
    LESSON 6- Quantization
    LESSON 5
  • 原文地址:https://www.cnblogs.com/ericnie/p/9740364.html
Copyright © 2011-2022 走看看