5.7.19. Namespace 所有権チェックの無効化
ホストとサブドメインは、最初に要求を作成したルートの namespace が所有します。その namespace で作成された他のルートは、サブドメイン上で要求を作成できます。他の namespace はすべて、請求済みのホストおよびサブドメインに要求を作成することはできません。ホストを所有する namespace は、www.abc.xyz/path1
など、そのホストに関連付けられている全パスも所有します。
たとえば、ホスト www.abc.xyz
がどのルートからも要求されていない場合に、namespace ns1
でホスト www.abc.xyz
を使用してルート r1
を作成すると、namespace ns1
が、ワイルドカードルートのホスト www.abc.xyz
およびサブドメイン abc.xyz
の所有者になります。別の namespace ns2
が別のパス www.abc.xyz/path1/path2
でルートを作成しようとすると、別の namespace (この場合は ns1
) のルートがそのホストを所有しているため、失敗します。
ワイルドカードルートでは、サブドメインを所有する namespace はそのサブドメインに含まれるホストすべてを所有します。上記の例のように、namespace が abc.xyz
というサブドメインを所有する場合には、別の namespace は z.abc.xyz
を要求できません。
namespace の所有権ルールを無効にするには、これらの制限を無効にして、namespace すべてでホスト (およびサブドメイン) を要求できるようにします。
ルーターで namespace の所有権チェックを無効にする場合には、エンドユーザーが namespace に含まれるホストの所有権を要求できるようになる点に注意してください。この設定の変更は、特定の開発環境で価値がありますが、実稼働環境では慎重にこの機能を使用し、クラスターポリシーで、信頼されないエンドユーザーがルートを作成できないようにロックしてください。
たとえば、 ROUTER_DISABLE_NAMESPACE_OWNERSHIP_CHECK=true
では、namespace ns1
が最も古い r1
www.abc.xyz
を作成する場合に、このホスト名 (+ パス) のみを所有します。別の namespace は、このサブドメイン (abc.xyz
) に最も古いルートがなくても、ワイルドカードルートを作成することができ、別の namespace が (foo.abc.xyz
、bar.abc.xyz
、baz.abc.xyz
など) ワイルドカード以外の重複ホストを要求することも可能で、この要求は認められます。
別の namespace (例: ns2
) はルート r2
www.abc.xyz/p1/p2
を作成でき、許可されます。同様に、別の namespace (ns3
) は、サブドメインのワイルドカードポリシーでルート wildthing.abc.xyz
も作成でき、このワイルドカードを所有できます。
この例にあるように、ポリシー ROUTER_DISABLE_NAMESPACE_OWNERSHIP_CHECK=true
は制約がゆるく、namespace 全体の要求を許可します。ルーターが namespace の所有を無効にしているルートを許可できるのは、ホストとパスがすでに請求済みである場合だけです。
たとえば、新規ルート rx
が www.abc.xyz/p1/p2
を要求しようとする場合に、ルート r2
はホストとパスの組み合わせを所有しているので拒否されます。まったく同じホストとパスがすでに請求済みなので、これは、ルート rx
が同じ namespace にある場合も、別の namespace にある場合でも同じです。
この機能は、ルーターの作成時か、またはルーターのデプロイメント設定に環境変数を設定して設定できます。
ルーター作成時に設定
$ oc adm router ... --disable-namespace-ownership-check=true
ルーターデプロイメント設定で環境変数を設定する
$ oc set env dc/router ROUTER_DISABLE_NAMESPACE_OWNERSHIP_CHECK=true