对于每个环境,我们是不是需要单独的 GKE 集群?

Posted

技术标签:

【中文标题】对于每个环境,我们是不是需要单独的 GKE 集群?【英文标题】:For each environment do we need separate GKE Cluster?对于每个环境,我们是否需要单独的 GKE 集群? 【发布时间】:2021-02-04 16:14:12 【问题描述】:

我正在使用 GKE。对于单个区域,它是免费的(仅实例成本)。对于 DEV,我们正在使用它,但对于 QA/DEV/Production 等其他环境,我们是否需要单独的 GKE 集群或在当前 GKE 中使用不同的命名空间?这是成本和安全性的最佳方式

【问题讨论】:

【参考方案1】:

这取决于您的要求。两种选择都是可行的。

像 QA/DEV/Production 这样的环境我们是否需要单独的 GKE 集群

在大型企业的专业环境中,这将是不同VPC 中的不同集群(每个环境一个VPC),您也可以使用单独的项目,但不是必需的。

在当前 GKE 中,一个不同的命名空间将起作用

这更便宜,但你有更少的分离。只有你知道你需要什么。

【讨论】:

好吧,让我这样取。我打算在同一个 GKE 集群中部署 DEV 和 QA。我的 GKE 正在使用 istio 入口网关。在这种情况下,ingree 网关主机 IP 将是什么。因为 istio 的入口似乎是独一无二的,就像它来自 -n istio-system 一样? 因为在这种 Istio 案例中,DEV 和 QA 需要单独的负载均衡器地址,所以 dev 和 QA 只需要 1 个地址? 您应该从用于公开网关的负载均衡器获取 IP 地址,但在大多数情况下,您希望创建一个特定的静态 IP 地址。还建议创建尽可能简单的环境,这样更容易管理,所以我不建议将 DEV 和 QA 结合起来。【参考方案2】:

没有。对于不同的环境,您可以在同一个集群中拥有不同的命名空间。这将具有成本效益。

如果您使用 nodeports,您需要注意以下几点:

但是节点端口在同一个集群中必须是唯一的。因此,如果您使用 nodeports 访问您的应用程序,则需要不同的集群(如果您仍然希望在所有环境中拥有相同的节点端口。如果没有,您可以使用具有不同命名空间的同一个集群。 例如。如果您在 Cluster1 命名空间 1 中有带有节点端口 30077 的 app1(用作开发人员) 您不能在 Cluster1 命名空间 2 中使用 nodeport 30077 部署 app1(用作测试) 但是您可以在 cluster1 namespace2 中使用 nodeport 3xxxx 部署 app1(除了已经使用的端口 - 例如在本例中为 30077)

【讨论】:

以上是关于对于每个环境,我们是不是需要单独的 GKE 集群?的主要内容,如果未能解决你的问题,请参考以下文章

使用私有 IP 从不同 VPC 网络中的 GKE 集群连接到 Cloud SQL

根据每个 pod 的活动连接数扩展 GKE pod

如何为私有 GKE 集群启用 Gitlab CI/CD?

从节点池开始GKE非常慢 - 集群和k8s / gcloud api不可用

如何使用 Terraform 创建一个健康的 VPC-Native GKE 集群?

GKE 和 prometheus 监控