Не знаю, решите ли вы проблему, но я сделал это, поэтому я хотел бы поделиться с вами своим решением, которое работает для меня.
Вы можете сделать это двумя способами:
1-й) Создав балансировщик нагрузки, где вы предоставляете внешний сервис.
Я предполагаю, что вы уже создали пространство имен с именем sock-shop, поэтому любая дальнейшая команда должна указывать и ссылаться на это пространство имен.
Если вы наберете и выполните команду:
kubectl get services --namespace=sock-shop
Вы должны увидеть список всех сервисов, включенных в службу, называемую front-end. Итак, теперь вы хотите представить этот сервис не как NodePort, а как LoadBalancer. Итак, выполните команду:
kubectl expose service front-end --name=front-end-lb --port=80 --target-port=8079 --type=LoadBalancer --namespace=sock-shop
После этого дайте некоторое время, и вы сможете получить доступ к интерфейсу магазина носков через публичный IP-адрес (ephimeral)
2-й) Более продвинутый способ - настройка Ingress Load Balancer.
Вам необходимо настроить другой файл yaml, поместить этот код внутрь и запустить его, как вы делали с предыдущим файлом .yaml.
nano basic-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace : sock-shop
name: basic-ingress
spec:
backend:
serviceName: front-end
servicePort: 80
kubectl apply -f basic-ingress.yaml --namespace=sock-shop
Найдите публичный IP-адрес с помощью этой команды, и через максимум 15 минут вы сможете получить доступ к Sock Shop.
kubectl get ingress --namespace=sock-shop