与 ingress-nginx 控制器一起使用时,JupyterHub Helm 图表入口路径给出 404 not found

JupyterHub Helm chart ingress path giving a 404 not found when used with ingress-nginx controller

我正在使用两个 Helm 图表,一个用于 JupyterHub and one for the Ingress-Nginx controller。我正在尝试在我的 JupyterHub 入口对象中设置基于路径的规则,以使控制器路由到各个命名空间。

在 JupyterHub Helm 图表中,我能够在 JupyterHub 环境配置到的同一命名空间中启用入口对象。我还可以在入口对象中设置一个 pathSuffix,例如 /namespace1,我可以用 kubectl describe ingress -n namespace1.

看到它

如果我尝试使用路径访问根 URL 或 URL,我将收到 404 Not Found nginx 错误。

如果我没有在入口对象上设置 pathSuffix,那么我可以访问根 URL 但我假设我进入了一个随机命名空间。

这是kubectl describe ingress -n namespace1

的完整输出
Rules:
  Host                       Path  Backends
  ----                       ----  --------
  <NAME>.com
                             /namespace1   proxy-public:80 (11.1.1.29:8000)
Annotations:                 kubernetes.io/ingress.class: nginx
                                     meta.helm.sh/release-name: jupyterhub
                                     meta.helm.sh/release-namespace: namespace1

我的入口对象上没有启用任何额外的注释,我的入口控制器上唯一设置的是 LoadBalancer IP。

我是否遗漏了控制器的注释或 YAML 配置值等其他内容?

我唯一能想到的是有一个代理服务可以设置为 LoadBalancer IP,但我将其设置为 ClusterIP。这是由于使用了入口控制器,我不想在那里设置外部 IP。这需要是 NodePort 吗?

kubectl get svc -n namespace1

NAME           TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
hub            ClusterIP   11.2.0.140   <none>        8081/TCP   101m
proxy-api      ClusterIP   11.2.0.119   <none>        8001/TCP   101m
proxy-public   ClusterIP   11.2.0.148   <none>        80/TCP     101m
proxy:
  secretToken:
  service:
    type: ClusterIP

解决方案是将 jypyterhub helmchart 的 hub.baseUrl 设置为 /namespace1 in values.yaml file