{"repo":"sercand/kuberesolver","free":true,"listed":false,"github":"https://github.com/sercand/kuberesolver","clone":"git clone https://github.com/sercand/kuberesolver.git","description":"Grpc Load Balancer with Kubernetes resolver","language":"Go","stars":639,"topics":["grpc","kubernetes","resolver"],"license":"Apache-2.0","category":"networking-infra","readme_excerpt":"kuberesolver A Grpc name resolver by using kubernetes API. It comes with a small 250 LOC kubernetes client to find service endpoints. Therefore it won't bloat your binaries. USAGE An url can be one of the following, grpc naming docs Please note that the cluster name is not used in resolving the endpoints of a Service. It is only there to support fully qualified service names, e.g. test.default.svc.cluster.local . Using alternative Schema Use RegisterInClusterWithSchema(schema) instead of RegisterInCluster on start. Client Side Load Balancing You need to pass loadBalancingPolicy option to grpc when setting up a new client: This will create subconnections for each available service endpoints. How is this different from dialing to service.namespace:8080 Connecting to a service by dialing to service.namespace:8080 uses DNS and it returns service stable IP. Therefore, gRPC doesn't know the endpoint IP addresses and it fails to reconnect to target services in case of failure. Kuberesolver uses kubernetes API to get and watch service endpoint IP addresses. Since it provides and updates all available service endpoints, together with a client-side balancer you can achive zero downtime deployments. RBAC You need give GET and WATCH access to the endpointslices if you are using RBAC in your cluster. Using With TLS You need to a certificate with name service-name.namespace in order to connect with TLS to your services.","default_branch":null,"files":null,"tree":[],"storefront":"/r/sercand","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/sercand/kuberesolver/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}