如何在入口中将主机路径与服务路径映射?

时间:2020-07-21 08:45:24

标签: kubernetes kubernetes-ingress

如何创建alb入口,以便仅“ /”将重定向到显示service-1中静态文件的服务。所有其他路径都应重定向到服务2。它将托管这样的内容

spec:
  rules:
    - host: a.abc.com
      http:
        paths:
          - path: /
            backend:
              serviceName: service-1
              servicePort: 80
          - path: /v1
            backend:
              serviceName: service-2/v1
              servicePort: 9090

我知道我不能在service-2/v1上使用serviceName,但是我想将/v1映射到service-2:9090/v1

我正在service-1(nginx)中托管一些静态文件,这些文件要显示在/上,然后/v1/admin在我的另一项服务中(即{{1} }和service-2/v1)。

1 个答案:

答案 0 :(得分:1)

服务名称和任何其他资源可能不包含here中所述的/%,如果您要部署它,它将显示以下错误:

metadata.name: Invalid value: "demo/v1": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

因此,除了可以在单个Ingress定义中指定多个路径之外,还必须考虑更改服务名称:

spec:
  rules:
    - host: a.abc.com
      http:
        paths:
          - path: /
            backend:
              serviceName: service-1
              servicePort: 80
          - path: /v1
            backend:
              serviceName: service-v1
              servicePort: 9090
          - path: /admin #additional path
            backend:
              serviceName: service-admin   #service name pointing to /admin
              servicePort: 9091    #port it will be accessible on