【问题标题】:Adding firewall rule for GKE nodes为 GKE 节点添加防火墙规则
【发布时间】:2020-06-29 20:31:29
【问题描述】:

所以我正在努力实现以下目标: - 通过 Terraform 在 GCE 上部署 Rancher 2 - 创建 K8s 集群 - 添加防火墙规则,以便节点能够与 Racher Master Vm 对话。

我能够使用节点的外部 IP 添加防火墙规则来访问牧场主主服务器,但我应该能够使用标签而不是添加 IP。 Google Kubernetes Engine 创建一个计算引擎实例组

 gke-c-wlvrt-default-0-5c42eb4e-grp

当我添加防火墙规则时:

Target Tag: rancher-master
Source Tag: gke-c-wlvrt-default-0-5c42eb4e-grp

没有任何作用。

当我把它改成:

Target Tag: rancher-master
Source IP: 35.xx.xx.xx, 35.xx.xx.xx.xx, 35.xx.x.xxx.x

它有效。

所以我得到了 Kubernetes 节点在防火墙规则上工作的标签?

【问题讨论】:

    标签: kubernetes google-cloud-platform google-kubernetes-engine rancher terraform-provider-gcp


    【解决方案1】:

    您没有使用正确的标签。要了解它,请转到 Compute Engine 页面并单击 VM 上的详细信息。你可以看到这个:

    实例组名称与网络标签名称不同。使用网络标签而不是实例组名称。

    您还可以在转到实例组页面并转到实例模板详细信息时看到这些值。

    更新

    因为你不能(或者我不知道怎么做)知道应用于 VM 的网络标签,你可以在 GCP 上使用一个特殊的技巧。

    开始使用服务帐户更新您的节点池定义

    resource "google_service_account" "sa-node" {
      account_id = "sa-node"
      display_name = "sa-node"
    }
    
    resource "google_container_node_pool" "primary_preemptible_nodes" {
      name       = "my-node-pool"
      location   = "us-central1"
      cluster    = google_container_cluster.primary.name
      node_count = 1
    
      node_config {
        preemptible  = true
        machine_type = "n1-standard-1"
        service_account = google_service_account.sa-node.email
    ....
    
    

    然后通过使用服务帐户而不是网络标记作为源来定义防火墙规则

    resource "google_compute_firewall" "default" {
      name    = "test-firewall"
      network = google_compute_network.default.name
    
      allow {
        protocol = "tcp"
        ports    = ["80", "8080", "1000-2000"]
      }
    
      source_service_accounts = [google_service_account.sa-node.email]
    }
    

    遗憾的是,您不能混合使用 target tag 和 source service account,但可以使用 target service account。因此,在 Rancher 上做同样的事情。为您的牧场主部署使用特定的服务帐户,这应该可以工作。

    希望对您有所帮助!

    【讨论】:

    • 非常感谢,知道如何通过 terraform 将标签添加到防火墙规则中吗?
    • 不,我不知道,但我用服务帐户的解决方法更新了我的答案。希望对您有所帮助!
    【解决方案2】:

    我不确定这里描述的问题是否相同,但您可以向虚拟机添加另一个标签。 (GKE 的节点)

    我的问题是我想将另一个端口添加到 GKE 的自动生成的防火墙规则中。

    resource "google_container_node_pool" "node_pool" {
    ...
        tags = [
          module.vpc_network.private
        ]
    ...
    }
    
    resource "google_compute_firewall" "master_webhooks" {
    ...
      target_tags   = [module.vpc_network.private]
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-26
      • 1970-01-01
      • 2014-01-14
      • 2021-04-26
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多