You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取GKE集群哈希值 通过Terraform更新GCP防火墙规则

解决方案

完全可以通过Terraform GCP provider的原生能力实现,不需要手动拼接哈希字符串,也不需要本地脚本辅助,所有逻辑都可以写在同一份Terraform模板里,和GKE集群在同一个apply流程中完成配置。

核心思路

不要尝试本地计算GKE自动生成的名称哈希——该哈希由GKE服务端生成,本地无固定计算规则,拼接出错概率极高。所有需要的参数(节点标签、主节点IP段、关联防火墙规则)都可以从google_container_cluster资源的输出属性、配套的GCP数据源中直接获取。

另外不建议直接修改GKE自动创建的gke-<cluster-name>-<hash>-master默认规则:GKE控制面会在集群升级、配置变更时自动调和(reconcile)这类托管资源,手动修改的端口配置会被不定期覆盖,最优实践是新建一条优先级更高的独立防火墙规则放通Istio需要的端口。

具体实现代码

假设你已经定义了名为main的GKE集群资源:

resource "google_container_cluster" "main" {
  name     = "cluster"
  location = "us-central1-a"
  # 此处省略其余集群配置(节点池、VPC、访问控制等)
}

第一步,从集群属性中自动提取GKE生成的节点标签,不需要手动拼接:

locals {
  # 从集群默认节点配置的标签列表中匹配自动生成的节点标签
  gke_node_tag = one([
    for tag in google_container_cluster.main.node_config[0].tags : tag
    if length(regexall("^gke-${google_container_cluster.main.name}-[a-z0-9]+-node$", tag)) > 0
  ])
}

第二步,定义放通Istio端口的防火墙规则,所有参数均从集群资源属性直接读取:

resource "google_compute_firewall" "istio_master_access" {
  name          = "gke-${google_container_cluster.main.name}-istio-master-ports"
  project       = google_container_cluster.main.project
  network       = google_container_cluster.main.network
  direction     = "INGRESS"
  # 优先级设为900,比GKE默认主节点规则的优先级1000更高,规则优先生效
  priority      = 900
  # 源地址直接用集群输出的主节点IP段,不需要手动查询
  source_ranges = [google_container_cluster.main.master_ipv4_cidr_block]
  target_tags   = [local.gke_node_tag]

  allow {
    protocol = "tcp"
    ports    = ["15017", "15021"]
  }
}

补充说明

如果你一定要修改默认的主节点防火墙规则,可以通过google_compute_firewall数据源过滤定位到该规则,再将其纳入Terraform管理后修改配置,但该方案稳定性差,集群升级、节点池变更等操作都可能导致配置被GKE自动回滚,生产环境不推荐使用。

定位默认主节点防火墙规则的数据源示例:

data "google_compute_firewall" "gke_default_master" {
  project = google_container_cluster.main.project
  # 通过名称前缀+所属网络过滤,不需要写全带哈希的规则名
  filter = "name:gke-${google_container_cluster.main.name}-*-master AND network:${google_container_cluster.main.network}"
}

内容的提问来源于stack exchange,提问作者Nitin G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 02:30:15