ネットワーク リソースを構成する際は、特定の制限があることに注意してください。
タグとラベルの制限
タグには次の制限があります。
- タグ スコープには、128 文字の制限があります。
- タグ値には、256 文字の制限があります。
- 各オブジェクトに最大で 30 個のタグを指定できます。
Kubernetes または OpenShift のアノテーションが NSX-T Data Center のスコープやタグにコピーされる際に字数の制限を超えると、問題が生じる場合があります。たとえば、スイッチ ポート用のタグがあり、これがファイアウォール ルールで使用されている場合、アノテーションのキーや値が字数制限を超えると、スコープまたはタグにすべてコピーされないため、ルールが想定したように適用されないことがあります。
ラベルには次の制限があります。
- 1 つのポッドには、25 個までラベルを付けることができます。
- 1 つのネームスペースには、27 個までラベルを付けることができます。
- 1 つの Ingress Controller ポッドには、24 個までラベルを付けることができます。
ネットワーク ポリシー
NetworkPolicy リソースには次の制限があります。
- podSelector または namespaceSelector で使用できる matchLabels は 4 つまでです。
- ingress from セクションまたは egress to セクションで 1 つの要素に namespaceSelector と podSelector の両方を指定する場合、namespaceSelector で選択できるネームスペースは 5 つまでです。この条件を満たさないとエラーになります。このような指定の例を示します(podSelector の前にハイフンがないことに注意してください)。
- namespaceSelector: matchLabels: project: myproject podSelector: matchLabels: role: db - 入力方向または出力方向のルールの場合、namespaceSelector と podSelector の合計数を 5 以下にする必要があります。たとえば、以下の例ではセレクタの合計が 6 個になっているため、このルールは許可されません。
ingress: - namespaceSelector: matchLabels: project: myproject1 - namespaceSelector: matchLabels: project: myproject2 - namespaceSelector: matchLabels: project: myproject3 - podSelector: matchLabels: role: db - podSelector: matchLabels: role: app - podSelector: matchLabels: role: infra - to.ports セクションの namedPorts に allow-all-egress ネットワーク ポリシーは使用できません。
- matchExpressions フィールドはサポートされていません。
- protocol フィールドに SCTP を含むネットワーク ポリシーは使用できません。
この制限を回避するには、より限定的な matchLabels でネットワーク ポリシーを作成するか、1 つのネットワーク ポリシーを 5 つ以上のセレクタを必要としない複数のネットワーク ポリシーと置き換えます。
ネットワーク ポリシーが NCP でサポートされていない場合、NCP はポリシーにエラーを含む注釈を付けます。エラーを修正してネットワーク ポリシーを更新すると、NCP が再びポリシーを処理するようになります。
ネットワーク ポリシーに出力方向が指定され、入力方向が指定されていない場合は、入力方向のトラフィックにファイアウォール ルールが作成されません。同様に、ネットワーク ポリシーに入力方向が指定され、出力方向が指定されていない場合は、出力方向のトラフィックにファイアウォール ルールが作成されません。