与 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。
我正在使用两个 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。