这样做的一种方法是使用grpc.WithInsecure()
,这样您就不必向您的服务添加证书,因为istio-proxy
您的 pod 中的容器将通过 TLS 终止任何传入连接。
客户端:
conn, _ := grpc.Dial("localhost:50051", grpc.WithInsecure())
服务器端:
s := grpc.NewServer()
lis, _ := net.Listen("tcp", "localhost:50051")
// error handling omitted
s.Serve(lis)
如果您仍然需要使用 TLS 进行本地部署等,您可以简单地使用配置选项来指定,例如:
var conn *grpc.ClientConn
var err error
// error handling omitted do not copy paste
if ( config.IstioEnabled ) {
conn, err = grpc.Dial("localhost:50051", grpc.WithInsecure())
} else {
creds, _ := credentials.NewClientTLSFromFile(certFile, "")
conn, err = grpc.Dial("localhost:50051", grpc.WithTransportCredentials(creds))
}
参考。