J'ai la configuration suivante qui fonctionne lorsque j'essaie <NodeIP>:30080
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app-deployment
spec:
replicas: 3
template:
metadata:
labels:
name: app-node
spec:
containers:
- name: app
image: myregistry.net/repo/app:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
env:
- name: NODE_ENV
value: production
---
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
name: app-node
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30080
type: NodePort
J'essaie d'utiliser un Ingress:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- Host: myhost.com
http:
paths:
- path: /app
backend:
serviceName: app-service
servicePort: 80
myhost.com
fonctionne avec l'écran d'introduction nginx, mais myhost.com/app
donne 404 Not Found
. Où est le problème dans ma configuration?
MISE À JOUR:
- path: /
backend:
serviceName: app-service
servicePort: 80
Si je fais le chemin root, cela fonctionne, mais comment se fait-il /app
non?
Votre définition d'entrée crée des règles qui procurent du trafic à partir de {path}
à la {backend.serviceName}{path}
. Dans votre cas, je pense que la raison pour laquelle cela ne fonctionne pas est que /app
est mandaté par app-service:80/app
mais vous avez l'intention de diffuser du trafic sur le /
racine. Essayez d'ajouter cette annotation à votre ressource d'entrée: nginx.ingress.kubernetes.io/rewrite-target: /
Source: https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/rewrite