3.2.12.2. 修改路由器分片
由于路由器分片是基于标签的结构,因此您可以修改标签(通过 oc label
)或选择表达式(通过 oc set env
)。
本节扩展了创建路由器分片一节中启动的示例,演示了如何更改选择表达式。
以下是可修改现有路由器以使用新选择表达式的便捷脚本 modshard :
#!/bin/bash # Usage: modshard ID SELECTION-EXPRESSION... id=$1 shift router=router-shard-$id 1 dc=dc/$router 2 oc scale $dc --replicas=0 3 oc set env $dc "$@" 4 oc scale $dc --replicas=3 5
在 modshard
中,如果 router-shard-<id>
部署策略 是 Rolling
,则不需要 oc scale
命令。
例如,将 router-shard-3
的部门扩展到包含 ops
和 dev
:
$ modshard 3 ROUTE_LABELS='dept in (dev, ops)'
结果是,router-shard-3
现在选择路由 g
— s
(g
— k
和 l
— s
的组合)。
本例考虑了本例中只有三个部门,并指定了一个部门离开分片,从而得到与上例相同的结果:
$ modshard 3 ROUTE_LABELS='dept != finance'
这个示例指定了三个用逗号分开的功能,并只选择路由 b
:
$ modshard 3 ROUTE_LABELS='hw=strong,type=dynamic,geo=west'
与涉及路由标签的 ROUTE_LABELS
类似,您可以使用 NAMESPACE_LABELS
环境变量根据路由命名空间的标签选择路由。本例修改 router-shard-3
以提供命名空间具有标签 frequency=weekly
的路由:
$ modshard 3 NAMESPACE_LABELS='frequency=weekly'
最后一个示例组合了 ROUTE_LABELS
和 NAMESPACE_LABELS
,以选择带有标签 sla=low
的路由,其命名空间具有标签 frequency=weekly
:
$ modshard 3 \ NAMESPACE_LABELS='frequency=weekly' \ ROUTE_LABELS='sla=low'