Можно использовать Kubernetes NodePort для работы в качестве внешней службы.
NodePorts предоставит порт на каждом из ваших хостов, который вы можете использовать для доступа к вашему сервису.
Недостатком этого подхода является управление портами.
Приложения не могут предполагать, что HTTPS использует порт 443 или что MySQL работает через порт 3306.
Вместо этого он может жить через порт 32042 в PROD и 32012 в DEV.
Рассмотрите возможность использования NodePort таким образом
зияющая дыра в безопасности кластера, более того, NodePort не может выставлять стандартные номера с низким номером
порты типа 80 и 443.
apiVersion: v1
kind: Service
metadata:
name: my-nodeport-service
spec:
selector:
app: my-app
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30036
protocol: TCP
С помощью ingress вы можете запустить программный балансировщик нагрузки, такой как nginx, выставив его как порт 80/443 на
все ваши хосты и затем контролируют маршрутизацию любого HTTP-трафика к сервисам Kuberbetes.
Это лучше всего подходит для трафика уровня 7, такого как HTTP / HTTPS.
Вы можете попробовать ресурсы Ingress, контроллер Ingress и внешний балансировщик нагрузки.
или общедоступный IP-адрес для включения маршрутизации внешних запросов к внутренним службам на основе путей.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
backend:
serviceName: other
servicePort: 8080
rules:
- host: foo.mydomain.com
http:
paths:
- backend:
serviceName: foo
servicePort: 8080
- host: mydomain.com
http:
paths:
- path: /bar/*
backend:
serviceName: bar
servicePort: 8080
Вдохновленный
think-nodeport-kubernetes и облачный kubernetes nodeport vs ingress статья.