В Traefik 2+ вам необходимо настроить 2 маршрутизатора: - Один для API - Один для веб-приложения
Для прокси API у вас будет правило, например:
rule = "Host(`example.com`) && Path(`/api`)"
И веб-приложение будет иметь хост как правило
rule = "Host(`example.com`)"
Для kubernetes вы можете сделать это во входном файле следующим образом:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: simpleingressroute
namespace: default
spec:
entryPoints:
- web
routes:
- match: Host(`example.com`) && PathPrefix(`/api`)
kind: Rule
services:
- name: mywebapp-svc
port: 80
- match: Host(`example.com`)
Kind: Rule
services:
- name: myapi-svc
port: 80
Если API не находится внутри кластер kubernetes, вы можете определить правило для использования внешнего сервиса, например:
---
apiVersion: v1
kind: Service
metadata:
name: myapi-svc
namespace: default
spec:
externalName: api.mydomain.com
type: ExternalName