项目作者: tcfw

项目描述 :
GRPC resolver for Kubernetes service endpoints
高级语言: Go
项目地址: git://github.com/tcfw/go-grpc-k8s-resolver.git
创建时间: 2020-09-28T12:00:48Z
项目社区:https://github.com/tcfw/go-grpc-k8s-resolver

开源协议:MIT License

下载


go-grpc-k8s-resolver

GRPC resolver for Kubernetes service endpoints

PkgGoDev
Go Report Card

Overview

Based off the DNS resolver, rather than making DNS queries, the k8s resolver queries the Kubernetes API for service endpoints matching the service name.

Using a headless service can be slow to update and the reverse proxies in service meshes may increase latency. By using the endpoints Kubernetes, updating the client with new or removing old server endpoints can be much faster.

overview

Example

  1. package main
  2. import (
  3. "log"
  4. pb "github.com/your-username/your-project/protos"
  5. _ "github.com/tcfw/go-grpc-k8s-resolver"
  6. )
  7. func main() {
  8. resolver := "dns"
  9. if os.Getenv("KUBERNETES_SERVICE_HOST") != "" {
  10. resolver = "k8s"
  11. }
  12. resolver.SetDefaultScheme(resolver)
  13. conn, err := grpc.Dial("my-service-name")
  14. if err != nil {
  15. panic(err)
  16. }
  17. defer conn.Close()
  18. client := pb.NewRouteGuideClient(conn)
  19. feature, err := client.GetFeature(context.Background(), &pb.Point{409146138, -746188906})
  20. if err != nil {
  21. panic(err)
  22. }
  23. log.Println(feature)
  24. }