terraform-controller是一个专门负责terraform一类的组件"安装"的Operator,通过打包成helm,再封装成kubevela的Addon,由kubevela安装到管控集群,为其它terraform provider插件提供模块定义支持。
从前面kubevela安装一个Application的原理我们了解到,当一个如alibaba-vpc等基础设施资源组件随Application“安装”时,kubevela会将这类组件渲染为Configuration资源对象,然后apply到管控集群。接着就由terraform-controller监听Configuration资源事件,负责后续的云资源申请并将结果输出了。
另外,要能够正常申请云资源,我们还使用vela config create
命令创建出一个Provider资源对象,在Application.yaml声明云资源组件的时候配置providerRef,引用这个Provider资源对象。kubevela在渲染Configuration资源对象的时候会传给Configuration资源对象。
Configuration、Provider两种资源类型就是terraform controller提供的两种CRD。
- Configuration:资源配置文件,terraform controller会根据Configuration资源的spec转成tf代码文件然后启动个job去apply。
apiVersion