为应用程序 运行 context-root 编写入口规则
write ingress rule for application running with context-root
我在 k8s 中部署了一个 Web 应用及其相应的后端服务。它们通过服务公开如下:
- Web 应用程序 -> http://1.2.3.4:8080/webapp/login
- 后端 -> http://5.6.7.8:8081/backend-service/login
我已经为这些服务配置了入口资源,但事实证明 NGINX 入口控制器在重写 url 时跳过了上下文根部分,这使得我的服务在通过入口部署时不可用。下面是我的入口资源:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
namespace: default
name: gateway-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/use-regex: true
spec:
rules:
- http:
paths:
- path: /webapp/*
backend:
serviceName: webapp-service
servicePort: 8080
- path: /backend-service/*
backend:
serviceName: backend-service
servicePort: 8081
**Output of : kubectl describe ingress gateway-ingress**
Name: gateway-ingress
Namespace: default
Address: test.elb.us-east-2.amazonaws.com
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/webapp/* webapp-service:8080 (1.2.3.4:8080)
/backend-service/* backend-service:8081 (5.6.7.8:8081)
因此,当我使用 http://test.elb.us-east-2.amazonaws.com/webapp/login 访问我的应用程序时,我收到 404 not found。如何正确配置入口资源?
应用程序上下文删除是由 rewrite-target 注释引起的。如果不需要,请将其删除。
我在 k8s 中部署了一个 Web 应用及其相应的后端服务。它们通过服务公开如下:
- Web 应用程序 -> http://1.2.3.4:8080/webapp/login
- 后端 -> http://5.6.7.8:8081/backend-service/login
我已经为这些服务配置了入口资源,但事实证明 NGINX 入口控制器在重写 url 时跳过了上下文根部分,这使得我的服务在通过入口部署时不可用。下面是我的入口资源:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
namespace: default
name: gateway-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/use-regex: true
spec:
rules:
- http:
paths:
- path: /webapp/*
backend:
serviceName: webapp-service
servicePort: 8080
- path: /backend-service/*
backend:
serviceName: backend-service
servicePort: 8081
**Output of : kubectl describe ingress gateway-ingress**
Name: gateway-ingress
Namespace: default
Address: test.elb.us-east-2.amazonaws.com
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/webapp/* webapp-service:8080 (1.2.3.4:8080)
/backend-service/* backend-service:8081 (5.6.7.8:8081)
因此,当我使用 http://test.elb.us-east-2.amazonaws.com/webapp/login 访问我的应用程序时,我收到 404 not found。如何正确配置入口资源?
应用程序上下文删除是由 rewrite-target 注释引起的。如果不需要,请将其删除。