Keepalived is software which provides high availability by assigning two or more nodes a virtual IP and monitoring those nodes, failing over when one goes down.
The Keepalived charm is a subordinate.
Using with Kubernetes (Charmed Kubernetes)
Use keepalived with Charmed Kubernetes to ensure kubeapi-load-balancer is not a single point of failure.
# These instructions assume you've deployed Charmed Kubernetes already: # juju deploy charmed-kubernetes # deploy the keepalived charm juju deploy keepalived # add new keepalived relations juju relate keepalived:juju-info kubeapi-load-balancer:juju-info juju relate keepalived:lb-sink kubeapi-load-balancer:website juju relate keepalived:loadbalancer kubernetes-master:loadbalancer juju relate keepalived:website kubernetes-worker:kube-api-endpoint # remove Charmed Kubernetes relations that are no longer needed juju remove-relation kubernetes-worker:kube-api-endpoint kubeapi-load-balancer:website juju remove-relation kubernetes-master:loadbalancer kubeapi-load-balancer:loadbalancer # NOTE: ensure this relation from Charmed Kubernetes is preserved, so that the # load-balancer knows about backend endpoints juju relate kubernetes-master:kube-api-endpoint kubeapi-load-balancer:apiserver || true # configure keepalived (values are examples, substitute your own) export VIP_HOSTNAME=test.example.com juju config keepalived virtual_ip=10.10.74.250 juju config keepalived port=443 juju config keepalived vip_hostname=$VIP_HOSTNAME # set extra_sans to update api server ssl cert juju config kubeapi-load-balancer extra_sans=$VIP_HOSTNAME juju config kubernetes-master extra_sans=$VIP_HOSTNAME # if you only have one kubeapi-load-balancer unit, add another one juju add-unit kubeapi-load-balancer
This changes kubelet and kubectl to use the VIP to reach the Kubernetes API server.
Using with HA Proxy
juju deploy keepalived juju add-relation haproxy keepalived