Запретить использование kubeconfig по умолчанию модулем Terraform
Я пытаюсь создать несколько многоразовых модулей Terraform, которые предоставляют ресурсы Kubernetes в кластере. Мои модули не настраивают явно поставщика Kubernetes, ожидая, что настроенный будет создан "корневым" модулем. Я считаю, что это соответствует лучшим практикам Terraform.
Однако, если корневой модуль "забывает" предоставить настроенного поставщика Kubernetes, похоже, что Terraform предоставит его по умолчанию, и с поведением по умолчанию, использующим любой контекст, который в настоящее время может быть настроен в исполняющем пользователе. kubeconfig
. Если пользователь не обращает внимания, он может случайно изменить ресурсы не в том кластере.
Есть ли способ предотвратить такое поведение и сказать "вы должны явно передать поставщика для использования этим модулем"?
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.
}
вы можете избежать случайного использования провайдера по умолчанию.
Это нормально, но немного неочевидно, пока вы не привыкнете к шаблону.