我有下面的宏定义,很好地工作(我使用docker-for-mac):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: zwoop-ing
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: localhost
http:
paths:
- path: /
backend:
serviceName: posts-api-svc
servicePort: 8083我感到困惑的是如何处理我想公开的多个api微服务。
我所想到的选择:
我想多吃一杯会花更多的钱。
由于某些原因,我在使用子路径段(Ingress)时遇到了问题。
当我在入口资源中定义:- path: /api时,我会在GET请求中接收到一个404。
目前还不清楚如何定义子路径(这里我使用/api,但这将是posts api、用户-api等等)。
对于单个posts api,我现在有以下设置:
apiVersion: v1
kind: Service
metadata:
name: posts-api-svc
# namespace: nginx-ingress
labels:
app: posts-api
#rel: beta
#env: dev
spec:
type: ClusterIP
selector:
app: posts-api
# rel: beta
# env: dev
ports:
- protocol: TCP
port: 8083通过部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: posts-api-deployment
# namespace: nginx-ingress
spec:
replicas: 1
selector:
matchLabels:
app: posts-api
template:
metadata:
labels:
app: posts-api
# env: dev
# rel: beta
spec:
containers:
- name: posts-api
image: kimgysen/posts-api:latest
ports:
- containerPort: 8083
livenessProbe:
httpGet:
path: /api/v1/posts/health
port: 8083
initialDelaySeconds: 120
timeoutSeconds: 1对于端点:/api/v1/post/ health,对pod的健康检查工作良好。
发布于 2019-01-22 03:43:43
我想多吃一杯会花更多的钱。
当我在入口资源中定义:- path: /api时,我会在GET请求中接收到一个404。
这意味着它将进入默认后端,很可能是因为这个注释nginx.ingress.kubernetes.io/rewrite-target: /。从本质上说,这是从您的请求中剥离了/api到后端的请求。如果您想保留路径,我建议您删除注释。
您可以使用以下内容检查nginx入口控制器nginx.conf文件:
$ kubectl cp <pod-where-nginx-controller-is-running>:nginx.conf .
$ cat nginx.conf发布于 2019-01-22 07:58:20
您不需要为每个宏资源支付费用,因为一个宏资源只是定义了一个路由规则。将所有路由定义放置在一个宏文件中,然后分割成不同的宏文件,实际上只会导致应用相同的规则。见入口入口-nginx-每个主机创建一个入口?还是把多个主机合并成一个入口重新装载?
https://stackoverflow.com/questions/54298377
复制相似问题