web-dev-qa-db-ja.com

Kubernetes Ingressの非ルートパス404が見つかりません

私は<NodeIP>:30080

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: app-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        name: app-node
    spec:
      containers:
        - name: app
          image: myregistry.net/repo/app:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          env:
            - name: NODE_ENV
              value: production
---
apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  selector:
    name: app-node
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080
  type: NodePort

私はイングレスを使用しようとしています:

 apiVersion: extensions/v1beta1
 kind: Ingress
 metadata:
   name: nginx-ingress
 spec:
   rules:
   - Host: myhost.com
     http:
       paths:
       - path: /app
         backend:
           serviceName: app-service
           servicePort: 80

myhost.comはnginxイントロ画面で動作しますが、myhost.com/app404 Not Found。セットアップの問題はどこにありますか?


更新:

   - path: /
     backend:
       serviceName: app-service
       servicePort: 80

ルートパスを実行すると動作しますが、どうして/appしませんか?

6
atkayla

イングレス定義は、{path}から{backend.serviceName}{path}へのトラフィックをプロキシするルールを作成します。あなたの場合、それが機能しない理由は、/appapp-service:80/appにプロキシされているが、/ルートでトラフィックを提供しようとしているからだと思います。次の注釈をイングレスリソースに追加してみてください:nginx.ingress.kubernetes.io/rewrite-target: /

ソース: https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/rewrite

10
brandon-barnett