使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾讯AI架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值