如何为Helm Release添加带配置值的Sidecar容器
为Keto Helm Release添加gcloud-sqlproxy边车容器的Terraform配置方案
问题描述
我想用Terraform的helm_release Provider为Keto的Helm Release附加gcloud-sqlproxy边车容器,但不知道如何传递sqlproxy所需的配置值。Keto文档显示deploy.extraContainers字段可设置容器名称和镜像,但不清楚如何添加sqlproxy需要的额外配置(比如命令参数、端口映射等)。以下是我的初步尝试:
locals { db_username = "postgres" sql_port = "5432" } resource "helm_release" "keto" { name = "ory" repository = "https://k8s.ory.sh/helm/charts" chart = "keto" values = [ <<EOT serviceAccount: create: false name: ${module.service_account.value.id} job: serviceAccount: create: false name: ${module.service_account.value.id} keto: config: dsn: postgres://${local.db_username}:${random_password.password.result}@pg-sqlproxy-gcloud-sqlproxy:${local.sql_port}/db deploy: extraContainers: name: gcloud-sqlproxy image: # what to place here? how to add extra values here? EOT ] }
解决方案
deploy.extraContainers支持完整的Kubernetes容器配置字段,只需按照Kubernetes容器定义格式补充所有必要参数即可。以下是完整配置示例:
locals { db_username = "postgres" sql_port = "5432" # 替换为你的Cloud SQL实例连接名,格式:项目ID:区域:实例名 sql_instance_connection_name = "your-gcp-project:us-central1:your-sql-instance" } resource "helm_release" "keto" { name = "ory" repository = "https://k8s.ory.sh/helm/charts" chart = "keto" # 根据需求指定chart版本 version = "0.13.0" values = [ <<EOT serviceAccount: create: false name: ${module.service_account.value.id} job: serviceAccount: create: false name: ${module.service_account.value.id} keto: config: dsn: postgres://${local.db_username}:${random_password.password.result}@localhost:${local.sql_port}/db deploy: extraContainers: - name: gcloud-sqlproxy image: gcr.io/cloudsql-docker/gce-proxy:latest command: - "/cloud_sql_proxy" args: - "-instances=${local.sql_instance_connection_name}=tcp:0.0.0.0:${local.sql_port}" # 若需IAM数据库认证,添加以下参数 # - "-enable_iam_login" ports: - containerPort: ${local.sql_port} name: sqlproxy securityContext: runAsNonRoot: true resources: requests: cpu: 100m memory: 128Mi limits: cpu: 200m memory: 256Mi EOT ] }
关键配置说明
- 镜像选择:使用官方gcloud sqlproxy镜像
gcr.io/cloudsql-docker/gce-proxy:latest,也可指定具体版本号。 - 命令与参数:通过
command和args指定sqlproxy启动参数,核心是-instances传入Cloud SQL实例连接名,同时映射端口到容器的5432端口。 - 端口映射:通过
ports字段暴露sqlproxy端口,Keto主容器可通过localhost:5432访问(边车与主容器共享网络命名空间,因此DSN地址改为localhost)。 - 权限配置:已指定拥有Cloud SQL访问权限的ServiceAccount,sqlproxy会自动使用该账号权限连接,无需额外挂载密钥文件。
- 资源限制:根据实际需求添加资源请求和限制,避免资源占用过高。
内容的提问来源于stack exchange,提问作者baskInEminence
相关产品推荐
相关产品推荐

