存量业务的基础设施导入Kubevela+Terraform"/>
如何实现存量业务的基础设施导入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
发布评论