【问题标题】:Creating a private cluster in GKE, terraform vs console在 GKE 中创建私有集群,terraform vs 控制台
【发布时间】:2019-12-24 04:18:45
【问题描述】:

我一直在尝试设置一个 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>"
}
....

我在这里忘记了什么吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    您不能在主授权网络列表中包含外部 IP 地址,因为对公共端点的访问被禁用。

    如果您有兴趣,想了解更多请点击here

    【讨论】:

    • 但是为什么在 GCP 控制台中创建集群时它会起作用?我这里也有同样的问题。
    • 我认为不同之处在于启用私有端点的选项。我不认为这是直接在控制台中公开的选项。
    【解决方案2】:

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

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

    在这种情况下,无论如何都会创建私有端点,但您可以将具有外部地址的 CIDR 添加到主授权网络。

    【讨论】:

      【解决方案3】:

      根据 Google Cloud Platform 文档 here,应该可以同时拥有私有和公共端点,并且 master_authorized_networks_config 参数应该具有可以到达其中任何一个端点的网络。

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

      这当然是我的经验:当enable_private_endpointtrue 时,在master_authorized_networks_config 中指定我的本地IP 地址导致集群创建失败。当我将它设置为false 时,我得到了端点和配置。不会被拒绝。

      【讨论】:

      • > 这是一个严重错误命名的变量。我完全同意你的看法。在 GCP 控制台中,相关的翻转器称为“使用其外部 IP 的访问主机”。在这个 terraform 变量 enable_private_endpoint 中没有提及这些
      【解决方案4】:
      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 以访问公共端点,同时您希望它是严格私有的。

      【讨论】:

        猜你喜欢
        • 2020-01-30
        • 2020-03-19
        • 2021-05-01
        • 2020-08-20
        • 2021-09-30
        • 1970-01-01
        • 2020-07-24
        • 1970-01-01
        • 2021-08-12
        相关资源
        最近更新 更多