
フロントエンド、バックエンド、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 セットアップのサービスが有効になります。