kubernetes - terrafrom 提供者传递给子模块不起作用
问题描述
我有一个模块调用另一个模块,我将 kubernetes 提供程序从主模块传递到第一个模块,然后将它传递给另一个模块。传递给第一个模块的提供者工作正常,但从第一个模块传递给其他模块的提供者不起作用
主文件
data "google_container_cluster" "gke" {
depends_on = [module.gke]
name = var.gke_cluster_name
project = var.project_id
location = var.gke_zone
}
provider "kubernetes" {
alias = "my-kuber"
host = "https://${data.google_container_cluster.gke.endpoint}"
token = data.google_client_config.provider.access_token
cluster_ca_certificate = base64decode(data.google_container_cluster.gke.master_auth[0].cluster_ca_certificate)
load_config_file = false
}
module "first-module" {
source = "./modules/first-module"
providers {
kubernetes.my-kuber = kubernetes.my-kuber
}
.
.
.
}
第一个模块.tf
provider "kubernetes" {
alias = "my-kuber"
}
module "sub-module" {
source = "./modules/second-module"
providers {
kubernetes.my-kuber = kubernetes.my-kuber
}
.
.
.
}
第二个模块.tf
provider "kubernetes" {
alias = "my-kuber"
}
resource "kubernetes_namespace" "ns" {
provider = kubernetes.my-kuber
metadata {
name = var.namespace
}
}
此处传递给的 kubernetes.my-kubersecond_module.tf
没有正确的集群凭据,因此失败
我错过了什么吗?是否支持将提供程序向下传递到子模块?
提前致谢
解决方案
您不需要将您的提供者“传递”给您的模块。仅当您有多个 kubernetes 提供程序时才需要模块中的providers
属性,这似乎不是您的情况。仅在您正在执行的根模块中定义提供程序terraform plan
,您不需要子模块中的提供程序块。Terraform 能够根据资源类型定义使用哪个提供者:kubernetes_namespace
意味着提供者是 kubernetes。
像这样的东西应该可以正常工作:
主文件
data "google_container_cluster" "gke" {
depends_on = [module.gke]
name = var.gke_cluster_name
project = var.project_id
location = var.gke_zone
}
provider "kubernetes" {
host = "https://${data.google_container_cluster.gke.endpoint}"
token = data.google_client_config.provider.access_token
cluster_ca_certificate = base64decode(data.google_container_cluster.gke.master_auth[0].cluster_ca_certificate)
load_config_file = false
}
module "first-module" {
source = "./modules/first-module"
.
.
.
}
第一个模块.tf
module "sub-module" {
source = "./modules/second-module"
.
.
.
}
第二个模块.tf
resource "kubernetes_namespace" "ns" {
metadata {
name = var.namespace
}
}
推荐阅读
- can-bus - CAN CSMA-CD 和仲裁
- excel - 在 Excel 中翻译数字字符串
- reactjs - 反应代码拆分:ChunkLoadError:加载块 0 失败
- excel - excel中的分组分隔符
- clockify - POST 并合并以获得更多功能
- javascript - ESLint 如何修复解析错误:'import' 和 'export' 可能只出现在顶层
- google-cloud-platform - 谷歌云欧洲地区与大查询和数据流不匹配
- php - 准备好的语句将列设置为空
- sql - 在函数 Oracle PLSQL 中带最高薪水员工 id 的查询?
- excel - 如何通过 Excel VBA 记下 Arena sim 的所有复制结果