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

如何通过Terraform为Kubernetes Ingress创建的负载均衡绑定Cloud Armor策略?

可行实现方案

以下两种方案均可通过Terraform完成绑定操作:

方案1:使用GKE Ingress原生注解(推荐)

GKE的Ingress控制器原生支持通过注解绑定Cloud Armor安全策略,无需额外操作其他GCP资源,也不会和Kubernetes控制器的资源管理逻辑冲突,是最优选择。
你只需要在现有的kubernetes_ingress(K8s 1.19+版本建议使用kubernetes_ingress_v1)资源的metadata.annotations中添加对应配置即可,示例代码如下:

resource "kubernetes_ingress_v1" "your_ingress" {
  metadata {
    name = "你的Ingress资源名称"
    annotations = {
      # 原有注解保持不变,新增以下配置即可
      "cloud.google.com/security-policy" = google_compute_security_policy.你已创建的Cloud Armor策略资源名.name
    }
  }
  # 原有spec等配置保持不变
}

配置更新应用后,GKE Ingress控制器会自动将对应的安全策略绑定到负载均衡关联的Backend Service上,无需手动干预。

方案2:使用独立的安全策略关联资源绑定

如果因为特殊场景无法使用注解方案,可以通过Terraform Google Provider提供的独立关联资源实现绑定,不需要修改或导入原有Backend Service的完整配置,避免和GKE控制器产生资源冲突。

操作步骤:

  • 第一步:通过数据源获取Ingress自动创建的Backend Service信息
data "google_compute_backend_service" "ingress_backend" {
  # 填入Ingress自动生成的Backend Service名称,可在GCP控制台负载均衡页面查看
  name = "k8s-bs-xxxxxxx"
  # 也可以通过filter按标签匹配,避免硬编码名称
}
  • 第二步:创建安全策略关联资源
resource "google_compute_backend_service_security_policy_association" "armor_bind" {
  backend_service = data.google_compute_backend_service.ingress_backend.name
  security_policy = google_compute_security_policy.你已创建的Cloud Armor策略资源名.name
}

注意事项

  • 两种方案二选一即可,优先选择注解方案,兼容性和稳定性更高
  • 绑定操作不会中断现有负载均衡的业务流量,配置会无缝生效
  • 如果后续需要解绑,删除对应注解或关联资源即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:18:02