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

如何使用Terraform配置nginx.ingress.kubernetes.io/server-snippet注解

在Terraform中配置Nginx Ingress的server-snippet注解

我需要用Terraform配置如下Nginx Ingress注解:

nginx.ingress.kubernetes.io/server-snippet: |-
  location ~* /admin {
    allow xxx.xxx.xxx.xxx;
    deny all;
}

我知道可以通过Terraform的helm_release资源的set块配置普通字符串类型的参数,比如:

resource "helm_release" "keycloak" {
  repository = "https://charts.bitnami.com/bitnami"
  chart      = "keycloak"
  namespace  = kubernetes_namespace.keycloak.metadata[0].name
  name       = "keycloak"

  set {
    name  = "replicaCount"
    value = 1
  }
}

但不知道该如何配置多行内容的nginx.ingress.kubernetes.io/server-snippet注解。


方法一:用set块配合多行字符串

在Terraform的set块里,你可以用**多行字符串语法(heredoc)**来保留注解的换行和格式,具体配置如下:

resource "helm_release" "your_ingress_chart" {
  repository = "你的Chart仓库地址"
  chart      = "你的Ingress Chart名称"
  namespace  = "目标命名空间"
  name       = "Release名称"

  set {
    name  = "ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/server-snippet"
    value = <<EOF
location ~* /admin {
  allow xxx.xxx.xxx.xxx;
  deny all;
}
EOF
    type = "string"
  }
}

注意点:

  • name字段:因为参数名里的点号会被Helm解析为层级,所以要用\\.转义;路径ingress.annotations.xxx对应Ingress资源里的annotations层级。
  • value字段:用<<EOF包裹多行内容,完全保留Nginx配置的原始格式,不用手动转义换行。
  • type字段:显式指定为"string",避免Helm把多行内容误解析为其他类型。

方法二:用单独的values文件(更易维护)

如果注解内容复杂,推荐把配置写到单独的values.yaml文件里,再通过Terraform引入:

  1. 创建ingress-values.yaml文件:
ingress:
  annotations:
    nginx.ingress.kubernetes.io/server-snippet: |-
      location ~* /admin {
        allow xxx.xxx.xxx.xxx;
        deny all;
      }
  1. 在Terraform中引用该文件:
resource "helm_release" "your_ingress_chart" {
  repository = "你的Chart仓库地址"
  chart      = "你的Ingress Chart名称"
  namespace  = "目标命名空间"
  name       = "Release名称"

  values = [file("${path.module}/ingress-values.yaml")]
}

这种方式更清晰,后续修改配置也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:35:14