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

Terraform AKS模块如何实现max_surge参数的正则校验与规则限制?

AKS Terraform模块max_surge参数校验实现方案

变量声明及校验规则

直接在variables.tf中使用如下定义即可覆盖所有合法场景,同时满足百分比不超过33%的限制:

variable "max_surge" {
  type        = any
  description = "AKS节点池升级时的最大 surge 数量/占比,百分比取值不可超过33%"
  validation {
    condition = (
      # 适配数字类型的纯数值输入,要求为正整数
      (
        try(type(var.max_surge) == number, false) &&
        var.max_surge > 0 &&
        floor(var.max_surge) == var.max_surge
      ) ||
      # 适配字符串类型输入
      (
        try(type(var.max_surge) == string, false) &&
        (
          # 纯数字字符串场景
          can(regex("^\\d+$", var.max_surge)) ||
          # 百分比场景,校验格式+数值上限
          (
            can(regex("^\\d+%$", var.max_surge)) &&
            tonumber(trimsuffix(var.max_surge, "%")) <= 33
          )
        )
      )
    )
    error_message = "max_surge 参数仅支持正整数(数字/字符串格式均可)或不超过33%的百分比字符串格式,示例合法值:3、\"5\"、\"30%\"。"
  }
}

补充适配说明

  • 如果你不需要兼容数字类型输入,希望强制用户统一传字符串格式,可将type改为string,删除condition中第一个数字类型判断的分支即可
  • 如果需要支持带小数的百分比(例如32.5%),可将百分比匹配的正则改为^\\d+(\\.\\d+)?%$,tonumber可以正常识别小数完成比较
  • 上述校验会在terraform plan阶段提前拦截非法输入,不会等到调用Azure API时才报错

资源块引用保持不变

你原来的azurerm_kubernetes_cluster资源中的配置不需要修改,直接沿用即可:

upgrade_settings {
    max_surge = var.max_surge    
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:06