Как использовать входящую TCP-службу nginx в другом пространстве имен

Я развернул два пространства имен в кластере кубернетов. Пространство имен A host mysql и пространство имен B запускают postgress и предоставляют развертывание своих служб на этих портах.

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

Мне нужно использовать кластер nginx-ingress kubernetes для маршрутизации трафика на основе, вот образец файла YAML для входа

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

Этот файл YAML больше подходит для службы HTTP. Как получить службу TCP с помощью nginx-ingress.


person anish    schedule 01.08.2019    source источник
comment
stackoverflow.com/questions/53160747/   -  person Matt    schedule 01.08.2019


Ответы (1)


Вы можете обратиться к следующему документу, чтобы раскрыть службы tcp и udp.

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

В моем кластере контроллер входа установлен в пространстве имен ingress-nginx. Вы можете получить службу tcp из configmap.

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

По сути, вы просто указываете службу для своих двух баз данных.

data:
  "3306": NamespaceA/mysql:3306
  "5432": NamespaceB/postgress:5432
person Hang Du    schedule 01.08.2019
comment
Вы должны добавить имя, порт, целевой порт на входной контроллер, как показано в этой документации? Если да, то какой способ это сделать или передовой опыт. - person mjwrazor; 05.05.2020
comment
@hang du, не могли бы вы помочь мне в этом вопросе? Выглядит похоже .. Спасибо .. stackoverflow.com/questions/66190275/ - person AndreyDonald; 14.02.2021