我对 k8s 命名空间和 istio 网关的实用性感到困惑。
假设我有一个运行 3 个团队的工作负载的集群。每个团队都有一个部署 API 的部署。 API 看起来像:
https://dev.mydomain.com/APIs/teamName
我想为每个团队创建一个命名空间,以便属于一个团队的所有工作负载最终都将位于他们自己的命名空间中。
如何配置 istio 网关?!
据我了解,每个命名空间都需要一个 istio 网关,但是 k8s 如何知道需要使用哪个网关,因为所有网关的主机都是相同的?
为了确保所有工作负载都属于一个团队,您可以创建
3 different namespaces
并将每个工作负载部署在 3 个不同的命名空间中。
假设我已经创建了
3 namespaces
:(我正在使用GCP console
)
@cloudshell:~ $ kubectl create namespace team-a
namespace/team-a created
@cloudshell:~$ kubectl create namespace team-b
namespace/team-b created
@cloudshell:~$ kubectl create namespace team-c
namespace/team-c created
在
3 namespaces
中部署工作负载:
所以你将会拥有
3 API’s
,现在创建一个 istio 网关。
您可以创建
3 virtual services
,而不是创建 istio 网关,其中 single Istio Gateway
具有主机 dev.mydomain.com,并根据 URL 路径将流量路由到不同的 VirtualService。因此,请尝试为每个团队的 API 创建一个虚拟服务。
附上最佳实践文档以获取更多信息。