在 GKE、terraform 与控制台中创建私有集群

Ang*_*ain 8 google-cloud-platform google-kubernetes-engine terraform

我一直在尝试设置一个 terraform 模块来创建私有集群,但我遇到了一个奇怪的情况。

创建具有master授权网络的集群时,如果我通过GCP控制台来创建私有集群就可以了。但是当我用 Terraform 做这件事时,我得到一个奇怪的错误:

 Invalid master authorized networks: network "<cidr>" is not a reserved network, which is required for private endpoints.
Run Code Online (Sandbox Code Playgroud)

代码中有趣的部分如下:

....
master_authorized_networks_config {
  cidr_blocks {
    cidr_block = "<my-network-cidr>"
  }
}

private_cluster_config {
  enable_private_endpoint = true
  enable_private_nodes    = true
  master_ipv4_cidr_block  = "<cidr>"
}
....
Run Code Online (Sandbox Code Playgroud)

有什么我在这里忘记了吗?

ide*_*tor 7

根据谷歌文档(https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters),应该可以同时拥有私有和公共端点,并且 master_authorized_networks_config 应该具有可以到达的网络这些端点中的任何一个。

如果将 enable_private_endpoint 设置为 false 意味着创建了私有端点,但它也创建了公共端点,那么这是一个可怕的错误命名变量,因为它实际上是在关闭和打开公共端点,而不是私有端点。显然,指定一个 private_cluster_config 就足以启用私有端点,并且如果要相信报告的行为,该标志会切换公共端点。

这当然是我的经验 - 在 master_authorized_networks_config 中指定我的本地 IP 地址导致集群创建在 enable_private_endpoint 为真时失败。当我将它设置为 false 时,我得到了两个端点并且配置没有被拒绝。


dds*_*dds 6

我最近也遇到了同样的问题。

我找到的解决方案是设置enable_private_endpoint = false.

在这种情况下,无论如何都会创建专用端点,但您可以添加带有外部地址的 CIDR 以掌握授权网络。