扩展云资源

为了使最终用户能够部署和消费云资源,当用户的要求超出了 , 管理员需要要为云资源准备 ComponentDefinitions。

以下是为云供应商阿里云、AWS 和 Azure 创建 Terraform 类型的云资源 ComponentDefinitions 的指南。

依赖

为云资源开发创建 Terraform 资源或模块。

比如我们为 AWS S3 bucket 开发了 Terraform 资源,并写入本地文件 里,内容如下:

我们也给阿里云 EIP 开发了 Terraform 模板,并存储在 GitHub 库

  1. $vela def init -h
  2. --git string Specify which git repository the configuration(HCL) is stored in. Valid when --provider/-p is set.
  3. --local string Specify the local path of the configuration(HCL) file. Valid when --provider/-p is set.

我们使用 --local 来接受来自本地文件的 Terraform 资源或模块来生成 ComponentDefinition。

我们使用 --git 来接受来自远程 GitHub 仓库的 Terraform 模块或资源来生成 ComponentDefinition。

  1. $ vela def init eip --type component --provider alibaba --desc "Terraform configuration for Alibaba Cloud Elastic IP" --git https://github.com/oam-dev/terraform-alibaba-eip.git
  2. apiVersion: core.oam.dev/v1beta1
  3. kind: ComponentDefinition
  4. metadata:
  5. annotations:
  6. IP
  7. creationTimestamp: null
  8. type: terraform
  9. name: alibaba-eip
  10. namespace: vela-system
  11. spec:
  12. schematic:
  13. terraform:
  14. configuration: https://github.com/oam-dev/terraform-alibaba-eip.git
  15. type: remote
  16. workload:
  17. definition:
  18. apiVersion: terraform.core.oam.dev/v1beta1
  19. kind: Configuration
  20. status: {}

我们热烈欢迎你将扩展的云资源的 ComponentDefinition 贡献到 。

将生成的ComponentDefinition写入到文件中并将文件命名为terraform-<ComponentDefinition_NAME>.yaml,然后将其应用到正在运行中的kubernetes集群上。

你可以通过 vela show 命令快速验证 ComponentDefinition。

  1. $ vela show alibaba-eip
  2. +----------------------------+------------------------------------------------------------------------------------------+-----------------------------------------------------------+----------+---------+
  3. | NAME | DESCRIPTION | TYPE | REQUIRED | DEFAULT |
  4. +----------------------------+------------------------------------------------------------------------------------------+-----------------------------------------------------------+----------+---------+
  5. | name | Name to be used on all resources as prefix. Default to 'TF-Module-EIP'. | string | true | |
  6. | bandwidth | Maximum bandwidth to the elastic public network, measured in Mbps (Mega bit per second). | number | true | |
  7. | writeConnectionSecretToRef | The secret which the cloud resource connection will be written to | [writeConnectionSecretToRef](#writeConnectionSecretToRef) | false | |
  8. +----------------------------+------------------------------------------------------------------------------------------+-----------------------------------------------------------+----------+---------+
  9. ## writeConnectionSecretToRef
  10. +-----------+-----------------------------------------------------------------------------+--------+----------+---------+
  11. | NAME | DESCRIPTION | TYPE | REQUIRED | DEFAULT |
  12. +-----------+-----------------------------------------------------------------------------+--------+----------+---------+
  13. | name | The secret name which the cloud resource connection will be written to | string | true | |
  14. | namespace | The secret namespace which the cloud resource connection will be written to | string | false | |
  15. +-----------+-----------------------------------------------------------------------------+--------+----------+---------+

我们鼓励你为你的 ComponentDefinition 生成文档并提交给 [KubeVela官方网站](

通过运行 命令,我们可以基于已经应用在kubernetes集群上的ComponentDefinition生成相关文档,也可以基于本地ComponentDefinition文件生成相关文档。

基于已经应用在kubernetes集群上的ComponentDefinition生成文档时,需要提供该ComponentDefinition运行的namespace。

基于本地文件生成文档时,需要提供文件路径。

  1. $ vela def doc-gen alibaba-eip.yaml

将生成的文件移到 kubevela/kubevela.io 库。参考 来提交文档。