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

时间:2019-08-18 21:07:40

标签: google-cloud-platform terraform google-kubernetes-engine

我一直在尝试建立一个terraform模块来创建私有集群,而我正在努力应对一种奇怪的情况。

使用主授权网络创建群集时,如果通过GCP控制台进行操作,则可以很好地创建专用群集。但是当我使用Terraform进行操作时,出现一个奇怪的错误:

 Invalid master authorized networks: network "<cidr>" is not a reserved network, which is required for private endpoints.

代码有趣的部分如下:

....
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>"
}
....

我在这里忘记了什么吗?

4 个答案:

答案 0 :(得分:0)

我自己就能弄清楚,我想我应该已经详细阅读了gcp方面的所有文档。

这里的问题是我添加了一个主授权网络cidr范围以启用本地网络访问,这是一个外部地址,并且来自GCP文档

  

您不能将外部IP地址包括在主授权网络列表中,因为已禁止访问公共端点。

如果您好奇,想了解更多信息,请单击here

答案 1 :(得分:0)

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

我发现的解决方案是设置enable_private_endpoint = false

在这种情况下,专用端点还是会创建,但是您可以将带有外部地址的CIDR添加到主授权网络。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

master_authorized_networks_config {
}

private_cluster_config {
  enable_private_endpoint = true
  enable_private_nodes    = true
  master_ipv4_cidr_block  = "<cidr>"
}

应该创建private_end_point,并且不会抱怨Invalid master authorized networks。您尝试过的方法是,将外部CIDR传递给白名单以访问公共端点,同时又希望它严格私有。