我有一个在tomcat路径/ app1中运行的应用程序,如何从入口路径访问它?
访问“ /”时,它会提供默认的tomcat 404-找不到页面,而通过/ app1访问时,它会显示“默认后端-404”
我想知道的是: 无论如何,无需使用ngnix的入口控制器就可以配置上下文路径? (只需使用GKE的默认入口控制器)
以下是我的入侵示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gke-my-ingress-1
annotations:
kubernetes.io/ingress.global-static-ip-name: gke-my-static-ip
networking.gke.io/managed-certificates: gke-my-certificate
spec:
rules:
- host: mydomain.web.com
http:
paths:
- path: /
backend:
serviceName: my-service
servicePort: my-port
编辑:服务输出
kubectl get svc
my-service NodePort <IP_REDACTED> <none> 8080:30310/TCP 5d16h
kubectl describe svc my-service
Name: my-service
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-service","namespace":"default"},"spec":{"ports":[{"name"...
Selector: app=my-deployment-1
Type: NodePort
IP: <IP_REDACTED>
Port: my-port 8080/TCP
TargetPort: 8080/TCP
NodePort: my-port 30310/TCP
Endpoints: <IP_REDACTED>:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
这是我的节点端口服务Yaml:
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- name: my-port
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: my-deployment-1
type: NodePort
答案 0 :(得分:1)
不幸的是,当前默认的 GKE Ingress Controller 实现不支持重写目标。仍然存在一个公开的github问题,您可以找到here。
您要实现的目标是将入口路径重写为应用程序公开的某些特定路径,在您的情况下为 Apache Tomcat Web服务器。
是否有可能重新配置您的应用以通过 Apache Tomcat 从主路径提供服务?如果是这样,您可以通过在入口资源中配置以下路径,使其在<IngressLoadBalancerIP>/app1
上可用,如下例所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: default-backend
servicePort: 8080
- path: /app1
backend:
serviceName: my-service
servicePort: 8080
但是不幸的是,您无法以进入<IngressLoadBalancerIP>/app1
时将其重写为<my-service>/app1
的方式来配置重写。
看来,目前唯一的解决方案是安装不同的入口控制器,例如提到的nginx insgress controller。