gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:51:03 25 4
gpt4 key购买 nike

我正在使用 Go-micro,Docker,Traefik 来部署我的服务。我部署了微服务,并注册了 Traefik This is my sum(grpc service) status in Traefik dashboard。当我在Terminal中 curl 它时,我得到this result,我认为它是二进制的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错误:代码=未实现的desc =未找到:HTTP状态代码404;运输:收到意外的内容类型“文本/纯文本; charset = utf-8” 。由于地址或grpc元数据(主机 header ),我不知道如何发生此错误。请帮助我解决这个问题。非常感谢你!

最佳答案

您可以像这样导出tcp。请使用trefik2,
必须设置HostSNI

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
name: redis
spec:
entryPoints:
- redis
routes:
- match: HostSNI(`*`)
services:
- name: redis
port: 6379

关于docker - 通过Traefik从Go客户端调用gRPC服务(Go-micro),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60668960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com