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
の組み合わせ) を選択します。
この例ではシャードから除外する 1 つの部門を指定します。 このシナリオ例では 3 つの部門しかないため、これによって前述の例と同じ結果が得られます。
$ modshard 3 ROUTE_LABELS='dept != finance'
この例は 3 つのコンマで区切られた属性を指定しており、結果としてルート b
のみが選択されます。
$ modshard 3 ROUTE_LABELS='hw=strong,type=dynamic,geo=west'
ルートのラベルを使用する ROUTE_LABELS
と同様に、NAMESPACE_LABELS
環境変数を使用して、ルートはルートの namespace ラベルのラベルに基づいて選択できます。この例では、ラベル frequency=weekly
を持つルートの namespace を提供するように router-shard-3
を変更します。
$ modshard 3 NAMESPACE_LABELS='frequency=weekly'
最後の例は ROUTE_LABELS
と NAMESPACE_LABELS
を組み合わせて、ラベル sla=low
を持ち、ラベル frequency=weekly
を持つ namespace のルート選択します。
$ modshard 3 \ NAMESPACE_LABELS='frequency=weekly' \ ROUTE_LABELS='sla=low'