使用Terraform Kubernetes Provider添加Sidecar容器的问题及示例请求
Terraform Kubernetes Provider 支持添加Sidecar容器吗?附示例及错误修复
问题场景
需要在Kubernetes Deployment中添加2个Sidecar容器,使用Terraform Kubernetes Provider时运行代码报错:
错误:属性重定义 │ │ 在deployment\deployment.tf第84行:参数"image"已在deployment\deployment.tf第28行11-16位置设置。每个参数只能设置一次。
核心结论
Terraform Kubernetes Provider 完全支持添加Sidecar容器,你遇到的错误是因为在同一个container块内重复定义了image、name这类专属属性——每个容器(包括主容器和Sidecar)都需要独立的container代码块声明。
正确示例代码
resource "kubernetes_deployment" "test_deployment" { metadata { name = "test_nginx" namespace = "test" labels = { app = "test_nginx" } } spec { replicas = 2 selector { match_labels = { app = "test_nginx" } } template { metadata { labels = { app = "test_nginx" } } spec { # 主容器:Nginx container { image = "nginx" name = "local_nginx" # 可添加主容器专属配置,比如端口、资源限制 port { container_port = 80 } } # Sidecar容器:Logrotate container { image = "logrotate" name = "local_logrotate" # 可添加Sidecar专属配置,比如挂载共享日志目录 volume_mount { name = "nginx-logs" mount_path = "/var/log/nginx" } } # 共享卷定义(按需添加) volume { name = "nginx-logs" empty_dir {} } } } } }
关键修复要点
- 每个容器必须拥有独立的
container代码块,不能在同一个块内重复声明image、name等属性 - 可根据不同容器的职责,分别配置端口、挂载卷、资源配额、环境变量等专属参数
内容的提问来源于stack exchange,提问作者Nishant Kansal
相关产品推荐
相关产品推荐

