【发布时间】:2022-03-23 22:11:01
【问题描述】:
我在 AWS 中部署了一个 EKS 集群,我使用 terraform 将组件部署到该集群。
为了获得身份验证,我使用了以下提供集群 API 身份验证的EKS datasources:
data "aws_eks_cluster_auth" "cluster" {
name = var.cluster_id
}
data "aws_vpc" "eks_vpc" {
id = var.vpc_id
}
并使用多个 local-exec 供应商(除其他资源外)内的令牌来部署组件
resource "null_resource" "deployment" {
provisioner "local-exec" {
working_dir = path.module
command = <<EOH
kubectl \
--server="${data.aws_eks_cluster.cluster.endpoint}" \
--certificate-authority=./ca.crt \
--token="${data.aws_eks_cluster_auth.cluster.token}" \
apply -f test.yaml
EOH
}
}
我遇到的问题是某些资源需要一些时间来部署,并且在 terraform 执行下一个资源时,我收到此错误,因为令牌已过期:
exit status 1. Output: error: You must be logged in to the server (the server has asked for the client to provide credentials)
有没有办法在运行 local-execs 之前强制重新创建data?
【问题讨论】:
-
哪些资源特别需要很长时间?您可以尝试使用depends_on 关系对它们进行排序,这样
deployment可以直接在aws_eks_cluster_auth之后运行 -
嗨!我尝试订购了一些资源,例如 fargate_profiles、helm-charts、负载均衡器等,但有些组件具有很强的依赖性,需要首先执行。
标签: terraform terraform-provider-aws amazon-eks