问题在于此配置
cluster_ca_certificate = base64decode(module.primary.cluster_certificate_authority_data.data)
到目前为止
Can't access attributes on a primitive-typed value (string).
有关错误。
输出
cluster_certificate_authority_data
在地形中,aws-eks模块已经包含来自的值
aws_eks_cluster.this[0].certificate_authority[0].data
因此这里的正确参考
cluster_ca_certificate
应该是
base64decode(module.primary.cluster_certificate_authority_data)
provider "kubernetes" {
host = module.primary.cluster_endpoint
cluster_ca_certificate = base64decode(module.primary.cluster_certificate_authority_data)
exec {
api_version = "client.authentication.k8s.io/v1beta1"
command = "aws"
args = ["eks", "get-token", "--cluster-name", module.primary.cluster_name]
}
}
provider "helm" {
kubernetes {
host = module.primary.cluster_endpoint
cluster_ca_certificate = base64decode(module.primary.cluster_certificate_authority_data)
exec {
api_version = "client.authentication.k8s.io/v1beta1"
command = "aws"
args = ["eks", "get-token", "--cluster-name", module.primary.cluster_name]
}
}
}
可选信息(与您的问题无关)
一般来说,我还建议将EKS集群部署和Kubernetes资源/工作负载部署分开。通过将两个提供者的资源保持在不同的Terraform状态,我们可以将更改范围限制在EKS集群或Kubernetes资源上。
hashicorp
/terraform-provider-kubernetes
正式建议