@Iceforest

Как сделать ingress-nginx в адресе с портом?

странное требование от клиента, хотят чтобы ингресс работал следующим образом
например, клиент набирает адрес test.ru:9090 и попадает в сервис, который висит на порту 8989. Без порта ингресс сделать легко. А как сделать его с портом, если ингресс имеет только 80 и 443 порты?
apiVersion: v1
 kind: Service
 metadata:
   name: web-app
   namespace: web
   labels:
     app: web-app
 spec:
   ports:
   - port: 8989
     targetPort: 8989
     protocol: TCP
   selector:
     app: web-app


rules:
 - host: test.ru
   http:
     paths:
     - path: /
       pathType: Prefix
       backend:
         service:
           name: web-app
           port:
             number: 8989


повторюсь нужно test.ru:9090 попадал в вебапп, а не по 80
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
akelsey
@akelsey
Согласно документации кубернетис, это невозможно (наверняка конечно кто-то и опровергнет, и уже сделал свой велосипед):
An Ingress does not expose arbitrary ports or protocols. Exposing services other than HTTP and HTTPS to the internet typically uses a service of type Service.Type=NodePort or Service.Type=LoadBalancer.


NodePort вам тут тоже не подойдет, остается использовать просто сервис типа LoadBalancer, для этого заказчик должен раскошелится на PublicIP, и там уже любой порт в обход ингреса какой пожелает. (Но это просто возможность, а не то что б я это рекомендовал, может просто обсудить с заказчиком и донести мысль, о неверном выборе технической реализации?).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы