kubernetes - 使用 Nginx Ingress 将 TCP 流量发送到入口的命名空间
问题描述
我正在使用 Nginx Ingress 控制器打开与带有--tcp-services-configmap=k8s-ingress/k8s-ingress-tcp
标志的 postgres 数据库的连接。该配置图看起来像
apiVersion: v1
data:
"5432": namespace-a/the-postgres-svc:5432
kind: ConfigMap
这部分工作得很好,但是我想在同一个端口上打开另一个服务,5432
到namespace-b/the-postgres-svc:5432
.
有没有办法根据入口资源中的命名空间来选择命名空间?由于如果我只是将该记录添加到“namespace-a”记录之后,数据键将是相同的,因此我无法仅附加到 configmap 数据。
谢谢!
解决方案
因此,您希望在不同名称空间中的同一端口上提供服务。我为这种方法找到了有趣的分步教程。
首先,您应该创建两个命名空间:
apiVersion: v1
kind: Namespace
metadata:
name: namespace-a
apiVersion: v1
kind: Namespace
metadata:
name: namespace-b
比拥有您的服务和部署定义,区别在于name
和namespace
字段:
apiVersion: v1
kind: Service
metadata:
labels:
run: nginx
name: namespacea-nginx
namespace: namespace-a
spec:
ports:
- port: 5432
protocol: TCP
targetPort: 5432
selector:
run: nginx
apiVersion: v1
kind: Service
metadata:
labels:
run: nginx
name: namespaceb-nginx
namespace: namespace-b
spec:
ports:
- port: 5432
protocol: TCP
targetPort: 5432
selector:
run: nginx
部署文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
run: nginx
name: nginx
namespace: namespace-a
spec:
...
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
run: nginx
name: nginx
namespace: namespace-b
spec:
...
最后,Ingress 文件定义:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
namespace: namespace-a
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: namespacea.com
http:
paths:
- backend:
serviceName: namespacea-nginx
servicePort: 5432
path: /
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
namespace: namespace-b
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: namespaceb.com
http:
paths:
- backend:
serviceName: namespaceb-nginx
servicePort: 5432
path: /
推荐阅读
- sql - 递归 CTE 概念混淆
- java - 自定义包装的枚举类型不支持 java.util.TreeSet 集合类型
- ios - 使用 Alamofire 上传图像不成功
- javascript - Firebase 身份验证(电子邮件和密码)未进行身份验证
- javascript - jQuery fileDownload 插件不显示弹出窗口,如何解决这个问题?
- python - PyQt5 使用 runJavaScript 检索表单值
- lyx - 莱克斯。程序列表中某些单词的字母之间的空格
- python-3.x - 如何将二进制 .fits 文件转换为 .csv 文件?
- c# - 触发 HttpClient 的更简单方法(可能没有任务)?
- c# - c# - 以编程方式从 Outlook 电子邮件中删除附件