【问题标题】:Terraform import Kubernetes secretTerraform 导入 Kubernetes 密钥
【发布时间】:2020-05-30 02:53:31
【问题描述】:

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

有人能指点我正确的方向吗?

【问题讨论】:

  • 您是说在运行导入时遇到该错误吗?这看起来像是您在运行计划时可能会遇到的错误,您在其中创建 Postgresql 主机并尝试同时使用它,但在导入期间不应发生。
  • 是的,我在导入过程中确实遇到了该错误,但请参阅下面的答案。

标签: postgresql terraform


【解决方案1】:

我自己想通了。

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

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

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多