У меня есть сервер gRPC, работающий на кластере k8s (удаленный сервер). Я пытаюсь подключиться к этой службе из клиента gRPC (локальный компьютер). Для этого я использую входной шлюз Istio. Но я получаю сообщение о закрытом соединении с кодом ошибки 14.
Вот мой клиент gRPC:
conn, err := grpc.Dial("service.example.com:80", grpc.WithInsecure())
if err != nil {
panic(err)
}
c := service.NewServiceClient(conn)
if _, err := c.TestRPC(...); err != nil {
log.Println(err.Error()) // rpc error: code = Unavailable desc = connection closed
}
Мой шлюз:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: grpc
protocol: GRPC
hosts:
- "*"
Моя VirtualService:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: service-vs
spec:
gateways:
- gateway
hosts:
- "service.example.com"
http:
- match:
- port: 80
route:
- destination:
host: service
port:
number: 9000
Моя Служба:
apiVersion: v1
kind: Service
metadata:
name: service
labels:
app: service
spec:
ports:
- port: 9000
name: grpc
selector:
app: service
Мое развертывание:
apiVersion: apps/v1
kind: Deployment
metadata:
name: service
labels:
app: service
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 25%
selector:
matchLabels:
app: service
template:
metadata:
labels:
app: service
spec:
containers:
- name: service
image: registry.example.com/user/service:latest
imagePullPolicy: Always
ports:
- name: grpc
containerPort: 9000
imagePullSecrets:
- name: private-registry-secret
Как я могу решить эту проблему?
p.s.
- Мой example.com находится в CloudFlare.
- Я установил рекорд ДНК для service.example.com
- Нет никаких правил брандмауэра.
- Подключение gRPC включено (думаю, это не важно, так как работает только для порта 443)
grpc
. Вы это освещаете? - person suren   schedule 29.03.2021Deployment
. ВService
. - person suren   schedule 31.03.2021