Terraform导入Kubernetes的秘密

时间:2020-02-14 10:03:06

标签: postgresql terraform

我正在尝试将现有的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在没有秘密的情况下可以正常运行。

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我自己弄清楚了。

https://github.com/terraform-providers/terraform-provider-postgresql/issues/2#issuecomment-567887609

TLDR:将expected_version = "<YOUR_POSTGRES_VERSION>"添加到postgres提供程序块中。