GCPで最新のKubernetesバージョンを使用する(1.6.4
)、次のIngress
定義があります:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myproject
namespace: default
annotations:
ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "gce"
spec:
rules:
- Host: staging.myproject.io
http:
paths:
- path: /poller
backend:
serviceName: poller
servicePort: 8080
これが私のサービスと展開です。
apiVersion: v1
kind: Service
metadata:
name: poller
labels:
app: poller
tier: backend
role: service
spec:
type: NodePort
selector:
app: poller
tier: backend
role: service
ports:
- port: 8080
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: poller
spec:
replicas: 1
template:
metadata:
labels:
app: poller
tier: backend
role: service
spec:
containers:
- name: poller
image: gcr.io/myproject-1364/poller:latest
imagePullPolicy: Always
env:
- name: SPRING_PROFILES_ACTIVE
value: staging
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 8080
私の/etc/hosts
私は次のような行を持っています:
35.190.37.148 staging.myproject.io
ただし、default backend - 404
上のエンドポイントをカールする場合staging.myproject.io
:
$ curl staging.myproject.io/poller/cache/status
default backend - 404
Minikube内でローカルに動作するまったく同じ構成を持っていますが、唯一の違いはドメイン(dev.myproject.io
)、それは魅力のように機能します。
here および here および here からのものを含む、私が見つけることができるほとんどすべてを読んで試してみましたが、たぶん私はちょうど欠けています何か...アイデアはありますか?
IngressがGKEで実際に使用可能になるまで5〜10分かかります。その間、ステータスコード404、502、および500の応答を確認できます。
ここにイングレスチュートリアルがあります: https://cloud.google.com/container-engine/docs/tutorials/http-balancer 従うことをお勧めします。あなたが貼り付けたものに基づいて、私は次のように言うことができます:
ingress.kubernetes.io/rewrite-target
アノテーションについてはわかりませんが、それが問題である可能性があります。200 OK
にGET /
リクエストに応答することを確認してください。curl http://<ip>/
を認識していますが、Ingressの仕様は/poller
エンドポイントのみを処理します。したがって、default backend - 404
のクエリ中に/
応答を受け取るのは正常です。 Ingress仕様で/
パスのバックエンドを設定していません。