Подробная инструкция как установить nginx ingress controller на чистый bare metal кластер:
https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
Или по шагам:
- Устанавливаем ingress-nginx service с type NodePort:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml
Проверим, что установка завершена успешно:
kubectl get services -n ingress-nginx
Видим:
ingress-nginx ingress-nginx NodePort 10.245.213.134 <none> 80:31462/TCP,443:30310/TCP 2s
Поздравляем! Nginx контроллер успешно установлен, теперь можем сделать curl до машины с 31462 портом и получим ответ nginx:
$ curl OUR_NODE_IP:31462 <html> <head><title>404 Not Found</title></head> <body> <center><h1>404 Not Found</h1></center> <hr><center>nginx/1.15.6</center> </body> </html>
- Посмотрим какой nginx.conf наш контроллер нам сгенерировал?
kubectl -n ingress-nginx exec nginx-ingress-controller-<pod-id> -- cat /etc/nginx/nginx.conf > ./nginx.conf
Если откроем conf файл мы увидим какую конфигурацию имеет nginx в данный момент.
- Далее мы можем добавлять новые ingress, установленный Nginx controller возьмет на себя функцию обновления conf файла.
- Теперь дело за малым — настроим наш reverse proxy load balancer на порт 31462 (или 30310 для https) наших нод.