首页 > 解决方案 > 在 GKE 中为 nginx-ingress 配置 RStudio Server 服务

问题描述

我在 GKE 上有一个 Kubernetes 集群,上面有一个 nginx 入口控制器,用于映射 /rstudio/ 下的 RStudio Server 端点。这工作得很好。

不幸的是,我的一个部署(RStudio Server)无法正常工作,因为它在登录/注销期间使用客户端重定向,在尝试访问 /auth-login 时最终出现 404 错误(应该是 /rstudio/auth-登录)

过去,当使用 RStudio Server 的非容器化安装时,我曾经在前面放置一个 Apache 反向代理来处理 url 重写。

官方的 RStudio Server Pro 指南中,我看到添加此location部分nginx.conf应该可以解决问题。

location /rstudio/ {
  rewrite ^/rstudio/(.*)$ /$1 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;
}

我可以在入口控制器上使用注释来获得相同的结果吗?

标签: google-cloud-platformgoogle-kubernetes-enginerstudio-serverkubernetes-ingressnginx-ingress

解决方案


虽然这不会以相同的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

推荐阅读