Module for managing VIP addresses for services (shturval-vip-provider)
About the service
| Parameter | Description |
|---|---|
| GUI name | Virtual IP address management module. Service Configuration Component |
| System name (identifier) | shturval-vip-provider |
| Cluster Assignment | Management of virtual IPs for services (service configuration component based on Kube-VIP). Works in conjunction with shturval-vip (node configuration). |
| Critical | Yes |
| Public repository | Kube-VIP |
| Dependencies | shturval-networking |
| Namespace | kube-vip |
Purpose
shturval-vip-provider - virtual IP address management module (service configuration component) based on Kube-VIP. Provides VIP configuration for services in the cluster. Configuration of nodes for VIP is in the service shturval-vip.
When creating a Service with type LoadBalancer, the component allocates an IP address from a configured CIDR or IP address range. The dedicated IP address is specified in the annotation and the loadBalancerIP parameter of the service.
Deployment and management
shturval-vip-provider is a critical platform service for issuing virtual IP services to services of type LoadBalancer. In the Shturval platform, its inclusion and life cycle in the cluster is ensured by cluster-manager (platform service); the ShturvalServiceConfig (SSC) object for the shturval-vip-provider chart is created and maintained as part of the platform configuration. For correct operation, shturval-networking must be deployed; raising assigned addresses on nodes is performed by shturval-vip (node configuration component).
Recommendation: Do not edit ShturvalServiceConfig manually to change release parameters - use ShturvalServicePatch (SSP). Address pools and IP issuance rules for LoadBalancer are set operationally via ConfigMap kubevip in the namespace kube-system (see section below) - this is configuring an already deployed module, and not replacing a platform installation.
Where to configure
Services and repositories → Installed services → shturval-vip-provider → Manage.
Configuration of available IP addresses
To allocate and assign IP addresses to services of the LoadBalancer type, configure CIDR or a range of IP addresses in ConfigMap kubevip in namespace kube-system.
Go to the namespace kube-system → Storage → ConfigMaps, find the ConfigMap with the name kubevip (if it’s missing, create it) and add a key with the required parameter:
| Parameter | Description | Example |
|---|---|---|
cidr-global | Global subnet for IP addresses of services of any namespace | 192.168.0.216/29 |
range-global | Global range of IP addresses for services of any namespace | 192.168.1.220-192.168.1.230 |
cidr-<namespace> | Subnet for IP addresses of services of a specific namespace | 192.168.0.216/29 |
range-<namespace> | Range of IP addresses for services of a specific namespace | 192.168.1.220-192.168.1.230 |
Example ConfigMap with global CIDR
apiVersion: v1
kind: ConfigMap
metadata:
name: kubevip
namespace: kube-system
data:
cidr-global: 192.168.0.216/29
Example ConfigMap with CIDR for individual namespaces
apiVersion: v1
kind: ConfigMap
metadata:
name: kubevip
namespace: kube-system
data:
cidr-mynamespace: 192.168.0.216/29
range-mynamespace1: 192.168.1.220-192.168.1.230
If an address pool is specified for a namespace, only addresses from it will be assigned to the services of this namespace—the global pool is ignored.
After creating a cluster that does not use an external balancer for Ingress, the IP address of the system Ingress Controller is written to ConfigMap kubevip, for example:
Example ConfigMap for Ingress
apiVersion: v1
kind: ConfigMap
metadata:
name: kubevip
namespace: kube-system
data:
cidr-ingress: 192.168.0.220/32
If necessary, you can manually set an IP address for a service of the LoadBalancer type (even outside the specified range) in one of the following ways:
- add the
kube-vip.io/loadbalancerIPsannotation to the Service resource; - when creating a Service in the GUI, enter the IP address in the LoadBalancerIP field.