Сопоставление хоста входящего поддомена 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

person marcus    schedule 26.02.2020    source источник
comment
Вы видели этот документ с примером?   -  person Wytrzymały Wiktor    schedule 26.02.2020
comment
@OhHiMark Да, но я хочу сделать наоборот. Я хочу, чтобы docs.example.com добавил /docs вместо удаления, как в примере.   -  person marcus    schedule 26.02.2020


Ответы (1)


Здесь вам понадобится аннотация корневого каталога приложения. Если вы используете что-то вроде этого:

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

входящие запросы на example.com/ будут внутренне переписаны на example.com/docs.

Пожалуйста, дайте мне знать, помогло ли это.

person Wytrzymały Wiktor    schedule 27.02.2020
comment
Я не думаю, что это сработает, потому что корень приложения меняется для каждого хоста на моем входе. Я хочу, чтобы это затронуло только docs.example.com. Идеальным решением было бы, если бы файлы из / docs обслуживались с docs.example.com без перенаправления. Но если требуется перенаправление на / docs, все будет хорошо - person marcus; 28.02.2020
comment
Понятно. В этом случае, я думаю, было бы лучше создать отдельный Ingress для docs.example.com и использовать app-root только там. Возможно ли это в вашем случае использования? - person Wytrzymały Wiktor; 02.03.2020