2016-08-16 97 views
0

我知道我可以有两种不同的策略时,我想在Openshift部署。的部署策略

  • 滚动式的战略: Openshift等待新的吊舱成为缩减生产豆荚前准备好。

  • 重新创建策略: Openshift将删除旧的实例,并将开始新的实例。获取503 HTTP错误的意思。对于db或两个或更多实例不能共存时。

要恰克部署配置:

oc edit dc/mydeploy-conf -o json 

"spec": { 
    "strategy": { 
     "type": "Recreate/Rolling" 
    }, 

编辑1 - 添加在Openshift V3,但可以 https://github.com/openshift/origin/blob/master/examples/deployment/README.md

不包括策略由克莱顿建议项目GitHub的信息手动完成。

  • 蓝 - 绿部署

蓝绿色的部署涉及在同一时间运行的应用程序的两个版本和旧版本将生产业务到新版本(更多关于蓝光绿色部署)。有几种方法可以在OpenShift中实施蓝绿色部署。

创建示例应用程序

oc new-app openshift/deployment-example:v1 --name=bluegreen-example-old 
oc new-app openshift/deployment-example:v2 --name=bluegreen-example-new 

创建指向旧的服务

oc expose svc/bluegreen-example-old --name=bluegreen-example 

编辑路线的路线的两个副本,改变服务到蓝绿,例如新

oc edit route/bluegreen-example 
  • A/B部署

A/B的部署通常暗示在同一时间进行测试或实验目的运行的应用程序代码或应用程序配置的两个(或更多)的版本。

的A/B的部署最简单形式是分隔两个或更多个不同的碎片之间的生产流量 - 和均匀配置和代码实例的一个组。

更复杂的A/B部署可能涉及专门的代理或负载均衡器,它根据用户或应用程序的信息将流量分配给特定的分片(所有“测试”用户都发送到B分片,但常规用户发送到A分片)。 A/B的部署可以被认为类似于A/B测试,虽然一个A/B部署意味着代码和配置,其中作为A/B测试常常使用一个基本代码与应用特定检查多个版本。

实施例: 一个服务中,多个部署设定

OpenShift,通过标签和部署配置,可以同时支持多个碎片通过相同的服务被暴露。对于使用者来说,碎片是不可见的。最简单的可能的分片的一个例子如下所述:

创建基于示例部署图像

oc new-app openshift/deployment-example --name=ab-example-a --labels=ab-example=true SUBTITLE="shard A" 

编辑新创建的碎片设置标签AB-示例=真,该应用程序的第一碎片将共同所有的碎片:

oc edit dc/ab-example-a 

在编辑器中,添加行AB-例如:“真” spec.selector和spec.template.metadata.labels下方沿着现有的deploymentconfig = AB-例 - 一个标签。保存并退出编辑器。

触发第一个碎片的重新部署,以获取新的标签:

oc deploy ab-example-a --latest 

创建使用通用标签服务:通过

oc expose dc/ab-example-a --name=ab-example --selector=ab-example=true 

让应用程序可用route

oc expose svc/ab-example 

根据相同的s创建第二个分片乌尔斯河形象为第一分片,但不同的标记的形式,并设置一个独特的价值:

oc new-app openshift/deployment-example:v2 --name=ab-example-b --labels=ab-example=true SUBTITLE="shard B" COLOR="red" 

编辑新创建的碎片设置标签AB-例如=真,这将是共同所有的碎片:

oc edit dc/ab-example-b 

在编辑器中,将spec.selector和spec.template.metadata.labels下面的行ab-example:“true”添加到现有deploymentconfig = ab-example-b标签旁边。保存并退出编辑器。

触发第二个碎片的重新部署到拿起新的标签:

oc deploy ab-example-b --latest 

此时,路线下被服务舱的两个集合。但是,由于两个浏览器(通过断开连接)和路由器(默认情况下通过cookie)将尝试保留到后端服务器的连接,因此您可能看不到两个碎片都会返回给您。要强制浏览器以一种或另一种碎片,使用缩放命令:

oc scale dc/ab-example-a --replicas=0 

oc scale dc/ab-example-a --replicas=1; oc scale dc/ab-example-b --replicas=0 

回答