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

Terraform中Kubernetes Pod元数据名称正则验证错误求助

解决Terraform中Kubernetes Pod名称的RFC 1123正则验证错误

问题根源

Kubernetes要求Pod名称必须符合RFC 1123子域名规范:仅允许小写字母、数字、-或.,且首尾必须是字母或数字。你的错误是因为var.apps中app2_name对应的app_name值违反了这个规则——可能包含大写字母、下划线或其他非法字符,或者首尾是符号。

解决方法

方法1:修正源数据(推荐)

直接确保var.apps里所有app_name字段严格符合Kubernetes命名规则:

  • 全小写字母/数字
  • 仅允许-和.作为分隔符
  • 首尾不能是符号

方法2:用Terraform字符串函数自动格式化名称

如果无法修改源数据,通过Terraform的字符串处理函数把app_name转换成合法格式:

resource "kubernetes_pod" "kube_usage" {
  for_each = var.apps
  metadata {
    # 先转小写→替换非法字符为'-'→去除首尾'-'→拼接'-pod'
    name = "${trim(lower(regex_replace(each.value.app_name, "[^a-z0-9.-]", "-")), "-")}-pod"
    labels = {
      app = each.value.app_name
    }
  }

  spec {
    container {
      name  = each.value.app_name
      image = each.value.image
      resources {
        limits = {
          cpu    = "500m"
          memory = "512Mi"
        }
        requests = {
          cpu    = "200m"
          memory = "256Mi"
        }
      }
    }
  }
}

各函数作用:

  • lower():将所有字符转为小写,满足规范的小写要求
  • regex_replace():把所有不符合规则的字符替换为-,避免非法字符残留
  • trim():去除处理后字符串首尾的-,保证名称以字母/数字开头和结尾

比如原app_name是App2_Name_,处理后会变成app2-name-pod,完全符合Kubernetes的命名规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:05:34