NetScaler IPAM Controller を介した動的 IP アドレス割り当て
NetScaler Kubernetes Gateway Controller は、NetScaler IPAM Controller を使用して Kubernetes Gateway リソースの IP アドレス割り当てをサポートします。IPAM が有効になっている場合、
spec.addresses で静的 IP アドレスが設定されていないゲートウェイは、NetScaler IPAM Controller から仮想 IP (VIP) アドレスを自動的に受け取ります。この機能により、各ゲートウェイに IP アドレスを手動で割り当てて追跡する必要がなくなります。
前提条件
NetScaler IPAM Controller を介した動的 IP アドレス割り当てを構成する前に、以下を確認してください。
-
NetScaler Gateway Controller が Helm
values.yamlのipam: Trueとともに展開されていること。詳細については、「NetScaler Kubernetes Gateway Controller の展開」を参照してください。 -
NetScaler IPAM Controller が IP アドレス範囲とともにクラスターに展開されていること。目的の IP アドレス範囲で NetScaler IPAM Controller を展開する方法については、「NetScaler IPAM Controller インストールガイド」を参照してください。
VIP_RANGEを構成する際に、Gateway アノテーションから参照できる名前付き範囲 (例:Production、Staging) と、デフォルトプールとして機能する名前なし範囲を定義できます。
構成
NetScaler IPAM Controller を介した動的 IP アドレス割り当てを構成するには、次の手順を実行します。
ステップ 1: GatewayClass を作成する
NetScaler Kubernetes Gateway Controller 名で GatewayClass を作成します。
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: citrix-gateway-class
spec:
controllerName: citrix.com/nsgc-controller
ステップ 2: Gateway を作成する
spec.addresses なしで Gateway を作成します。NetScaler IPAM Controller は、構成されたプールから IP アドレスを自動的に割り当てます。
基本的な Gateway (デフォルトの IP 範囲)
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: my-gateway
namespace: default
spec:
gatewayClassName: citrix-gateway-class
listeners:
- name: http-listener
protocol: HTTP
port: 80
allowedRoutes:
namespaces:
from: All
名前付き IP 範囲を持つ Gateway
Gatewayに
gateway.citrix.com/ipam-rangeアノテーションを使用して、特定の名前付き範囲からIPアドレスを割り当てます。
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: production-gateway
annotations:
gateway.citrix.com/ipam-range: "Production"
spec:
gatewayClassName: citrix-gateway-class
listeners:
- name: https-listener
protocol: HTTPS
port: 443
allowedRoutes:
namespaces:
from: All
アノテーション内の範囲名は、NetScaler IPAMコントローラーの
VIP_RANGE設定で定義された名前付き範囲と一致する必要があります。
IPアドレスの割り当てを確認する
Gatewayを作成した後、
status.addressesフィールドを確認して、割り当てられたIPアドレスを確認します。
kubectl get gateway my-gateway -o jsonpath='{.status.addresses}'
期待される出力:
[{"type":"IPAddress","value":"10.1.2.1"}]
静的IP 対 IPAM
| 設定 | 動作 |
|---|---|
spec.addressesが設定されている |
NetScaler Kubernetes Gateway Controllerは、指定されたIPアドレスを直接使用します。IPAMは呼び出されません。 |
spec.addressesが省略されている |
IPAMが有効になっている場合、NetScaler Kubernetes Gateway ControllerはNetScaler IPAMコントローラーからIPアドレスを要求します。 |
Gatewayに特定のIPアドレスが必要な場合は、
spec.addressesで明示的に設定します。
spec:
addresses:
- type: IPAddress
value: "10.1.2.50"
アノテーションリファレンス
| アノテーション | スコープ | 説明 |
|---|---|---|
gateway.citrix.com/ipam-range |
ゲートウェイ | NetScaler IPAM Controllerがアドレスを割り当てる、名前付きIPアドレス範囲を指定します。省略した場合、デフォルト(名前なし)の範囲が使用されます。 |
トラブルシューティング
| 症状 | 考えられる原因 | 解決策 |
|---|---|---|
| ゲートウェイがIPアドレスを割り当てられずに保留状態のままになる | NetScaler Kubernetes Gateway Controllerの展開中に、NetScaler IPAMコントローラーが実行されていないか、有効になっていない | NetScaler IPAMコントローラーポッドが実行されていること、およびNetScaler Kubernetes Gateway Controllerのvalues.yamlにipam: Trueが設定されていることを確認します。 |
| 予期された範囲からIPアドレスが割り当てられない | アノテーションの範囲名がNetScaler IPAM構成と一致しない | gateway.citrix.com/ipam-rangeアノテーションの値が、NetScaler IPAMコントローラーのVIP_RANGEにある名前付き範囲と一致することを確認します。 |
| IPプールが枯渇しました | 設定された範囲内のすべてのIPアドレスが割り当てられています | NetScaler IPAM Controllerの設定でVIP_RANGEを拡張するか、未使用のGatewayを解放してください |
spec.addressesが設定されると、GatewayはIPAMなしで動作します |
予期される動作 | 静的アドレスはIPAMをバイパスします。IPAM割り当てを使用するには、spec.addressesを削除してください |
制限事項
-
各Gatewayは、NetScaler IPAM Controllerから単一のVIPを受け取ります。
-
gateway.citrix.com/ipam-rangeアノテーションは、NetScaler IPAMコントローラー設定に存在する範囲名を参照する必要があります。無効な範囲名はIP割り当てを妨げます。 -
アノテーションが省略されている場合、NetScaler IPAM Controllerは、デフォルトの(名前のない)プールからIPを自動的に割り当てます(設定されている場合)。