我正在尝试将现有的kubernetes机密导入我的Terraform状态。
秘密资源应与postgres资源一起位于模块中。这个想法是我创建postgres用户凭证并将其直接放在K8S秘密中。
资源如下:
resource "kubernetes_secret" "database-credentials" {
metadata {
name = "${var.name}-database-credentials"
}
data = {
username = "${var.name}_user"
password = random_password.password.result
}
type = "Opaque"
}
然后,我尝试使用以下命令将其导入:
terraform import module.<module_name>.kubernetes_secret.database-credentials default/<existing-secret-name>
现在,问题在于此命令失败,并显示以下错误消息:
Error: Error initializing PostgreSQL client: error detecting capabilities: error PostgreSQL version: pq: no PostgreSQL user name specified in startup packet
我不知道为什么PostgreSQL客户端需要在这里做任何事情或为什么它失败。在kubernetes秘密资源配置上方定义了postgres资源,但我只想导入一个k8s秘密。我已经定义了所有需要的必要环境变量。 terraform apply
在没有秘密的情况下可以正常运行。
有人可以指出我正确的方向吗?
答案 0 :(得分:0)
我自己弄清楚了。
https://github.com/terraform-providers/terraform-provider-postgresql/issues/2#issuecomment-567887609
TLDR:将expected_version = "<YOUR_POSTGRES_VERSION>"
添加到postgres提供程序块中。