从Terraform到CICD管道中的Kubernetes清单传递输出(数据库密码)

问题描述 投票:0回答:1

我正在使用Terraform来配置Azure中的资源,其中之一是Postgres数据库。我的Terraform模块包括以下内容,以生成随机密码并将其输出到控制台。

resource "random_string" "db_master_pass" {
  length            = 40
  special           = true
  min_special       = 5
  override_special  = "!-_"
  keepers           = {
    pass_version  = 1
  }
}

# For postgres
output "db_master_pass" {
  value = "${module.postgres.db_master_pass}"
}

我正在使用Kubernetes部署清单将应用程序部署到Azure托管的Kubernetes服务。是否可以在部署管道中将数据库密码传递给Kubernetes?我正在使用CircleCI for CICD。当前,我正在复制密码,将其编码为base64并将其粘贴到秘密清单中,然后再运行部署。

postgresql kubernetes configuration terraform circleci
1个回答
0
投票

一种解决方案是从模板生成Kubernetes yaml。

模式使用Terraform 0.12或早期版本的templatefile提供程序中的template函数来读取,并写入local_file资源。例如:

data "template_file" "service_template" {
  template = "${file("${path.module}/templates/service.tpl")}"
  vars {
    postgres_password = ""${module.postgres.db_master_pass}"
  }
}

resource "local_file" "template" {
  content  = "${data.template_file.service_template.rendered}"
  filename = "postegres_service.yaml"
}

[还有许多其他选择,例如使用Kubernetes提供程序,但我认为这更适合您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.