Внедрение баз данных с помощью istio сложно.
Я бы начал с проверки вашего mtls, если он СТРОГО, я бы изменил его на разрешающий и проверил, работает ли он. Это хорошо описано здесь .
Вы видите, что запросы все еще выполняются успешно, за исключением запросов от клиента, у которого нет прокси, sleep.legacy, к серверу с прокси, httpbin.foo или httpbin.bar. Это ожидается, потому что теперь строго требуется взаимный TLS , но рабочая нагрузка без сопутствующего элемента не может соответствовать.
Есть ли решение для этого, я хотел бы istio-proxy внедрен в мое приложение / под и использует mongodb?
Если изменение mtls не сработает, то в istio вы можете настроить базу данных без инъекции, а затем добавить ее в реестр istio с помощью объекта ServiceEntry чтобы он мог взаимодействовать с остальными службами istio.
Чтобы добавить вашу базу данных mongodb в istio, вы можете использовать ServiceEntry .
ServiceEntry позволяет добавлять дополнительные записи во внутреннем реестре служб Istio, чтобы автоматически обнаруженные службы в me sh могли обращаться к этим службам, указанным вручную, или направлять их. Запись службы описывает свойства службы (имя DNS, виртуальные IP-адреса, порты, протоколы, конечные точки). Эти службы могут быть внешними по отношению к me sh (например, веб-API) или me sh -внутренние службы, которые не являются частью реестра служб платформы (например, набор виртуальных машин, взаимодействующих со службами в Kubernetes). Кроме того, конечные точки записи службы также можно динамически выбирать с помощью поля workloadSelector. Эти конечные точки могут быть рабочими нагрузками виртуальных машин, объявленными с помощью объекта WorkloadEntry или модулей Kubernetes. Возможность выбора модулей и виртуальных машин в рамках одного сервиса позволяет переносить сервисы с виртуальных машин на Kubernetes без изменения существующих имен DNS, связанных с сервисами.
Пример ServiceEntry
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: external-svc-mongocluster
spec:
hosts:
- mymongodb.somedomain # not used
addresses:
- 192.192.192.192/24 # VIPs
ports:
- number: 27018
name: mongodb
protocol: MONGO
location: MESH_INTERNAL
resolution: STATIC
endpoints:
- address: 2.2.2.2
- address: 3.3.3.3
Если у вас включен протокол mtls, вам также потребуется DestinationRule, которое определит, как взаимодействовать с внешней службой.
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: mtls-mongocluster
spec:
host: mymongodb.somedomain
trafficPolicy:
tls:
mode: MUTUAL
clientCertificate: /etc/certs/myclientcert.pem
privateKey: /etc/certs/client_private_key.pem
caCertificates: /etc/certs/rootcacerts.pem
Дополнительно ознакомьтесь с этой документацией