首页 > 解决方案 > 如何使用 nginx-ingress 使用 tcp 公开多个服务?

问题描述

比方说:

apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx-private
data:
3389: “demo/rdp:3389”`

将公开一个“rdp”服务。如果我们有 10 个服务需要以相同的方式公开,那么我们如何实现呢?

标签: kubernetestcpkubernetes-ingressnginx-ingressconfigmap

解决方案


正如这里的 nginx 入口文档所述:user-guide/exposing-tcp-udp-services

您需要编辑配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  9000: "default/example-0:8080" 
  9001: "default/example-1:8080" 
  9002: "default/example-2:8080" 

和 nginx 入口服务:

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: LoadBalancer
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
    - name: proxied-tcp-9000  
      port: 9000
      targetPort: 9000
      protocol: TCP
    - name: proxied-tcp-9001  
      port: 9001
      targetPort: 9001
      protocol: TCP
    - name: proxied-tcp-9002  
      port: 9002
      targetPort: 9002
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

您可以根据需要添加任意数量的端口。请记住,一个端口只能使用一次。


推荐阅读