gpt4 book ai didi

kubernetes - Terraform 抛出 resource name may not be empty 错误

转载 作者:行者123 更新时间:2023-12-02 11:55:21 29 4
gpt4 key购买 nike

我收到以下我不理解的错误消息:

Error: resource name may not be empty

on main.tf line 48, in data "kubernetes_service" "spark_master_service":
48: data "kubernetes_service" "spark_master_service" {

相关数据源:

data "kubernetes_service" "spark_master_service" {
metadata {
labels = {
"app.kubernetes.io/component" = "master"
"app.kubernetes.io/instance" = "spark"
"app.kubernetes.io/name" = "spark"
}
namespace = var.namespace
}
}

我的 data 有一个名字,所以我不太明白 Terraform 告诉我的是什么。

最佳答案

这个令人困惑的错误是因为您不能将元数据标签用作数据源的输入,而只能提供命名空间和服务名称来查找它。

如果您查看 source for the data source你可以看到它只使用了 namespacename字段:

func dataSourceKubernetesServiceRead(d *schema.ResourceData, meta interface{}) error {
om := meta_v1.ObjectMeta{
Namespace: d.Get("metadata.0.namespace").(string),
Name: d.Get("metadata.0.name").(string),
}
d.SetId(buildId(om))

return resourceKubernetesServiceRead(d, meta)
}

docs确实表明这些是唯一应该使用的两个参数:

Arguments

  • name - (Optional) Name of the service, must be unique. Cannot be updated. For more info see Kubernetes reference
  • namespace - (Optional) Namespace defines the space within which name of the service must be unique.

不幸的是,文档指出命名空间和名称都是可选的,因为它们使用的共享架构部分对于大部分 Kubernetes 提供程序都是相同的,因此 Terraform 无法检查 name使用字段是因为底层实现需要它。

我没有深入研究 Kubernetes 提供程序,但对我来说这似乎是一个错误,如果资源或数据源在实践中具有与其他资源不同的模式,那么该模式应该与该实现相匹配。如果要共享如此多的 Kubernetes 模式,这可能会很棘手,但如果没有它,您将失去 Terraform 的很多优点,因为它应该是强类型的,并且能够在您做某事时为您提供更好的错误消息错了。

关于kubernetes - Terraform 抛出 resource name may not be empty 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62018567/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com