簡體   English   中英

Minikube Ingress(Nginx 控制器)不工作

[英]Minikube Ingress (Nginx Controller) not working

我有一個部署到 minikube 的 Spring Boot 應用程序。 該應用程序有一個公開的獲取映射 -

@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

作為最后一步——

  1. 使用kubectl create -f ingress.yaml在 minikube 集群中創建 Ingress 對象
  2. 並將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它給出了 whiteLabel 錯誤頁面在此處輸入圖片說明

請幫忙。

首先發生了什么:您指定在訪問 URI http://demo.com/demo時希望訪問服務 demo-app-service。 那部分工作正常。 這里的問題是在服務上調用了哪條路徑? 即 URI http://demo.com/demo/ping將請求您的服務中的端點 /demo/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM