Kubernetes Ingress Controller重定向到基本登录路径,不保存指定服务的入口端口或服务路径

时间:2019-12-24 18:33:40

标签: kubernetes kubernetes-ingress nginx-ingress

我正在尝试使用k8s中的入口控制器来访问在集群中运行的Web服务器。我正在使用基于路径的路由入口资源进行测试,并通过访问辅助IP地址进行测试(因为入口正在使用可通过任何工作节点访问的节点端口服务)。

当我访问其他测试Web应用程序(没有登录页面)时,可以按以下方式访问我的服务: http:// {worker-ip}:{ingress-node-port} / {svc-name}

当我尝试访问具有登录页面的应用程序时,输入上述内容后,我将重定向至以下内容: http:// {worker-ip} / vui / login

这显然不能将我重定向到正确的登录页面,并且在屏幕上显示错误。在此过程中,是否有任何方法可以保存路径和端口名称,以便使用正确的服务名称和端口号发送/ vui / login路径?如果我直接输入整个路径,则仍然无法访问该服务。我在想,由于路径已更改为正确的登录页面,但实际上无法访问服务,因此重定向工作到一定程度,然后在URL更改为不使用路径和服务名称后失败。

任何有关入口,基于路径的路由以及将它们与登录页面重定向一起使用的建议,将不胜感激。

下面是我在测试中使用的入口定义:

apiVersion: extensions/v1beta1
kind: Ingress 
metadata: 
  name: test-ingress 
  annotations: ingress.kubernetes.io/rewrite-target: / 
spec: 
  rules: 
  - http: 
      paths: 
      - path: /test1 
      backend: 
        serviceName: test1-service 
        servicePort: 5678 
      - path: /test2 
      backend: 
        serviceName: test2-service 
        servicePort: 5678 
      - path: /test3 
      backend: 
        serviceName: test3-service 
        servicePort: 8080

1 个答案:

答案 0 :(得分:0)

您可以根据情况使用 next URL参数。例如,您输入

A

如果我正确理解了您的问题,这会将您重定向到登录页面。该URL然后成为登录页面URL-

s = df.iloc[[0,2]].sum()
s.loc['A'] = 'Total Exp'
df.loc[len(df.index)] = s
print (df)
           A   B   C
0    Expense   2   3
1      Sales   5   6
2     Travel   8   9
3  Total Exp  10  12

在这种情况下,原始来源的URL不会保留。

因此,我认为您可以在URL中使用 next 参数,并在用户通过身份验证后将路由重定向到该URL。该网址将为-

https://example.com/test3

然后,您可以使用 query-routing 批注-

部署k8s Ingress资源。
https://example.com/vui/login

并在其中添加URL参数的位置添加ConfigMap-

https://example.com/vui/login?next=/test3/