阻止Terraform模块使用默认的kubeconfig

时间:2019-11-14 16:01:26

标签: kubernetes terraform terraform-provider-kubernetes

我正在尝试创建一些可重用的Terraform模块,以在集群上配置Kubernetes资源。我的模块未明确配置Kubernetes提供程序,希望“ root”模块将创建已配置的提供程序。我相信这符合Terraform best practices

但是,如果根模块“忘记”提供配置的Kubernetes提供程序,则Terraform似乎将默认提供一个,并且默认行为是使用执行用户{{1}中当前可能配置的任何上下文}。如果用户不注意,他们可能会无意间在错误的群集上修改资源。

有没有一种方法可以防止这种行为并有效地说“您必须明确传递提供者才能使用此模块”?

1 个答案:

答案 0 :(得分:2)

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

kubeconfig

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

# 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
}

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

这很好,但是在您习惯了该模式之前,它并不明显。