Я развернул контейнеры посланников как часть развертывания Istio на k8s. Каждый прокси-контейнер Envoy устанавливается как дополнительный элемент рядом с контейнером приложения в модуле k8s.
Я могу инициировать HTTP-трафик из приложения, но при попытке связаться с сервером Redis (другой контейнер с другим прокси-сервером посланника) я не могу подключиться и получить HTTP/1.1 400 Bad Request
сообщение от посланника.
Изучая журналы посланника, я вижу следующее сообщение всякий раз, когда это соединение проходит через посланника: HTTP/1.1" 0 - 0 0 0 "_"."_"."_"."_""
Насколько я понимаю, команды Redis отправляются с использованием чистого транспорта TCP без HTTP. Возможно ли, что Envoy ожидает увидеть только HTTP-трафик и отклоняет только TCP-трафик? Если я правильно понимаю, есть ли способ изменить это поведение с помощью Istio, а также принимать и обрабатывать общий TCP-трафик?
Ниже приведены мои связанные файлы yaml развертывания:
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: default
labels:
component: redis
role: client
spec:
selector:
app: redis
ports:
- name: http
port: 6379
targetPort: 6379
protocol: TCP
type: ClusterIP
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis-db
spec:
replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:3.2-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
Спасибо