首页 > 解决方案 > 如何在 Terraform 上使用 CRD 创建 crunchydata postgres 集群?

问题描述

我使用 Terraform 创建了 K8S 集群,还为 Crunchydata Postgres Operator 创建了 CRD

我从此链接获得了用于 Postgres 集群创建的 CRD

Terraform 脚本如下所示(定制输出)

resource "kubectl_manifest" "pgocluster" {
  yaml_body = <<YAML
apiVersion: crunchydata.com/v1
kind: Pgcluster
metadata:
  annotations:
    current-primary: ${var.pgo_cluster_name}
  labels:
    crunchy-pgha-scope: ${var.pgo_cluster_name}
    deployment-name: ${var.pgo_cluster_name}
    name: ${var.pgo_cluster_name}
    pg-cluster: ${var.pgo_cluster_name}
    pgo-version: 4.6.2
    pgouser: admin
  name: ${var.pgo_cluster_name}
  namespace: ${var.cluster_namespace}
YAML
}

但是当我执行“terraform apply”时,它错误为

Error: pgo/UserGrp failed to create kubernetes rest client for update of resource: resource [crunchydata.com/v1/Pgcluster] isn't valid for cluster, check the APIVersion and Kind fields are valid

但是,根据上面提到的官方链接,以下应该可以工作

apiVersion: crunchydata.com/v1
kind: Pgcluster

我不确定是 Terraform 的问题还是链接没有正确更新

请让我知道应该改变/做些什么来解决这个问题,因为我遇到了这个问题

标签: postgresqlterraform

解决方案


最后,我发现了问题,问题pgo_cluster_name不是小写的

只有当我单独执行目标时,我才能得到以下错误,即terraform apply --target=<target_name>

Error: pgo/UserGrp failed to run apply: error when creating "/tmp/773985147kubectl_manifest.yaml": Pgcluster.crunchydata.com "UserGrp" is invalid: metadata.name: Invalid value: "UserGrp": a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

我设置pgo_cluster_name=UsrGrp而不是pgo_cluster_name=usrgrp


推荐阅读