阻止Terraform模块使用默认的kubeconfig



我正在尝试创建一些可重用的Terraform模块,这些模块在集群上提供Kubernetes资源。我的模块没有显式地配置Kubernetes提供程序,期望由"根"模块创建已配置的提供程序。我相信这符合Terraform的最佳实践。

然而,如果根模块"忘记"提供一个已配置的Kubernetes提供程序,Terraform似乎会默认提供一个,并且默认行为是使用执行用户的kubeconfig中当前配置的任何上下文。如果用户没有注意,他们可能会无意中修改错误集群上的资源。

有没有一种方法可以防止这种行为,并有效地说"您必须显式传入一个提供程序才能使用此模块"?

我想到的最好的选择是在模块中创建一个Kubernetes提供程序,如:

# Prevents this module from loading a default context from local kubeconfig when calling module forgets to define a Kubernetes provider
provider "kubernetes" {
load_config_file = false
}

然后,只要调用模块提供不同的实例,例如:

provider "kubernetes" {
# properly configure stuff here
}
module "my-module" {
source              = "blah"
providers = {
kubernetes = kubernetes
}
etc.
}

可以避免意外使用默认提供程序。

这很好,但在你习惯这种模式之前有点不明显。

相关内容

  • 没有找到相关文章

最新更新