Configurar um cluster Kuberentes com entrada de balanceamento de carga HTTP para RStudio e Shiny resulta em páginas de erro
Estou tentando criar um cluster no Google Kubernetes Engine que execute nginx, servidor RStudio e dois aplicativos Shiny, seguindo e adaptandoeste guia.
Tenho 4 cargas de trabalho verdes na interface do usuário, implantadas por:
kubectl run nginx --image=nginx --port=80
kubectl run rstudio --image gcr.io/gcer-public/persistent-rstudio:latest --port 8787
kubectl run shiny1 --image gcr.io/gcer-public/shiny-googleauthrdemo:latest --port 3838
kubectl run shiny5 --image=flaviobarros/shiny-wordcloud --port=80
Eles foram todos expostos como portas de nó via:
kubectl expose deployment nginx --target-port=80 --type=NodePort
kubectl expose deployment rstudio --target-port=8787 --type=NodePort
kubectl expose deployment shiny1 --target-port=3838 --type=NodePort
kubectl expose deployment shiny5 --target-port=80 --type=NodePort
..todos são verdes na interface do usuário.
Em seguida, implantei esse back-end do Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: r-ingress
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80
- path: /rstudio/
backend:
serviceName: rstudio
servicePort: 8787
- path: /shiny1/
backend:
serviceName: shiny1
servicePort: 3838
- path: /shiny5/
backend:
serviceName: shiny5
servicePort: 80
O resultado é que o roteamento nginx funciona muito bem, posso ver a página "Bem-vindo ao nginx" em casa, mas os três outros caminhos que recebo:
/ rstudio / -Input/output error
/ shiny1 / - Página não encontrada (a página 404 brilhante)/ shiny5 / - Página não encontrada (a página 404 brilhante)As cargas de trabalho RStudio e Shiny funcionam quando expostas pelo balanceador de carga único, mapeado para 8787 e 3838, respectivamente.
Alguém pode apontar para onde estou errado?
Qs:
Os Dockerfiles precisam ser adaptados para fornecer um status 200 na porta 80 ao solicitar "/"? Preciso alterar o verificador de saúde? Tentei alterar a página de login do RStudio (que 302 para / auth-sign-in, se você não estiver logado), mas sem sorteTanto o RStudio quanto o Shiny precisam de websockets - isso afeta isso?A afinidade da sessão precisa estar ativada? Tentei adicionar isso com IP, mas com os mesmos erros.