《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.10环境中验证

文章目录

  • 基于Revision/Tag/Traffic实现蓝绿部署和恢复发布

基于Revision/Tag/Traffic实现蓝绿部署和恢复发布

  1. 可以为revision打tag,然后在指定–traffic参数的时候使用tag名称区分revision。
$ kn service update hello --tag hello-00002=latest,hello-00001=stable
Updating Service 'hello' in namespace 'knative-demo':0.032s The Route is still working to reflect the latest desired specification.0.111s Ingress has not yet been reconciled.0.143s Waiting for load balancer to be ready0.334s Ready to serve.Service 'hello' with latest revision 'hello-00002' (unchanged) is available at URL:
https://hello-knative-demo.apps.cluster-jzmgb.jzmgb.sandbox866.opentlc.com
  1. 查看hello的Knative Service信息,确认hello-00002和hello-00001都有了tag。
$ kn revision list
NAME          SERVICE   TRAFFIC   TAGS     GENERATION   AGE     CONDITIONS   READY   REASON
hello-00002   hello     50%       latest   2            3h24m   3 OK / 4     True
hello-00001   hello     50%       stable   1            3h51m   3 OK / 4     True
  1. 执行以下命令,再给2个revsion打tag。
$ kn service update hello --tag hello-00002=v2,hello-00001=v1
Updating Service 'hello' in namespace 'knative-demo':0.036s The Route is still working to reflect the latest desired specification.0.179s Ingress has not yet been reconciled.0.205s Waiting for load balancer to be ready0.401s Ready to serve.Service 'hello' with latest revision 'hello-00002' (unchanged) is available at URL:
https://hello-knative-demo.apps.cluster-jzmgb.jzmgb.sandbox866.opentlc.com
  1. 看hello的Knative Service信息,确认hello-00002和hello-00001都多了新的tag。
$ kn revision list
NAME            SERVICE   TRAFFIC   TAGS        GENERATION   AGE   CONDITIONS   READY   REASON
hello-00002   hello     50%       latest,v2   2            8h    3 OK / 4     True
hello-00001   hello     50%       stable,v1   1            8h    3 OK / 4     True
  1. 根据revision的tag分配流量。
$ kn service update hello --traffic v1=10,v2=90
Updating Service 'hello' in namespace 'knative-demo':0.033s The Route is still working to reflect the latest desired specification.0.089s Ingress has not yet been reconciled.0.148s Waiting for load balancer to be ready0.307s Ready to serve.Service 'hello' with latest revision 'hello-00002' (unchanged) is available at URL:
https://hello-knative-demo.apps.cluster-jzmgb.jzmgb.sandbox866.opentlc.com
  1. 查看hello的Knative Serivce的配置,确认流量分配。
$ kn revision list
NAME            SERVICE   TRAFFIC   TAGS        GENERATION   AGE   CONDITIONS   READY   REASON
hello-00002   hello     90%       latest,v2   2            8h    3 OK / 4     True
hello-00001   hello     10%       stable,v1   1            8h    3 OK / 4     True
  1. 再次查看项目中的所有资源。我们可以从对应关系上看到每个Knative Revision对象对应一个OpenShift Deployment对象;每个实际的Knative Revision对应2个OpenShift Service对象(例如service/hello-00002和service/hello-00002-private);每个Knative Revision的Tag会对应一个OpenShift Service对象。
$ oc get all -n knative-demo
NAME                          TYPE           CLUSTER-IP       EXTERNAL-IP                                                  PORT(S)                                      AGE
service/hello                 ExternalName   <none>           kourier-internal.knative-serving-ingress.svc.cluster.local   80/TCP                                       3h55m
service/hello-00001           ClusterIP      172.30.92.110    <none>                                                       80/TCP                                       3h55m
service/hello-00001-private   ClusterIP      172.30.39.193    <none>                                                       80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   3h55m
service/hello-00002           ClusterIP      172.30.239.246   <none>                                                       80/TCP                                       3h28m
service/hello-00002-private   ClusterIP      172.30.250.245   <none>                                                       80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   3h28m
service/latest-hello          ExternalName   <none>           kourier-internal.knative-serving-ingress.svc.cluster.local   80/TCP                                       5m16s
service/stable-hello          ExternalName   <none>           kourier-internal.knative-serving-ingress.svc.cluster.local   80/TCP                                       5m16s
service/v1-hello              ExternalName   <none>           kourier-internal.knative-serving-ingress.svc.cluster.local   80/TCP                                       2m42s
service/v2-hello              ExternalName   <none>           kourier-internal.knative-serving-ingress.svc.cluster.local   80/TCP                                       2m42sNAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/hello-00001-deployment   0/0     0            0           3h55m
deployment.apps/hello-00002-deployment   0/0     0            0           3h28mNAME                                                DESIRED   CURRENT   READY   AGE
replicaset.apps/hello-00001-deployment-69ff74646c   0         0         0       3h55m
replicaset.apps/hello-00002-deployment-7db4b4c569   0         0         0       3h28mNAME                                       CONFIG NAME   K8S SERVICE NAME   GENERATION   READY   REASON   ACTUAL REPLICAS   DESIRED REPLICAS
revision.serving.knative.dev/hello-00001   hello                            1            True             0                 0
revision.serving.knative.dev/hello-00002   hello                            2            True             0                 0NAME                              URL                                                                          READY   REASON
route.serving.knative.dev/hello   https://hello-knative-demo.apps.cluster-jzmgb.jzmgb.sandbox866.opentlc.com   TrueNAME                                      LATESTCREATED   LATESTREADY   READY   REASON
configuration.serving.knative.dev/hello   hello-00002     hello-00002   TrueNAME                                URL                                                                          LATESTCREATED   LATESTREADY   READY   REASON
service.serving.knative.dev/hello   https://hello-knative-demo.apps.cluster-jzmgb.jzmgb.sandbox866.opentlc.com   hello-00002     hello-00002   True
  1. 先删除一个Knative Revision对象,然后再查看项目中的Revision对象列表,发现相同名称的Revsion又被创建出来,说明Revision对象是由OpenShift Deployment对象控制的。
$ kn revision delete hello-00002
$ kn revision list

OpenShift 4 - Knative教程(2) 基于Revision/Tag/Traffic实现蓝绿部署和恢复发布相关推荐

  1. kubernetes基于nginx-ingress进行蓝绿部署、金丝雀发布(canary)

    kubernetes基于nginx-ingress进行蓝绿部署.金丝雀发布(canary) 用户通过负载均衡器访问v1版本,关掉v1版本,接触到v2版本. 在关闭版本a部署版本b,此技术意味着服务的停 ...

  2. OpenShift 4 - Knative教程 (3) 了解Knative Serving的核心对象

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 Knative Serving的核心对象 创建Knative Servin ...

  3. OpenShift 4 - Knative教程 (4) 自动扩展和收缩

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 自动扩展和收缩功能说明 配置自动扩展收缩 配置扩展收缩上下限 自动扩展和收 ...

  4. OpenShift 4 - Knative教程 (1) 创建Serverless运行环境

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 说明 客户端环境 配置Knative环境 安装OpenShift Serv ...

  5. OpenShift 4 - Knative教程 (7) Eventing之Broker和Trigger

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 概念 操作说明 部署Broker 部署Service作为Sink 部署Ev ...

  6. OpenShift 4 - Knative教程 (6) Eventing之Channel和Subscription

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 概念 操作 参考 概念 Knative Eventing中的Channel ...

  7. OpenShift 4 - Knative教程 (5) Eventing之Source和Sink

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 创建 Knative Eventing 环境 配置Source和Sink ...

  8. OpenShift 4 Hands-on Lab (3) - 应用部署和切换策略(蓝绿、金丝雀和A/B、回滚)

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 应用上线部署策略 蓝绿部署 金丝雀发布和A/B测试 通过调整Route权重实 ...

  9. OpenShift 4 Hands-on Lab (8) 基于Gogs+Nexus+Sonarqube的Jenkins CI/CD Pipeline

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在 OpenShift 4.8 环境中验证(OpenShift 4.9 环境的 Jenkins 版本较新,编译 Java 报错 ...

最新文章

  1. 如何让黑白图片恢复“生机”
  2. Shell---for循环
  3. linux中85379端口如何恢复,技术|如何在 Linux/Unix 系统中验证端口是否打开
  4. mysql 启动参数_MySQL启动相关参数 MySQL DBA学习
  5. 简介(CAB和SCSF编程)
  6. Angular formControl指令定义的位置
  7. Google App Engine上的Spring MVC和REST
  8. java work stealing_Java线程池之WorkStealingPool,任务窃取算法
  9. python2.7安装教程选哪个版本运行ride_RobotFramework-RIDE环境搭建二:Robot Framework-RIDE安装过程以及踩雷点...
  10. 在linux中 如何创建磁盘配额,如何在Linux系统中配置磁盘配额?
  11. OpenCV移植到ARM-Linux(Exynos4412)全过程
  12. Linux下的date命令
  13. 计算机usb端口没反应,电脑usb端口没反应怎么办,详细教您如何处理
  14. 小米路由器的linux命令,小米路由器pro安装mt工具箱
  15. 腾达u6无线网卡 linux,腾达u6免驱版驱动下载
  16. 一名待业小生亲身调研揭秘10家大数据培训机构“内幕”
  17. 常见分布的数学期望和方差
  18. 生存分析彭非_21世纪统计学系列教材 生存分析_11396967.pdf
  19. teechart的addarray_C# TeeChart的一些用法
  20. 国内外火控计算机发展水平,关于火控计算机提高可靠性的一些经验

热门文章

  1. python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法
  2. 计算机组成原理R0bus是什么,计算机组成原理实验 堆栈寄存器实验
  3. linux 使用ssr客户端_webpack5.0+SSR尝鲜【排坑记录】
  4. 冬季美食不可少烤肉和火锅,最具诱惑的手绘肉食插画素材,让设计师勾引你的味蕾
  5. 双十一要来了,设计没思路看看案例
  6. 优秀案例快速提升UI设计界面的视觉效果、用户体验
  7. 网站登陆页面设计灵感,UI设计得有这个范儿
  8. everything服务器网页设置,Everything HTTP 服务器设置
  9. js能调用c语言吗,如何从Javascript调用Object-C?
  10. 递归算法详解及测试效率