在 GKE 中为 nginx-ingress 配置 RStudio Server 服务
Configuring RStudio Server service for nginx-ingress in GKE
我在 GKE 上有一个 Kubernetes 集群,它有一个位于顶部的 nginx 入口控制器,用于映射 /rstudio/ 下的 RStudio 服务器端点。这很好用。
不幸的是,我的一个部署(RStudio 服务器)无法正常工作,因为它在 login/logout 期间使用客户端重定向,在尝试访问 /auth-login(它应该是 /rstudio/auth-login)
过去,当使用 RStudio Server 的非容器化安装时,我曾经在前端安装一个 Apache 反向代理来处理 url 重写。
从 official RStudio Server Pro guide 我看到将此 location
部分添加到 nginx.conf
应该可以解决问题。
location /rstudio/ {
rewrite ^/rstudio/(.*)$ / break;
proxy_pass http://localhost:8787;
proxy_redirect http://localhost:8787/ $scheme://$host/rstudio/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 20d;
}
我可以在入口控制器上使用注释来获得相同的结果吗?
虽然这不会以相同的 nginx.conf
内容结束,但它似乎有效。但我不知道它是否会引起一些副作用(仅使用一个 pod atm 进行测试)。
也许其他人会帮助评论关于...的答案
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: rstudio-ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/add-base-url: "true"
nginx.ingress.kubernetes.io/proxy-redirect-from: "$scheme://$host/"
nginx.ingress.kubernetes.io/proxy-redirect-to: "$scheme://$host/rstudio/"
nginx.ingress.kubernetes.io/proxy-read-timeout: 20d
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
spec:
rules:
- http:
paths:
- path: /rstudio/
backend:
serviceName: rstudio
servicePort: 8787
我在 GKE 上有一个 Kubernetes 集群,它有一个位于顶部的 nginx 入口控制器,用于映射 /rstudio/ 下的 RStudio 服务器端点。这很好用。
不幸的是,我的一个部署(RStudio 服务器)无法正常工作,因为它在 login/logout 期间使用客户端重定向,在尝试访问 /auth-login(它应该是 /rstudio/auth-login)
过去,当使用 RStudio Server 的非容器化安装时,我曾经在前端安装一个 Apache 反向代理来处理 url 重写。
从 official RStudio Server Pro guide 我看到将此 location
部分添加到 nginx.conf
应该可以解决问题。
location /rstudio/ {
rewrite ^/rstudio/(.*)$ / break;
proxy_pass http://localhost:8787;
proxy_redirect http://localhost:8787/ $scheme://$host/rstudio/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 20d;
}
我可以在入口控制器上使用注释来获得相同的结果吗?
虽然这不会以相同的 nginx.conf
内容结束,但它似乎有效。但我不知道它是否会引起一些副作用(仅使用一个 pod atm 进行测试)。
也许其他人会帮助评论关于...的答案
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: rstudio-ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/add-base-url: "true"
nginx.ingress.kubernetes.io/proxy-redirect-from: "$scheme://$host/"
nginx.ingress.kubernetes.io/proxy-redirect-to: "$scheme://$host/rstudio/"
nginx.ingress.kubernetes.io/proxy-read-timeout: 20d
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
spec:
rules:
- http:
paths:
- path: /rstudio/
backend:
serviceName: rstudio
servicePort: 8787