Как настроить входной контроллер чистого металла Kubernetes для прослушивания порта 80?
У меня есть настройка kubernetes с 1 ведущим и 1 ведомым, размещенная на DigitalOcean Droplets. Для выставления моих услуг я хочу использовать Ingresses.
Так как у меня железная установка, я должен настроить свой собственный входной контроллер.Как мне заставить его слушать порт 443 или 80 вместо диапазона 30000-32767?
Для настройки входного контроллера я использовал это руководство: https://kubernetes.github.io/ingress-nginx/deploy/
Мой сервис контроллера выглядит так:
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: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
- name: https
port: 443
targetPort: 443
protocol: TCP
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
И теперь, очевидно, поскольку диапазон NodePort составляет 30000-32767, этот контроллер не отображается на порт 80 или 443:
➜ kubectl get services --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx ingress-nginx NodePort 10.103.166.230 <none> 80:30907/TCP,443:30653/TCP 21m
2 ответа
Я согласен с @Matthew L Daniel, если вы не планируете использовать внешний балансировщик нагрузки, лучшим вариантом будет совместное использование сетевого интерфейса хоста с ingress-nginx
Под включением hostNetwork
опция в спецификации стручков:
template:
spec:
hostNetwork: true
Таким образом, контроллер NGINX Ingress может связывать порты 80 и 443 непосредственно с узлами Kubernetes без привязки специальных прокси-портов (30000-32767) к вложенным службам. Найти больше информации здесь.
Вы не можете привязать входящий сервис к порту 80. Вы можете запустить HAProxy на хосте и перенаправить порт 80,443, запросив номер порта входящего сервиса.