Ingress は Minikube で「デフォルトのバックエンド - 404」を返します

Ingress は Minikube で「デフォルトのバックエンド - 404」を返します

フロントエンド、バックエンド、DB サービスを備えた非常にシンプルな Kubernetes クラスターをセットアップしようとしています。以下はフロントエンド サービス定義ファイルの一部です。

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    tier: frontend
spec:
  selector:
    tier: frontend
  ports:
  - port: 80
    nodePort: 30080
  type: LoadBalancer

ポート 30080 でクラスターの IP にアクセスすると、すべてが正常に動作します。

現在、ポート 80 で動作する Ingress を設定しようとしています (クラスターを Azure にデプロイする準備として)。これがクラスター内の唯一の HTTP サービスであるため、すべての HTTP トラフィックをフロントエンドに転送したいと考えています。そのため、Ingress 定義ファイルは次のようになります。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: zippori
  annotations:
    kubernetes.io/ingress.class: addon-http-application-routing
spec:
  backend:
    serviceName: frontend
    servicePort: 80

しかし、アクセスするとhttp://minikube-ip次のような非常に単純なエラーが発生します。

デフォルトのバックエンド - 404

Ingress はフロントエンドに何も転送せず、独自のデフォルトのバックエンドを試行するだけのようです。

これをどうすれば修正できますか?

答え1

問題は Ingress サービスにあります。

Ingress kind yamlでは、アノテーションを使用して「ingress backend」を定義しています。AKSの場合は「addon-http-application-routing」ですが、minikubeの場合はそのまま使用できるのは次のようになります。kubernetes.io/ingress.class: nginx

適切なアノテーションを使用して Ingress を更新すると、minikube セットアップのサービスが有効になります。

関連情報