Я очень новичок в Istio, поэтому это может быть простой вопрос, но у меня есть некоторая путаница в отношении Istio. Я использую Istio 1.8.0 и 1.19 для k8s. Извините за несколько вопросов, но буду признателен, если вы поможете мне прояснить лучшие подходы .
Я полагаю, что после внедрения Istio я не смог получить доступ к сервису для сервиса непосредственно внутри модуля, но, как вы можете видеть ниже, я могу. Возможно, я неправильно понял, но это ожидаемое поведение? Между тем, как я могу отладить, взаимодействуют ли службы друг с другом через прокси-сервер посланника с mTLS? Я использую режим
STRICT
и должен ли я развернуть повторную аутентификацию в пространстве имен, в котором работают микросервисы, чтобы избежать этого?kubectl get peerauthentication --all-namespaces NAMESPACE NAME AGE istio-system default 26h
Как я могу ограничить трафик, допустим, служба api-dev не должна иметь доступ к auth-dev, но может иметь доступ к backend-dev?
Некоторым микросервисам необходимо взаимодействовать с базой данных, где они также работают в пространстве имен
database
. У нас также есть такие, которые мы не хотим вводить istio, также используя ту же базу данных? Итак, должна ли база данных также разворачиваться в том же пространстве имен, где у нас есть внедрение istio? Если да, то означает ли это, что мне нужно развернуть другой экземпляр базы данных для остальных служб?
$ kubectl get ns --show-labels
NAME STATUS AGE LABELS
database Active 317d name=database
hub-dev Active 15h istio-injection=enabled
dev Active 318d name=dev
capel0068340585:~ semural$ kubectl get pods -n hub-dev
NAME READY STATUS RESTARTS AGE
api-dev-5b9cdfc55c-ltgqz 3/3 Running 0 117m
auth-dev-54bd586cc9-l8jdn 3/3 Running 0 13h
backend-dev-6b86994697-2cxst 2/2 Running 0 120m
cronjob-dev-7c599bf944-cw8ql 3/3 Running 0 137m
mp-dev-59cb8d5589-w5mxc 3/3 Running 0 117m
ui-dev-5884478c7b-q8lnm 2/2 Running 0 114m
redis-hub-master-0 2/2 Running 0 2m57s
$ kubectl get svc -n hub-dev
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api-dev ClusterIP xxxxxxxxxxxxx <none> 80/TCP 13h
auth-dev ClusterIP xxxxxxxxxxxxx <none> 80/TCP 13h
backend-dev ClusterIP xxxxxxxxxxxxx <none> 80/TCP 14h
cronjob-dev ClusterIP xxxxxxxxxxxxx <none> 80/TCP 14h
mp-dev ClusterIP xxxxxxxxxxxxx <none> 80/TCP 13h
ui-dev ClusterIP xxxxxxxxxxxxx <none> 80/TCP 13h
redis-hub-master ClusterIP xxxxxxxxxxxxx <none> 6379/TCP 3m47s
----------
$ kubectl exec -ti ui-dev-5884478c7b-q8lnm -n hub-dev sh
Defaulting container name to oneapihub-ui.
Use 'kubectl describe pod/ui-dev-5884478c7b-q8lnm -n hub-dev' to see all of the containers in this pod.
/usr/src/app $ curl -vv http://hub-backend-dev
* Trying 10.254.78.120:80...
* TCP_NODELAY set
* Connected to backend-dev (10.254.78.120) port 80 (#0)
> GET / HTTP/1.1
> Host: backend-dev
> User-Agent: curl/7.67.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
< content-security-policy: default-src 'self'
<
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>
* Connection #0 to host oneapihub-backend-dev left intact
/usr/src/app $