我使用Go-micro,Docker,Traefik来部署我的服务。我部署了go微服务,并在Traefik注册。这是Traefik仪表板中我的sum(grpc服务)状态。。当我把它放在终端中时,我得到了这一结果,我认为它是二进制的grpc消息。但是当我用这个代码
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元数据(主机头)。请帮我解决这个问题。非常感谢!
发布于 2020-08-03 05:57:36
您可以像它一样导出tcp。请使用trefik2,必须安装HostSNI
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
name: redis
spec:
entryPoints:
- redis
routes:
- match: HostSNI(`*`)
services:
- name: redis
port: 6379https://stackoverflow.com/questions/60668960
复制相似问题