首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >入口多路径与多个入口

入口多路径与多个入口
EN

Stack Overflow用户
提问于 2019-01-21 22:02:42
回答 2查看 11.3K关注 0票数 12

我有下面的宏定义,很好地工作(我使用docker-for-mac):

代码语言:javascript
复制
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,我现在有以下设置:

代码语言:javascript
复制
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

通过部署:

代码语言:javascript
复制
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的健康检查工作良好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-22 03:43:43

我想多吃一杯会花更多的钱。

  • 多个入口控制器(如尼吉斯):是的,如果您使用外部负载均衡器和云提供商(如AWS、GCP或Azure ),成本会更高,因为您将使用与入口控制器相同的负载平衡器。如果您只使用一个ClusterIP (在集群内访问),它将不会花费更多的费用,如果您使用NodePort服务来公开它,则会有所不同。
  • 多个入口 Kubernetes资源:不,如果您使用相同的入口控制器,则不会花费更多。

当我在入口资源中定义:- path: /api时,我会在GET请求中接收到一个404。

这意味着它将进入默认后端,很可能是因为这个注释nginx.ingress.kubernetes.io/rewrite-target: /。从本质上说,这是从您的请求中剥离了/api到后端的请求。如果您想保留路径,我建议您删除注释。

您可以使用以下内容检查nginx入口控制器nginx.conf文件:

代码语言:javascript
复制
$ kubectl cp <pod-where-nginx-controller-is-running>:nginx.conf .
$ cat nginx.conf
票数 7
EN

Stack Overflow用户

发布于 2019-01-22 07:58:20

您不需要为每个宏资源支付费用,因为一个宏资源只是定义了一个路由规则。将所有路由定义放置在一个宏文件中,然后分割成不同的宏文件,实际上只会导致应用相同的规则。见入口入口-nginx-每个主机创建一个入口?还是把多个主机合并成一个入口重新装载?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54298377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档