VIP custom resource definition (CRD)

Last published : Nov 14, 2026
NetScaler provides a Custom Resource Definition (CRD) called VIP for asynchronous communication between NetScaler IPAM controller and NetScaler Ingress Controller.
NetScaler provides IPAM controller for IP address management. NetScaler IPAM controller allocates an IP address to a service from a defined IP address range. NetScaler Ingress Controller configures the IP address allocated to the service as the virtual IP (VIP) address in NetScaler VPX and the service is exposed using this VIP address.
When a new service is created, NetScaler Ingress Controller creates a CRD object for the service without an IP address. NetScaler IPAM controller checks for addition, deletion, or modification to CRD object and updates the CRD object with an IP address. After the CRD object is updated, NetScaler Ingress Controller automatically configures NetScaler-specific configuration in the tier-1 NetScaler VPX.
If every IP address in the requested range is already allocated, NetScaler IPAM controller keeps the VIP object without an IP address (spec.ipaddress remains empty) and records an IPAMPoolExhausted warning event on the object instead of dropping the request. When an IP address in that range is released, the controller assigns it to the oldest waiting VIP object and records an IPAMAllocated event, and NetScaler Ingress Controller configures the VIP automatically, without recreating the service. This applies to the IP address ranges defined in vipRange. Requests for an Infoblox range are not kept pending.
Note:
The VIP CRD is not supported for OpenShift routes. You can use OpenShift ingress to use VIP CRD.

VIP status

NetScaler IPAM controller records the allocation status of a VIP object in the following fields. The kubectl get vip command shows them in the STATUS and MESSAGE columns.
Field Value Meaning
status.state Pending No IP address is free in the requested range. The request waits until an IP address in that range is released.
status.state Allocated An IP address is assigned and set in spec.ipaddress.
status.status_message IPAMPoolExhausted: No free IP in range <range-name>; will retry when one is released The reason when the state is Pending.
status.status_message IPAMAllocated: <IP address> The reason when the state is Allocated.
The status is stored on the VIP object, so it is kept when the IPAM controller restarts. For more information, see Check the allocation status of a VIP.

References