【发布时间】:2021-12-13 11:56:34
【问题描述】:
对 Rabbitmq 5672 使用相同的 TCP 端口,并根据基于主机的路由将请求转移到不同的namespaces/rabbitmq_service。
什么有效:
chart: nginx-git/ingress-nginx
version: 3.32.0
values:
- tcp:
5672: "cust1namespace/rabbitmq:5672"
在 nginx.conf 中反映的块:
server {
preread_by_lua_block {
ngx.var.proxy_upstream_name="tcp-cust1namespace-services-rabbitmq-5672";
}
listen :5672;
proxy_pass upstream_balancer;
}
注意:这会将所有来自端口 5672 的请求转移到 cust1namespace/rabbitmq:5672,而与客户端域名无关,并且我们希望基于域名的基于主机的路由。
预期:
chart: nginx-git/ingress-nginx
version: 3.32.0
values:
- tcp:
cust1domainname:5672: "cust1namespace/rabbitmq:5672"
cust2domainname:5672: "cust2namespace/rabbitmq:5672"
错误:
Failed to render chart: exit status 1: Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: [ValidationError(Service.spec.ports[3].port): invalid type for io.k8s.api.core.v1.ServicePort.port: got "string", expected "integer", ValidationError(Service.spec.ports[4].port): invalid type for io.k8s.api.core.v1.ServicePort.port: got "string", expected "integer"]
最终的 nginx.conf 应该如下所示:
server {
preread_by_lua_block {
ngx.var.proxy_upstream_name="tcp-cust1namespace-services-rabbitmq-5672";
}
listen cust1domainname:5672;
proxy_pass upstream_balancer;
}
server {
preread_by_lua_block {
ngx.var.proxy_upstream_name="tcp-cust2namespace-services-rabbitmq-5672";
}
listen cust2domainname:5672;
proxy_pass upstream_balancer;
}
【问题讨论】:
-
发送到入口的
rabbitmq消息使用什么协议?我看到有some options
标签: nginx kubernetes kubernetes-helm kubernetes-ingress