私は Istio に非常に慣れていないため、単純な質問かもしれませんが、Istio に関していくつか混乱があります。k8s に Istio 1.8.0 と 1.19 を使用しています。複数の質問で申し訳ありませんが、最善のアプローチを明確にするのを手伝っていただければ幸いです。 .
Istio を注入した後、ポッド内でサービスからサービスに直接アクセスできなかったと思いますが、以下に示すようにアクセスできます。誤解しているかもしれませんが、それは期待される動作ですか?一方、サービスが mTLS を使用して envoy プロキシを介して互いに通信するかどうかをデバッグするにはどうすればよいですか? モードを使用して
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 $