How to use nginx ingress TCP service on different namespace [duplicate]
Asked Answered
D

1

6

I have deployed two namespace in the kubernetes cluster. The namespace A host mysql and namespace B run postgress and expose their service deployment on these ports

Namespace(A) - mysql - port (3306)
Namespace(B) - postgress - port (5432)

I need to use nginx-ingress kubernetes cluster to route the traffic based, here is the sample YAML file for the ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: mysql-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: mysql-ingress
    http:
      paths:
      - path: /mysql
        backend:
          serviceName: mysql
          servicePort: 3306

This YAML file is more suitable for HTTP kind of service, How to achieve the TCP service using nginx-ingress

Dimissory answered 1/8, 2019 at 3:20 Comment(1)
#53161247Delative
D
9

You can refer to the following document to expose tcp and udp services.

https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md

In my cluster, the ingress controller is installed on ingress-nginx namespace. You can get the tcp service from configmap.

kubectl get cm -n ingress-nginx tcp-services -o yaml

Basically, you just specify the service for your two databases.

data:
  "3306": NamespaceA/mysql:3306
  "5432": NamespaceB/postgress:5432
Durr answered 1/8, 2019 at 12:38 Comment(2)
Do you have to append the name,port,target port onto the ingress controller like shown in that documentation? If so what is a good way to do that, or best practice.Davilman
@hang du can you please assist me on this issue? It looks similar.. Thank you.. #66190775Heelpiece

© 2022 - 2024 — McMap. All rights reserved.