首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Traefik从Go客户端调用gRPC服务(Go-micro)

通过Traefik从Go客户端调用gRPC服务(Go-micro)
EN

Stack Overflow用户
提问于 2020-03-13 10:40:22
回答 1查看 674关注 0票数 1

我使用Go-micro,Docker,Traefik来部署我的服务。我部署了go微服务,并在Traefik注册。这是Traefik仪表板中我的sum(grpc服务)状态。。当我把它放在终端中时,我得到了这一结果,我认为它是二进制的grpc消息。但是当我用这个代码

代码语言:javascript
复制
package main

import (
    "context"
    "fmt"
    proto "gomicro-demo/client/service"
    "google.golang.org/grpc"
    "google.golang.org/grpc/metadata"
    "log"
)

func main() {


    con, err := grpc.Dial("localhost:8080", grpc.WithInsecure())

    if err != nil {
        log.Fatal("Connection error: ", err)
    }

    md := metadata.New(map[string]string{"Host": "sum.traefik"})
    ctx := metadata.NewOutgoingContext(context.Background(), md)

    service := proto.NewSumClient(con)
    res, err2 := service.GetSum(ctx, &proto.Request{})

    if err2 == nil {
        fmt.Println(res)
    } else {
        log.Fatal("Call error:", err2)
    }

}

我得到了这个错误rpc错误: code = Unimplemented = Not : HTTP状态代码404;传输:接收到意外的内容类型“text/;charset=utf-8"。我不知道这个错误是如何发生的,因为地址或grpc元数据(主机头)。请帮我解决这个问题。非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-03 05:57:36

您可以像它一样导出tcp。请使用trefik2,必须安装HostSNI

代码语言:javascript
复制
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
  name: redis
spec:
  entryPoints:
    - redis
  routes:
  - match: HostSNI(`*`)
    services:
    - name: redis
      port: 6379
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60668960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档