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

如何通过Terraform将Cloud Armor绑定到GKE服务的Ingress负载均衡

Cloud Armor关联GKE Ingress的Terraform实现方案

完全可以纯通过Terraform完成该配置,以下是两种可落地的实现方案:


方案1:通过Kubernetes Provider管理BackendConfig(推荐,和原YAML实现逻辑一致)

本方案和你之前手动编写YAML部署BackendConfig的逻辑完全对齐,只是将YAML配置转换为Terraform的kubernetes_manifest资源进行管理,无需额外适配业务配置。

resource "kubernetes_manifest" "backendconfig_cloud_armor" {
  manifest = {
    apiVersion = "cloud.google.com/v1"
    kind       = "BackendConfig"
    metadata = {
      name      = "gke-service-armor-config"
      namespace = "你的业务命名空间"
    }
    spec = {
      securityPolicy = {
        name = "你的Cloud Armor安全策略名称"
      }
    }
  }
}

部署完该BackendConfig资源后,在对应Service的Terraform配置中添加如下注解即可完成关联:

resource "kubernetes_service" "your_business_service" {
  metadata {
    name = "你的业务服务名称"
    annotations = {
      "beta.cloud.google.com/backend-config" = jsonencode({
        default = kubernetes_manifest.backendconfig_cloud_armor.manifest.metadata.name
      })
    }
  }
  # 其余Service配置省略
}

方案2:直接在GCP资源层面绑定安全策略

本方案无需操作Kubernetes自定义资源,直接通过Google Provider将Cloud Armor策略关联到GKE Ingress自动生成的后端服务上,适合统一管控所有云资源的场景。

# 先获取GKE Ingress生成的Backend Service数据源
data "google_compute_backend_service" "gke_ingress_backend" {
  name = "k8s-be-xxxxxx" # 替换为你的GKE Ingress对应的后端服务名称,也可通过标签/前缀过滤动态获取
}

# 绑定Cloud Armor安全策略
resource "google_compute_backend_service_security_policy_association" "armor_bind" {
  backend_service = data.google_compute_backend_service.gke_ingress_backend.name
  security_policy = google_compute_security_policy.your_armor_policy.name
}

注意事项

  • 该配置依赖GKE Ingress已经成功创建并生成对应Backend Service,注意添加资源依赖关系避免部署报错
  • 无需硬编码Backend Service名称,可通过名称前缀、关联的负载均衡标签等方式动态过滤获取数据源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:09:05