首页 > 解决方案 > 将 Kubernetes 入口子域主机映射到服务路径

问题描述

我有以下入口控制器和包含api此 url 答案的主机https://api.example.com/docs

现在我想配置这个 nginx 入口访问/docs端点使用https://docs.example.com. 我曾尝试使用注释重写目标,但我不知道如何实现这一点。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/acme-challenge-type: dns01
    certmanager.k8s.io/cluster-issuer: letsencrypt
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: web-service
              servicePort: 80
    - host: api.example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: api-service
              servicePort: 80
  tls:
  - hosts:
    - example.com
    secretName: example.com

标签: kubernetesnginx-ingress

解决方案


您在这里需要的是app-root 注释。如果你使用这样的东西:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    annotations:
        nginx.ingress.kubernetes.io/app-root: /docs

传入的请求example.com/将在内部重写为example.com/docs.

请让我知道这是否有帮助。


推荐阅读