私は<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
私はイングレスを使用しようとしています:
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
はnginxイントロ画面で動作しますが、myhost.com/app
は404 Not Found
。セットアップの問題はどこにありますか?
更新:
- path: /
backend:
serviceName: app-service
servicePort: 80
ルートパスを実行すると動作しますが、どうして/app
しませんか?
イングレス定義は、{path}
から{backend.serviceName}{path}
へのトラフィックをプロキシするルールを作成します。あなたの場合、それが機能しない理由は、/app
がapp-service:80/app
にプロキシされているが、/
ルートでトラフィックを提供しようとしているからだと思います。次の注釈をイングレスリソースに追加してみてください:nginx.ingress.kubernetes.io/rewrite-target: /
ソース: https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/rewrite