ネットワーク リソースを構成する際は、特定の制限があることに注意してください。

タグとラベルの制限

タグには次の制限があります。

  • タグ スコープには、128 文字の制限があります。
  • タグ値には、256 文字の制限があります。
  • 各オブジェクトに最大で 30 個のタグを指定できます。

Kubernetes または OpenShift のアノテーションが NSX のスコープやタグにコピーされる際に字数の制限を超えると、問題が生じる場合があります。たとえば、スイッチ ポート用のタグがあり、これがファイアウォール ルールで使用されている場合、アノテーションのキーや値が字数制限を超えると、スコープまたはタグにすべてコピーされないため、ルールが想定したように適用されないことがあります。

ラベルには次の制限があります。

  • 1 つのポッドには、25 個までラベルを付けることができます。
  • 1 つのネームスペースには、27 個までラベルを付けることができます。
  • 1 つの Ingress Controller ポッドには、24 個までラベルを付けることができます。

ネットワーク ポリシー

NetworkPolicy リソースには次の制限があります。
  • podSelector または namespaceSelector で使用できる matchLabels は 4 つまでです。
  • ingress from セクションまたは egress to セクションで 1 つの要素に namespaceSelectorpodSelector の両方を指定する場合、namespaceSelector で選択できるネームスペースは 5 つまでです。この条件を満たさないとエラーになります。このような指定の例を示します(podSelector の前にハイフンがないことに注意してください)。
    - namespaceSelector:
        matchLabels:
          project: myproject
      podSelector:
        matchLabels:
          role: db
  • 入力方向または出力方向のルールの場合、namespaceSelectorpodSelector の合計数を 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 ネットワーク ポリシーは使用できません。
  • ポリシー モードでは、podSelector または namespaceSelectormatchExpressions を指定する場合、最大で 1 つの In 演算子が許可されます。namespaceSelectorpodSelector の両方を指定する場合は、最大で 1 つの In 演算子をいずれかに指定できます。両方に対して In 演算子を使用することはできません。たとえば、次の仕様は許可されません。
        - namespaceSelector:
            matchExpressions:
            - {key: key1, operator: In, values: [value1]}
          podSelector:
            matchExpressions:
            - {key: key1, operator: In, values: [value1]}
  • マネージャ モードでは、podSelectornamespaceSelector、または namespaceSelectorpodSelector の両方で matchExpressions を指定する場合、In 演算子の数に制限はありません。
  • protocol フィールドに SCTP を含むネットワーク ポリシーは使用できません。

この制限を回避するには、より限定的な matchLabels でネットワーク ポリシーを作成するか、1 つのネットワーク ポリシーを 5 つ以上のセレクタを必要としない複数のネットワーク ポリシーと置き換えます。

ネットワーク ポリシーが NCP でサポートされていない場合、NCP はポリシーにエラーを含む注釈を付けます。エラーを修正してネットワーク ポリシーを更新すると、NCP が再びポリシーを処理するようになります。

ネットワーク ポリシーに出力方向が指定され、入力方向が指定されていない場合は、入力方向のトラフィックにファイアウォール ルールが作成されません。同様に、ネットワーク ポリシーに入力方向が指定され、出力方向が指定されていない場合は、出力方向のトラフィックにファイアウォール ルールが作成されません。

NSX アプリケーション ID ファイアウォール ルールが NCP によって作成されたリソースに適用される場合、「セグメント」と「セグメント ポート」のグループ メンバーシップ基準のみがサポートされます。アプリケーション ID ファイアウォール ルール機能は、NCP が NSX ポリシー API を使用するように構成されている場合にのみサポートされることに注意してください。