Running `keepalived` as a DaemonSet will allow managing floating "virtual" IP addresses for Kubernetes services with configured external IP addresses. The main services we want to expose outside the cluster are _ingress-nginx_, Mosquitto, and RabbitMQ. The `keepalived` cluster will negotiate using the VRRF protocol to determine which node should have each external address. Using the process tracking feature of `keepalived`, we can steer traffic directly to the node where the target service is running.
61 lines
978 B
Plaintext
61 lines
978 B
Plaintext
# vim: set sw=4 ts=4 sts=4 et:
|
|
includea /run/keepalived.interface
|
|
|
|
global_defs {
|
|
max_auto_priority 79
|
|
}
|
|
|
|
vrrp_track_process ingress-nginx {
|
|
process nginx-ingress-c
|
|
weight 90
|
|
}
|
|
|
|
vrrp_track_process mosquitto {
|
|
process mosquitto
|
|
weight 90
|
|
}
|
|
|
|
vrrp_track_process rabbitmq {
|
|
process rabbitmq-server
|
|
weight 90
|
|
}
|
|
|
|
vrrp_instance ingress-nginx {
|
|
state BACKUP
|
|
priority 100
|
|
interface ${INTERFACE}
|
|
virtual_router_id 51
|
|
virtual_ipaddress {
|
|
172.30.0.147/28
|
|
}
|
|
track_process {
|
|
ingress-nginx
|
|
}
|
|
}
|
|
|
|
vrrp_instance mosquitto {
|
|
state BACKUP
|
|
priority 100
|
|
interface ${INTERFACE}
|
|
virtual_router_id 52
|
|
virtual_ipaddress {
|
|
172.30.0.148/28
|
|
}
|
|
track_process {
|
|
mosquitto
|
|
}
|
|
}
|
|
|
|
vrrp_instance rabbitmq {
|
|
state BACKUP
|
|
priority 100
|
|
interface ${INTERFACE}
|
|
virtual_router_id 53
|
|
virtual_ipaddress {
|
|
172.30.0.149/28
|
|
}
|
|
track_process {
|
|
rabbitmq
|
|
}
|
|
}
|