Правила маршрутизации входа в Kubernetes для Asp.net Основное приложение выдает ошибку 404, в то время как другие маршруты работают

#kubernetes-ingress #nginx-reverse-proxy

#кубернетес-вход #nginx-обратный прокси

Вопрос:

Я пытаюсь использовать правила входа в kubernetes для навигации моего трафика к различным микросервисам, разработанным с использованием asp.net ядро (ядро 5). Я протестировал эти микросервисы после развертывания в kubernetes (локальный кластер рабочего стола docker), и они работают должным образом (по крайней мере, пользовательский интерфейс swagger и связанные с ним действия через swagger).

Теперь мне нравится использовать правила входа в kubernetes для навигации по ним. каким-то образом для всех навигаций я получаю ошибку 404 «не найдено». Просто чтобы подтвердить, работают ли правила, я использовал hashicorp/http-echo (с яблоком и бананом), и они идут.

Я чувствую, что что-то не так с тем, как asp.net ядро (динамическая версия), обслуживающее запрос. что-то связанное с asp.net профиль, но я не слишком уверен, что не так.

Вот мои конфигурации (все находится в одном пространстве имен):

 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:  name: shoppingcart-api-gateway-rules  namespace: local-shoppingcart-v1  # annotations:  # ingress.kubernetes.io/rewrite-target: / spec:  ingressclassName: nginx  rules:   - host: localhost  http:  paths:  - path: /webapp1  pathType: Prefix  backend:   service:   name: webappsample1-service  port:   number: 30021  - path: /apple  pathType: Prefix  backend:   service:  name: my-apple-service  port:   number: 30101  

вот мой запрос и ответ на завиток

 request: curl http://localhost:31242/apple response: apple  ## now the asp.net based routing testing..... request: curl http://localhost:31242/webapp1 response: lt;no responsegt;   ## with curl -v or curl -i it gives status code 404 Not Found  

asp.net файл запуска приложений.json

 "WebAppSample1": {  "commandName": "Project",  "launchBrowser": true,  "environmentVariables": {  "ASPNETCORE_ENVIRONMENT": "Development"  },  "dotnetRunMessages": "true",  "applicationUrl": "http:// :5000" lt;lt;--- It was http://localhost:5000 previously. }  

В файле startup.cs я также добавил

 services.Configurelt;ForwardedHeadersOptionsgt;(options =gt;  {  options.ForwardedHeaders =  ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;  });  

On kubernetes deployment file, I have added environment variable too.

deployment.yaml

 spec:  containers:  - name: webappsample1  image: webappsample1  env:  - name: ASPNETCORE_URLS  value: http:// :80  - name: ASPNETCORE_ENVIRONMENT  value: Development  ports:  - name: http  containerPort: 80  

сервис.yaml

 spec: type: NodePort selector:  app: webappsample1 ports: - protocol: TCP  nodePort: 30021  port: 30021  targetPort: http  name: http-webappsample1  

вручную, тестирование веб-приложения 1 с помощью http://localhost:30021 (Порт узла) и подтвердите, что приложение работает.

введите описание изображения здесь

наконец, вход (как я использовал контроллер входа nginx) здесь-это служба, которая предоставляет доступ к ней за пределами кластера.

 kubectl get svc -n ingress-nginx  
 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller NodePort 10.110.88.166 lt;nonegt; 80:31242/TCP,443:32353/TCP 6d20h ingress-nginx-controller-admission ClusterIP 10.102.222.57 lt;nonegt; 443/TCP 6d20h 

Комментарии:

1. попробуйте указать имя входного класса ti в аннотации.

2. нет. никакой разницы. та же ошибка 404.