我正在使用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并将其粘贴到秘密清单中,然后再运行部署。
一种解决方案是从模板生成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提供程序,但我认为这更适合您的问题。