我使用terraform管理一个已建立的AWS ECS应用程序。terraform还管理4个AWS环境中每个环境的所有其他方面,包括VPC、子网、堡垒主机、RDS数据库、安全组等。
我们通过将所有公共配置放在模块中来管理我们的4个环境,这些模块使用从环境特定的terraform文件派生的变量进行参数化。
现在,我们正在尝试迁移到使用Kubernetes而不是Amazon来进行容器编排,而我正试图逐步地实现这一点,而不是使用一种大爆炸的方法。特别是,我想使用terraform提供Kubernetes集群并将其链接到其他AWS资源。
我最初希望做的是捕获来自kops create cluster
的terraform输出,通过使用特定于环境的变量参数化它来概括它,然后在所有4个环境中使用这个kubernetes模块。
但是,我现在意识到这是行不通的,因为k8s节点和主节点都引用了kops状态桶(在s3中),而且我似乎要克隆这个桶并重写其中包含的文件。这似乎是管理kubernetes环境的一种相当脆弱的方法--如果我重新创建terraform环境,相关的状态kops状态桶将与AWS环境不一致。
在我看来,kops生成的terraform对于管理一个环境的单个实例可能很有用,但它并不容易应用于多个环境--实际上每个环境都需要一个kops生成的terraform,并且没有办法重用terraform来创建一个新的环境--为此,您必须放弃声明式方法,转而使用命令式的kops create cluster
命令。
我是不是缺少一种很好的方法来管理具有单个terraform模块的多个类似kubernetes环境的定义?
发布于 2018-09-26 15:09:53
我不知道你是如何得出结论的,Terraform (这将带来比它所解决的更多的麻烦,这绝对是一个摆脱asap的工具),或者不得不复制S3存储桶。
我很肯定你会对kops的聚类模板特性感兴趣。
您不需要生成、攻击和启动(并调试.)Terraform和kops模板同样简单,即使不是非常简单(而且更具体.)比地形更能维持。当kops发布新版本时,您也不必重新生成和重新攻击您的Terraform脚本!
希望这能有所帮助!
https://stackoverflow.com/questions/52510842
复制相似问题