En utilisant la dernière version de Kubernetes dans GCP (1.6.4
), J'ai la définition Ingress
suivante:
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
Voici mon service et mon déploiement:
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
Dans mon /etc/hosts
J'ai une ligne comme:
35.190.37.148 staging.myproject.io
Cependant, je reçois default backend - 404
lors du curling d'un point de terminaison sur staging.myproject.io
:
$ curl staging.myproject.io/poller/cache/status
default backend - 404
J'ai exactement la même configuration fonctionnant localement à l'intérieur de Minikube, avec la seule différence étant le domaine (dev.myproject.io
), et cela fonctionne comme un charme.
J'ai lu et essayé à peu près tout ce que j'ai pu trouver, y compris des trucs de ici et ici et ici , mais peut-être que je manque juste quelque chose ... des idées?
Il faut 5 à 10 minutes pour qu'une entrée devienne réellement utilisable dans GKE. En attendant, vous pouvez voir les réponses avec les codes d'état 404, 502 et 500.
Il y a un tutoriel d'entrée ici: https://cloud.google.com/container-engine/docs/tutorials/http-balancer Je recommande de le suivre. Sur la base de ce que vous avez collé, je peux dire ce qui suit:
ingress.kubernetes.io/rewrite-target
annotation, c'est peut-être le problème.200 OK
à GET /
demande.curl http://<ip>/
mais votre spécification Ingress ne gère que /poller
point final. Il est donc normal que vous obteniez default backend - 404
réponse lors de l'interrogation /
. Vous n'avez configuré aucun backend pour /
chemin dans votre spécification Ingress.