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

如何使用Terraform为.env文件赋值并创建K8s Secret

使用Terraform直接配置.env文件并创建Kubernetes Secret

完全可以用Terraform完成.env文件的变量替换与Secret创建,无需额外脚本。以下是修正后的方案,包含关键步骤和代码示例:

步骤1:准备.env模板文件

将你的app.env修改为模板文件(例如命名为app.env.tmpl),把需要替换的值改为Terraform模板占位符:

JAVA_OPTS ="${java_opts}"
NGINX_VERSION="${nginx_version}"
TOMCAT_VERSION="${tomcat_version}"
POSTGRES_VERSION="${postgres_version}"

步骤2:定义Terraform变量(可选但推荐)

在variables.tf中定义环境变量,方便不同环境切换:

variable "java_opts" {
  type        = string
  description = "JVM启动参数"
  default     = "-Xmx512m -Xms256m"
}

variable "nginx_version" {
  type        = string
  description = "Nginx版本"
  default     = "1.25.3"
}

variable "tomcat_version" {
  type        = string
  description = "Tomcat版本"
  default     = "9.0.80"
}

variable "postgres_version" {
  type        = string
  description = "PostgreSQL版本"
  default     = "15.4"
}

步骤3:编写Kubernetes Secret资源配置

直接通过Terraform动态生成.env内容并创建Secret,替代你原来的错误代码:

resource "kubernetes_secret" "app_env" {
  metadata {
    name      = "app-env"
    namespace = "test-deployment"
  }
  type = "Opaque"

  data = {
    "app.env" = base64encode(templatefile("./tomcat/app.env.tmpl", {
      java_opts        = var.java_opts
      nginx_version    = var.nginx_version
      tomcat_version   = var.tomcat_version
      postgres_version = var.postgres_version
    }))
  }
}

关键说明

  • templatefile函数:读取模板文件,传入变量替换占位符,生成最终的.env文本内容
  • base64encode函数:Kubernetes Secret的data字段要求值为Base64编码,直接对生成的.env内容进行编码即可
  • 无需你原来的data "kubernetes_secret"块:该块用于读取已存在的Secret,不是模板生成工具

环境切换方法

  • 通过tfvars文件:创建不同环境的变量文件(如dev.tfvars、prod.tfvars),执行时指定:
    terraform apply -var-file=dev.tfvars
    
  • 通过环境变量:直接传递变量值:
    TF_VAR_java_opts="-Xmx1g" TF_VAR_postgres_version="15.5" terraform apply
    

验证结果

创建完成后,可通过以下命令查看Secret中的.env内容:

kubectl get secret app-env -n test-deployment -o jsonpath='{.data.app\.env}' | base64 -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:10:51