[英]kubernetes nginx ingress GRPC for one path
我正在尝试设置nginx kubernetes ingress 。 我目前能够在不同的路线上提供 http 和 websockets 内容。
但是我无法在同一主机上添加 GRPC 路由。 添加此注释nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
会破坏现有路由。
我的 java GRPC 客户端退出Caused by: io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception: First received frame was not SETTINGS. Hex dump for first 5 bytes: 485454502f
Caused by: io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception: First received frame was not SETTINGS. Hex dump for first 5 bytes: 485454502f
根据https://github.com/grpc/grpc-java/issues/2905这意味着请求被视为 HTTP
有没有办法使用 nginx kubernetes 入口在同一主机上拥有 http/websocket/grpc 路由? 或者,是否有另一个入口可以使用它?
由于您希望注释nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
仅适用于主机的某些路由,因此您可以声明两个 Ingress 定义。 第一个用于所有 HTTP 路由,第二个用于 GRPC 路由。
Nginx Ingress Controller 将选择所有 Ingress 定义(带有预期的IngressClass
),并将使用它们来组成nginx.conf
。 这种行为非常适合具有需要在注释中进行不同调整的路径的可能性,例如重写目标,或者在您的情况下,需要不同的后端协议。
特别是,来自 Nginx Controller 文档:
多个 Ingress 可以定义不同的注解。 这些定义不在 Ingress 之间共享。
您可以在文档中查看用于构建nginx.conf
的所有步骤: https://kubernetes.github/#building-the-nginx/how-itworks/#building-the-nginx/how-itworks
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.