{"id":13561950,"url":"https://github.com/kube-vip/kube-vip","last_synced_at":"2025-05-13T17:14:01.936Z","repository":{"id":37477978,"uuid":"237778673","full_name":"kube-vip/kube-vip","owner":"kube-vip","description":"Kubernetes Control Plane Virtual IP and Load-Balancer","archived":false,"fork":false,"pushed_at":"2025-04-21T03:04:51.000Z","size":21036,"stargazers_count":2376,"open_issues_count":83,"forks_count":243,"subscribers_count":27,"default_branch":"main","last_synced_at":"2025-04-25T18:02:47.912Z","etag":null,"topics":["bgp","control-plane","edge","egress","kube-vip","kubernetes","kubernetes-cluster","kubernetes-services","load-balancer","raspberry-pi","service-loadbalancer","vip"],"latest_commit_sha":null,"homepage":"https://kube-vip.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kube-vip.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["kube-vip"]}},"created_at":"2020-02-02T13:54:01.000Z","updated_at":"2025-04-24T08:18:07.000Z","dependencies_parsed_at":"2023-11-21T19:27:35.289Z","dependency_job_id":"1d962516-337c-43e3-9da4-ac025af2ac02","html_url":"https://github.com/kube-vip/kube-vip","commit_stats":{"total_commits":753,"total_committers":107,"mean_commits":7.037383177570093,"dds":0.6520584329349269,"last_synced_commit":"750f78164f79fc30776793aca7350bdb371a50d2"},"previous_names":["plunder-app/kube-vip"],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kube-vip%2Fkube-vip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kube-vip%2Fkube-vip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kube-vip%2Fkube-vip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kube-vip%2Fkube-vip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kube-vip","download_url":"https://codeload.github.com/kube-vip/kube-vip/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990498,"owners_count":21995776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bgp","control-plane","edge","egress","kube-vip","kubernetes","kubernetes-cluster","kubernetes-services","load-balancer","raspberry-pi","service-loadbalancer","vip"],"created_at":"2024-08-01T13:01:02.927Z","updated_at":"2025-05-13T17:13:56.895Z","avatar_url":"https://github.com/kube-vip.png","language":"Go","funding_links":["https://github.com/sponsors/kube-vip"],"categories":["Go","raspberry-pi"],"sub_categories":[],"readme":"# kube-vip\n\nHigh Availability and Load-Balancing\n\n![](https://github.com/kube-vip/kube-vip/raw/main/kube-vip.png)\n\n[![Build and publish main image regularly](https://github.com/kube-vip/kube-vip/actions/workflows/main.yaml/badge.svg)](https://github.com/kube-vip/kube-vip/actions/workflows/main.yaml)\n\n## Overview\nKubernetes Virtual IP and Load-Balancer for both control plane and Kubernetes services\n\nThe idea behind `kube-vip` is a small self-contained Highly-Available option for all environments, especially:\n\n- Bare-Metal\n- Edge (arm / Raspberry PI)\n- Virtualisation\n- Pretty much anywhere else :)\n\n**NOTE:** All documentation of both usage and architecture are now available at [https://kube-vip.io](https://kube-vip.io).\n\n## Features\n\nKube-Vip was originally created to provide a HA solution for the Kubernetes control plane, over time it has evolved to incorporate that same functionality into Kubernetes service type [load-balancers](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer).\n\n- VIP addresses can be both IPv4 or IPv6\n- Control Plane with ARP (Layer 2) or BGP (Layer 3)\n- Control Plane using either [leader election](https://godoc.org/k8s.io/client-go/tools/leaderelection) or [raft](https://en.wikipedia.org/wiki/Raft_(computer_science))\n- Control Plane HA with kubeadm (static Pods)\n- Control Plane HA with K3s/and others (daemonsets)\n- Service LoadBalancer using [leader election](https://godoc.org/k8s.io/client-go/tools/leaderelection) for ARP (Layer 2)\n- Service LoadBalancer using multiple nodes with BGP\n- Service LoadBalancer address pools per namespace or global\n- Service LoadBalancer address via (existing network DHCP)\n- Service LoadBalancer address exposure to gateway via UPNP\n- Egress! Kube-vip will utilise a service loadbalancer as both the ingress and **egress** for a pod. \n- ... manifest generation, vendor API integrations and many more...\n\n## Why?\n\nThe purpose of `kube-vip` is to simplify the building of HA Kubernetes clusters, which at this time can involve a few components and configurations that all need to be managed. This was blogged about in detail by [thebsdbox](https://twitter.com/thebsdbox/) here -\u003e [https://thebsdbox.co.uk/2020/01/02/Designing-Building-HA-bare-metal-Kubernetes-cluster/#Networking-load-balancing](https://thebsdbox.co.uk/2020/01/02/Designing-Building-HA-bare-metal-Kubernetes-cluster/#Networking-load-balancing).\n\n### Alternative HA Options\n\n`kube-vip` provides both a floating or virtual IP address for your kubernetes cluster as well as load-balancing the incoming traffic to various control-plane replicas. At the current time to replicate this functionality a minimum of two pieces of tooling would be required:\n\n**VIP**:\n- [Keepalived](https://www.keepalived.org/)\n- [UCARP](https://ucarp.wordpress.com/)\n- Hardware Load-balancer (functionality differs per vendor)\n\n\n**LoadBalancing**:\n- [HAProxy](http://www.haproxy.org/)\n- [Nginx](http://nginx.com)\n- Hardware Load-balancer (functionality differs per vendor)\n\nAll of these would require a separate level of configuration and in some infrastructures multiple teams in order to implement. Also when considering the software components, they may require packaging into containers or if they’re pre-packaged then security and transparency may be an issue. Finally, in edge environments we may have limited room for hardware (no HW load-balancer) or packages solutions in the correct architectures might not exist (e.g. ARM). Luckily with `kube-vip` being written in GO, it’s small(ish) and easy to build for multiple architectures, with the added security benefit of being the only thing needed in the container.\n\n## Troubleshooting and Feedback\n\nPlease raise issues on the GitHub repository and as mentioned check the documentation at [https://kube-vip.io](https://kube-vip.io/).\n\n## Contributing\n\nThanks for taking the time to join our community and start contributing! We welcome pull requests. Feel free to dig through the [issues](https://github.com/kube-vip/kube-vip/issues) and jump in.\n\n:warning: This project has issue compiling on MacOS, please compile it on linux distribution\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=kube-vip/kube-vip\u0026type=Date)](https://star-history.com/#kube-vip/kube-vip\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkube-vip%2Fkube-vip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkube-vip%2Fkube-vip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkube-vip%2Fkube-vip/lists"}