Мой сервис работает нормально, когда я использую переадресацию портов и отправляю запрос get на локальный хост, однако отправка запроса Get на publicDomain выдает сообщение об ошибке 503. Вот мои файлы конфигурации:
apiVersion: v1
kind: Service
metadata:
name: my-app
namespace: default
spec:
ports:
- port: 8080
targetPort: 8080
protocol: TCP
name: http
- port: 9000
targetPort: 9000
protocol: TCP
name: http1
- port: 9001
targetPort: 9001
protocol: TCP
name: http2
selector:
app: my-app
Конфигурация развертывания:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-app
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- image: myrepo.azurecr.io/my-app:12
name: my-app
ports:
- containerPort: 8080
protocol: TCP
- containerPort: 8000
protocol: TCP
- containerPort: 9000
protocol: TCP
- containerPort: 9001
protocol: TCP
Конфигурация VirtualService:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-app
namespace: default
spec:
hosts:
- "app.mydomain.com"
gateways:
- mygateway.istio-system.svc.cluster.local
http:
- match:
- uri:
prefix: /myprefix
route:
- destination:
host: my-app
port:
number: 9001
- match:
- uri:
prefix: /
route:
- destination:
host: my-app
port:
number: 9000
corsPolicy:
allowOrigin:
- "https://test1.domain.com"
- "https://test2.domain.com"
allowMethods:
- POST
- PATCH
allowCredentials: false
allowHeaders:
- X-Tenant-Identifier
- Content-Type
maxAge: "24h"
Конфигурация шлюза:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-gateway
namespace: istio-system
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*.mydomain.com"
#tls:
#httpsRedirect: true
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- "*.mydomain.com"
tls:
mode: SIMPLE
serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
privateKey: /etc/istio/ingressgateway-certs/tls.key
Вот еще немного информации:
$ kubectl get ep my-app
NAME ENDPOINTS AGE
my-app 10.244.1.169:9000,10.244.1.169:9001,10.244.1.169:8080 26h
Если я перенаправлю порт:
$ kubectl port-forward my-app-podid 6001:9001
, а затем с помощью почтальона отправлю запрос Get на localhost: 6001 / myprefix, он работаетоштрафовать и вернуть ответ 200 OK, однако при отправке запроса Get на publicdomain app.mydomain.com/myprefix я получаю ошибку 503, также используя curl:
kubectl exec -n istio-system istio-ingressgateway-podid -- curl -v http://my-app.default.svc.cluster.local:9001/myprefix
Подключено к my-app.default.svc.cluster.local (10.0.71.212) порт 9001 (# 0)
GET / myprefix HTTP / 1.1 Хост: my-app.default.svc.cluster.local: 9001 Пользователь-агент: curl / 7.47.0 Примите: /
ошибка восходящего соединения или отключение / сброс перед заголовками. причина сброса: разрыв соединения
Журналы входного шлюза не дают больше информации, чем просто сообщение об ошибке 503. Кто-нибудь знает, чего не хватает?