Итак, мы внедряем istio 1.0.2 с глобальными mtls, и пока все прошло хорошо.Для проверки работоспособности мы добавили отдельные порты к сервисам и настроили их в соответствии с документацией:
https://istio.io/docs/tasks/traffic-management/app-health-check/#mutual-tls-is-enabled
Наши порты приложений теперь на 8080, а порты проверок работоспособности на 8081.После этого Kubernetes может выполнять проверки работоспособности, и службы работают нормально.
Однако наше решение для мониторинга не может подключиться к порту проверки работоспособности.
Приложение мониторинга также находится в kubernetes и в настоящее время находится за пределами меша.В приведенном выше документе указано следующее:
Поскольку прокси-сервер Istio перехватывает только порты, явно объявленные в поле containerPort, трафик на порт 8002 обходит прокси-сервер Istio независимо от того, включен ли взаимный TLS Istio.e
Вот так мы его настроили.Таким образом, в нашем случае 8081 должен быть вне меша:
livenessProbe:
failureThreshold: 3
httpGet:
path: /manage/health
port: 8081
scheme: HTTP
initialDelaySeconds: 180
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: <our-service>
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /manage/health
port: 8081
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
Однако мы не можем получить доступ к 8081 из другого модуля, который находится за пределами меша.
Например:
curl http://<our-service>:8081/manage/health
curl: (7) Failed connect to <our-service>:8081; Connection timed out
Если мы попробуем из другого модуля внутри меша, то istio выбрасывает 404, что, возможно, и ожидается.
Я попытался поиграться с правилами назначения, такими как:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: <our-service>-health
spec:
host: <our-service>.namepspace.svc.cluster.local
trafficPolicy:
portLevelSettings:
- port:
number: 8081
tls:
mode: DISABLE
Но это просто убивает все возможности подключения к сервису, как внутри, так и через входной шлюз.