Ocelot ApiGateway не может подключиться к другим сервисам в Kubernetes - PullRequest
0 голосов
/ 22 марта 2020

Я работаю над простым проектом, чтобы узнать больше о микросервисах.

У меня очень простая. net базовая сеть с одной конечной точкой GET. Я добавил веб-приложение ApiGateway с Ocelot, и все, кажется, работает нормально, за исключением случаев, когда я развертываю в локальном кластере Kubernetes.

Это файлы yaml, которые я использую для развертывания:

ApiGateway.yaml

kind: Pod
apiVersion: v1
metadata:
  name: api-gateway
  labels:
    app: api-gateway
spec:
  containers:
    - name: api-gateway
      image: apigateway:dev

---

kind: Service
apiVersion: v1
metadata:
  name: api-gateway-service
spec:
  selector:
    app: api-gateway
  ports:
    - port: 80

TestService.yaml

kind: Pod
apiVersion: v1
metadata:
  name: testservice
  labels:
    app: testservice
spec:     
  containers:
    - name: testservice
      image: testbuild:latest

---

kind: Service
apiVersion: v1
metadata:
  name: testservice-service
spec:
  selector:
    app: testservice
  ports:
    - port: 80

оцелот. json

{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "/endpoint",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "testservice-service",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/test",
      "UpstreamHttpMethod": [ "Get" ]
    }
  ]
}

Если я попытаюсь сделать запрос с помощью cUrl напрямую от модуля ApiGateway до службы TestService он работает без проблем. Но когда я пытаюсь запросить его у Ocelot, он возвращает ошибку 500, говоря:

warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
  requestId: 0HLUEDTNVVN26:00000002, previousRequestId: no previous request id, message: Error Code: UnableToCompleteRequestError Message: Error making http request, exception: System.Net.Http.HttpRequestException: Name or service not known
   ---> System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known

Кроме того, я пытался с этим https://ocelot.readthedocs.io/en/latest/features/kubernetes.html, но, честно говоря, do c не совсем понятно, и я пока не добился успеха.

Есть идеи, в чем может быть проблема?

(я также использую ресурс Ingress для раскрытия сервисов, но это работает без проблем, так что пока я буду держать его вне этой темы)

...