本文主要是介绍如何实现存量业务的基础设施导入Kubevela+Terraform,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于我们的使用场景是将基础设施资源定义成KubeVela的组件,一个terraform “module”对应的就是一个kubevela的组件,对应terraform-controller的一个Configuration资源。因此导入的最小粒度是组件,即一个terraform “module”。
Terraform的terraform import
terraform原生支持一种导入资源的方式: terraform import
, 用于将资源信息导入到state文件中。
命令:terraform import <path> <resource_id>
如果是使用kubevela+terraform-controller,那么实际上我们是没有用terraform的module的,不需要考虑module的导入问题。这也是前面为什么给module加双引号的原因。
这个命令的缺点是,如果一个tf文件中,有多个resource就没办法支持,或者有的resource还是for_each申请的多个资源。
我们想到的办法是,由于一个tf文件中,肯定是只有一个“主”资源,其它是“子”资源,那么是不是可以只import主资源,然后通过datasource将子资源查出来,这样生成的tfstate就包含了子资源的。
举例,一个mycloud-net组件对应的tf代码:
locals {db_subnet_ip_cap = 16as_subnet_ip_cap = 16k8s_subnet_ip_cap = 64// vpc的ip cap大于等于所有子网的ip cap之和vpc
这篇关于如何实现存量业务的基础设施导入Kubevela+Terraform的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!