如何实现存量业务的基础设施导入Kubevela+Terraform

由于我们的使用场景是将基础设施资源定义成KubeVela的组件,一个terraform “module”对应的就是一个kubevela的组件,对应terraform-controller的一个Configuration资源。因此导入的最小粒度是组件,即一个terraform “module”。

Terraform的terraform import

terraform原生支持一种导入资源的方式: terraform import, 用于将资源信息导入到state文件中。

命令:terraform import

如果是使用kubevela+terraform-controller,那么实际上我们是没有用terraform的module的,不需要考虑module的导入问题。这也是前面为什么给module加双引号的原因。

这个命令的缺点是,如果一个tf文件中,有多个resource就没办法支持,或者有的resource还是for_each申请的多个资源。

我们想到的办法是,由于一个tf文件中,肯定是只有一个“主”资源,其它是“子”资源,那么是不是可以只import主资源,然后通过datasource将子资源查出来,这样生成的tfstate就包含了子资源的。

举例,一个mycloud-net组件对应的tf代码:

locals {
  db_subnet_ip_cap  = 16
  as_subnet_ip_cap  = 16
  k8s_subnet_ip_cap = 64
  // vpc的ip cap大于等于所有子网的ip cap之和
  vpc

你可能感兴趣的:(云原生实战笔记,terraform,kubevela,云原生,golang)