2つのシンプルなkubernetesサービスとデプロイを設定しました-フロントエンドとAPI。フロントエンドはAPIからデータを取得するので、APIも公開しているので、フロントエンドのデータフェッチ呼び出しでバックエンドの入力URLをハードコーディングできます(クラスター内でこれを行うより良い方法を誰かが知っている場合は、お知らせください)。
サービスごとに異なるホスト名を設定しようとしていますが、何らかの理由で1つのホスト名しか機能していません。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-webapp-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- Host: test-webapp-frontend.com
http:
paths:
- path: /
backend:
serviceName: test-webapp-frontend-lb
servicePort: 8002
- Host: test-webapp-api.com
http:
paths:
- path: /get
backend:
serviceName: test-webapp-api-lb
servicePort: 8001
そして、これはkubectl get svc
を実行した後に得られるものです
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d
test-webapp-api-lb LoadBalancer 10.107.60.163 <pending> 8001:30886/TCP 1h
test-webapp-frontend-lb LoadBalancer 10.104.100.108 <pending> 8002:31431/TCP 1h
ローカルでminikubeを使用してこのクラスターを実行しています。 minikube service test-webapp-frontend-lb
とminikube service test-webapp-api-lb
を実行すると、フロントエンドとAPIの両方にアクセスできます。
test-webapp-frontend.com
にアクセスすると、フロントエンドページは表示されますが、test-webapp-api.com
にアクセスできません。デフォルトのnot-foundエラーでもありません。URLが存在しないかのようにアクセスできません。
奇妙なことは、これを行うと、
spec:
rules:
- Host: test-webapp-frontend.com
http:
paths:
- path: /
backend:
serviceName: test-webapp-frontend-lb
servicePort: 8002
- Host: test-another-frontend.com
http:
paths:
- path: /
backend:
serviceName: test-webapp-frontend-lb
servicePort: 8002
test-webapp-frontend.com
には引き続きアクセスできますが、test-another-frontend.com
にも同じ問題があり、まったくアクセスできません。
何が悪いのですか?