nginx-ingress基于gRPC协议通信
此文档演示如何通过nginx-ingress将流量路由到gRPC服务上。
环境
环境 | 版本 |
---|---|
kubernetes | 1.17.4 |
Rancher | v2.4.5 |
nginx-ingress | 0.25.1 |
示例
以下gRPC应用基于ingress自带的示例,您也可以使用自己的gRPC应用进行测试
地址:https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/grpc
- 部署一个gRPC应用
该应用程序通过go实现gRPC服务,并监听50051端口
1 | # cat app.yaml |
- 部署service,通过selector选择对应label的pod
1 | # cat svc.yaml |
- 部署ingress
这里主要设置这个参数来使用gRPC协议:nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
还配置了SSL证书,默认使用ingress颁发的证书
1 | # cat ingress.yaml |
- kubectl执行以上文件
1 | # kubectl apply -f app.yaml |
- 使用grpcurl测试应用
grpcurl命令下载地址如下:https://github.com/fullstorydev/grpcurl/releases
例如下载 grpcurl_1.6.1_linux_x86_64.tar.gz
1 | # wget https://github.com/fullstorydev/grpcurl/releases/download/v1.6.1/grpcurl_1.6.1_linux_x86_64.tar.gz |
测试基于ingress访问gRPC应用(示例中,message的值会不一样)
1 | # grpcurl -insecure fortune-teller.stack.build:443 build.stack.fortune.FortuneTeller/Predict |