Я работаю над простым проектом, чтобы узнать больше о микросервисах.
У меня очень простая. 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 для раскрытия сервисов, но это работает без проблем, так что пока я буду держать его вне этой темы)