Module for managing VIP addresses for services (shturval-vip-provider)

About the service

ParameterDescription
GUI nameVirtual IP address management module. Service Configuration Component
System name (identifier)shturval-vip-provider
Cluster AssignmentManagement of virtual IPs for services (service configuration component based on Kube-VIP). Works in conjunction with shturval-vip (node ​​configuration).
CriticalYes
Public repositoryKube-VIP
Dependenciesshturval-networking
Namespacekube-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:

ParameterDescriptionExample
cidr-globalGlobal subnet for IP addresses of services of any namespace192.168.0.216/29
range-globalGlobal range of IP addresses for services of any namespace192.168.1.220-192.168.1.230
cidr-<namespace>Subnet for IP addresses of services of a specific namespace192.168.0.216/29
range-<namespace>Range of IP addresses for services of a specific namespace192.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/loadbalancerIPs annotation to the Service resource;
  • when creating a Service in the GUI, enter the IP address in the LoadBalancerIP field.