Я пытаюсь найти достойное решение для предоставления моих услуг из кластера Kubernetes, размещенного в локальных контейнерах LX C.
Настройка выглядит следующим образом:
Хост: Ubuntu 18.04 под управлением кластера LX C.
Внутри LX C есть Зачарованное Распределение Kubernetes, на котором запущены мои приложения, и еще один контейнер с обратным прокси NGINX.
I Также я настроил балансировщик нагрузки Metallb внутри kubernetes и использую все службы k8s, для которых нужно inte rnet, отображая как LoadBalancer
:
apiVersion: v1
kind: Service
metadata:
namespace: blazedesk
name: blazedesk-sdeweb-server
labels:
app: blazedesk
spec:
ports:
- port: 80
targetPort: 80
name: "http"
- port: 443
targetPort: 443
name: "https"
selector:
app: blazedesk
tier: sdeweb-server
type: LoadBalancer
Как я это делал до сих пор, было чтобы перенаправить все http и https traffi c, поступающие на главный хост, на обратный прокси-сервер NXGINX:
lxc config device add proxy myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80 proxy_protocol=true
lxc config device add proxy myport443 proxy listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443 proxy_protocol=true
Nginx настроен на перенаправление трафиков c, сопоставляющих DNS-адреса службам k8s external-ips:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/blazedesk-sdeweb-server LoadBalancer 10.152.183.215 10.190.26.240 80:31476/TCP,443:31055/TCP 17d
proxy_pass https://10.190.26.240;
Как вы можете себе представить, эта настройка подразумевает много ручной работы, особенно если сервисы k8s перезапускаются и новые ips распределяются по металлу lb loadbalancer.
Есть ли более простой способ перенаправить трафик c с хостов напрямую на вход kubernetes, каким-то образом минуя слой LX C?