Доступ к контроллеру входа nginx через порт 80

Я могу получить доступ к nginx ingress controller на NodePort, Моя цель - получить доступ к контроллеру на port 80,

Выход из kubectl -n ingress-nginx describe service/ingress-nginx

Name:                     ingress-nginx
Namespace:                ingress-nginx
Labels:                   app.kubernetes.io/name=ingress-nginx
                          app.kubernetes.io/part-of=ingress-nginx
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"ingress-nginx","app.kubernetes.io/par...
Selector:                 app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/part-of=ingress-nginx
Type:                     NodePort
IP:                       10.100.48.223
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  30734/TCP
Endpoints:                192.168.0.8:80
Port:                     https  443/TCP
TargetPort:               443/TCP
NodePort:                 https  32609/TCP
Endpoints:                192.168.0.8:443
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

У меня есть несколько идей для решения этой проблемы:

  • перенаправить входящий трафик на порт 30734 на порт 80 через iptables
  • измените диапазон для портов узлов, чтобы порт 80 также мог быть портом узлов

Я не уверен, что это обычные способы сделать это, поэтому я хотел бы услышать, как вы обычно справляетесь с этим. Вероятно, есть еще один необходимый компонент?

2 ответа

Решение

Обычный способ справиться с этим - использовать сервис режима LoadBalancer, который помещает облачный балансировщик нагрузки перед существующим NodePort, чтобы вы могли переназначить обычные порты обратно на него.

Вы должны измениться с NodePort в LoadBalancer введите для вашего сервиса nginx. Пример манифеста выглядит так:

spec:
  ports:
  - name: nginx
    port: 80
    protocol: TCP
    targetPort: 8000 // Your nginx port
  type: LoadBalancer
Другие вопросы по тегам