带有 Ingress 本地镜像配置的 Minikube
Minikube with Ingress local image configuration
当我使用我的 NodePort 服务时,我可以访问我的应用程序。但是当我尝试通过 Ingress 访问它时,我总是得到 HTTP 404。
这张图片中的测试图片 gcr.io/google-samples/hello-app:1.0
不会发生这种情况,我有回应。
这是我的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-backend-deployment
labels:
app: app-backend
spec:
replicas: 1
selector:
matchLabels:
app: app-backend
template:
metadata:
labels:
app: app-backend
spec:
containers:
- name: app-backend
image: go-app-backend
ports:
- containerPort: 8100
imagePullPolicy: Never
我的 NodePort 服务:
apiVersion: v1
kind: Service
metadata:
labels:
app: app-backend-deployment
name: app-backend-svc-nodeport
spec:
type: NodePort
ports:
- port: 8020
protocol: TCP
targetPort: 8100
selector:
app: app-backend
此时,当我调用 $ minikube service church-backend-svc-nodeport --url
时,我得到了我的应用程序运行的地址。
但是当我尝试配置我的应用程序以获取 Ingress 上的路由时,它不起作用:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: app-backend-ingress
spec:
rules:
- host: app-backend.io
http:
paths:
- backend:
serviceName: app-backend-svc-nodeport
servicePort: 8020
path: /backend
但是当我使用示例 hello word 应用程序 (https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/) 进行配置并替换 ingress.yml 中的所有内容时,一切都很好。谁能看看这个并告诉我我做错了什么?
如果我没记错的话,你需要在后端 path: /backend(/|$)(.*)
和元数据 nginx.ingress.kubernetes.io/rewrite-target: /
下放入入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: app-backend-ingress
spec:
rules:
- host: app-backend.io
http:
paths:
- backend:
serviceName: app-backend-svc-nodeport
servicePort: 8020
path: /backend(/|$)(.*)
当我使用我的 NodePort 服务时,我可以访问我的应用程序。但是当我尝试通过 Ingress 访问它时,我总是得到 HTTP 404。
这张图片中的测试图片 gcr.io/google-samples/hello-app:1.0
不会发生这种情况,我有回应。
这是我的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-backend-deployment
labels:
app: app-backend
spec:
replicas: 1
selector:
matchLabels:
app: app-backend
template:
metadata:
labels:
app: app-backend
spec:
containers:
- name: app-backend
image: go-app-backend
ports:
- containerPort: 8100
imagePullPolicy: Never
我的 NodePort 服务:
apiVersion: v1
kind: Service
metadata:
labels:
app: app-backend-deployment
name: app-backend-svc-nodeport
spec:
type: NodePort
ports:
- port: 8020
protocol: TCP
targetPort: 8100
selector:
app: app-backend
此时,当我调用 $ minikube service church-backend-svc-nodeport --url
时,我得到了我的应用程序运行的地址。
但是当我尝试配置我的应用程序以获取 Ingress 上的路由时,它不起作用:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: app-backend-ingress
spec:
rules:
- host: app-backend.io
http:
paths:
- backend:
serviceName: app-backend-svc-nodeport
servicePort: 8020
path: /backend
但是当我使用示例 hello word 应用程序 (https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/) 进行配置并替换 ingress.yml 中的所有内容时,一切都很好。谁能看看这个并告诉我我做错了什么?
如果我没记错的话,你需要在后端 path: /backend(/|$)(.*)
和元数据 nginx.ingress.kubernetes.io/rewrite-target: /
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: app-backend-ingress
spec:
rules:
- host: app-backend.io
http:
paths:
- backend:
serviceName: app-backend-svc-nodeport
servicePort: 8020
path: /backend(/|$)(.*)