0
点赞
收藏
分享

微信扫一扫

使用k8s Ingress暴露gRPC服务


全栈工程师开发手册 (作者:栾鹏)

Kubernetes 暴露服务的方式目前只有三种:LoadBlancer Service、NodePort Service、Ingress;前两种估计都应该很熟悉,下面详细的了解下这个 Ingress
注意:ingress属于7层代理,无法处理tcp的问题,需要自己编写configmap

Ingress由两部分组成:Ingress Controller 和 Ingress 服务。

官方:https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#backend-protocol

使用Ingress将gRPC服务暴露到Kubernetes集群外部

这里假设Kubernetes集群中运行一个foo-svc的gRPC Service,以foo-svc为例,将它暴露到集群外部。 从集群外部访问这个服务的域名为foo-svc.frognew.com,需要创建foo-svc.frognew.com的TLS证书的Secret,这里是frognew-tls-secret。

接下来集群中为foo-svc创建下面的Ingress资源即可:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: foo-svc
labels:
app: foo-svc
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
# nginx.ingress.kubernetes.io/grpc-backend: "true" DEPRECATED since nginx ingress 1.8
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: foo-svc.frognew.com
http:
paths:
- path: /
backend:
serviceName: foo-svc
servicePort: 80
tls:
- hosts:
- foo-svc.frognew.com
secretName: frognew-tls-secret

注意这里使用nginx.ingress.kubernetes.io/backend-protocol: "GRPC"来致命ingress后端的Service是gRPC协议。 (在nginx ingress controller 1.8之前的版本使用的是nginx.ingress.kubernetes.io/grpc-backend: “true”)。

关于Nginx Ingress Controller的配置都是通过Annotation实现的,更多配置可参考​​NGINX Ingress Annotations​​。

参考:https://www.jianshu.com/p/189fab1845c5

​​https://www.jianshu.com/p/feeea0bbd73e​​


举报

相关推荐

0 条评论