seaweedfs-operator
seaweedfs-operator copied to clipboard
filer ingress support both http port and grpc port for the same host
current host can only support one port under one path.
Is it possible to support both the normal filer port and the filer grpc port? Maybe use load balancer?
AFAIK, multiplexing HTTP and gRPC is possible. But I don't know if an ingress controller supports this. Maybe need refactoring on filer. Maybe a reverse proxy will work?
I implemented HTTP and gRPC multiplexing before. It does not work after some grpc version. So the grpc now is http port + 10000.
Seems it is impossible to open more than one ports on the exact same ingress path. So I think multiplexing is the only way. Have you tried grpc-gateway? etcd uses this and works fine.
grpc-gateway needs to start with a grpc implementation and then generate REST APIs.
How about adding another ingress for the filer grpc port?
seems nginx can support non-http ports https://www.nginx.com/blog/announcing-nginx-ingress-controller-for-kubernetes-release-1-7-0/#tcp-udp
grpc-gateway needs to start with a grpc implementation and then generate REST APIs.
How about adding another ingress for the filer grpc port?
I think that still needs two different paths
grpc-gateway needs to start with a grpc implementation and then generate REST APIs.
How about adding another ingress for the filer grpc port?
I think grpc-gateway also allows you to add custom http endpoints without a grpc definition
grpc-gateway has many limitations. One of them, "True bi-directional streaming.", is a required. There are other similar attempts, but none of them work fluently as the native implementatiion.
Seems we can deploy our own nginx controller, and specify the deployed one in --ingress-class:
https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/#using-multiple-ingress-controllers
That will work. But may not seamlessly integrate with users' own ingress controller. I prefer two-path method, i.e. one path for http and another for grpc
That will work. But may not seamlessly integrate with users' own ingress controller. I prefer two-path method, i.e. one path for http and another for grpc
Two host names? One for http and one for grpc? Doable after some code adjustments.
Current clients, weed mount and HDFS client, would only use filer gRPC API and volume server RESE API. We can simply configure them by host names.
filer.seaweed.abcde.com
grpcfiler.seaweed.abcde.com
volume1.seaweed.abcde.com
volume2.seaweed.abcde.com
volume3.seaweed.abcde.com
The clients need some adjustment to resolve the filer grpc port.