【问题标题】:Prevent usage of default kubeconfig by Terraform module防止 Terraform 模块使用默认 kubeconfig
【发布时间】:2020-03-10 15:51:27
【问题描述】:

我正在尝试创建一些可重用的 Terraform 模块,用于在集群上配置 Kubernetes 资源。我的模块没有明确配置 Kubernetes 提供程序,期望配置的提供程序将由“根”模块创建。我相信这符合Terraform best practices

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

有没有办法防止这种行为并有效地说“你必须明确地传入一个提供程序供这个模块使用”?

【问题讨论】:

    标签: kubernetes terraform terraform-provider-kubernetes


    【解决方案1】:

    我想出的最佳选择是在模块中创建一个 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.
    }
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      相关资源
      最近更新 更多