问题描述
我将一个Spring Boot应用程序部署到mini kube。该应用程序将GET映射公开为-
@GetMapping("/ping")
public String get(){
return "Hello !!";
}
已创建并应用部署和服务。两个都很好,demo-app
容器也在群集中运行。
部署清单
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-app-deployment
labels:
app: demo-app
spec:
selector:
matchLabels:
app: demo-app
replicas: 1
template:
metadata:
labels:
app: demo-app
spec:
imagePullSecrets:
- name: regcred
containers:
- name: demo-app
image: <<image>>
imagePullPolicy: Always
ports:
- containerPort: 8080
服务清单
apiVersion: v1
kind: Service
metadata:
name: demo-app-service
spec:
selector:
app: demo-app
ports:
- protocol: TCP
port: 8080
targetPort: 8080
作为最后一步-
使用kubectl create -f ingress.yaml
在mini kube群集中创建了Inress对象
并将minikube ip
映射到Windows主机文件中的此入口主机demo.com
入境清单
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-app-ingress
spec:
rules:
- host: demo.com
http:
paths:
- path: /demo
backend:
serviceName: demo-app-service
servicePort: 8080
尝试从浏览器访问应用程序时,通过http://demo.com/demo/ping它显示白色标签错误页
请帮帮忙。
推荐答案
首先:您指定了在访问URIhttp://demo.com/demo时希望访问服务demo-app-service。这一部分运行得很好。这里的问题是在服务上调用哪条路径?即URIhttp://demo.com/demo/ping将请求您的服务中的端点/演示/ping。 我猜您的ping服务可以通过端点http://localhost:8080/ping在本地访问。 如果是这种情况,您所需要做的就是向入口添加一个注释,以便从请求中删除/demo路径:
nginx.ingress.kubernetes.io/rewrite-target: /
查看此处以供参考:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#rewrite