我使用 Terraform 创建了 K8S 集群,还为 Crunchydata Postgres Operator 创建了 CRD
我从这个 link 获得了用于 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 的问题还是链接没有正确更新
请让我知道应该更改/做什么来解决这个问题,因为我被这个问题困住了
答案 0 :(得分:0)
最后,我找到了问题所在,问题是 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