版本:v1.8

获得更多?

KubeVela 是可编程的,你可以通过自定义模块轻松地扩展它,主流的方式是通过以下的途径发现、安装新的扩展能力:

KubeVela 安装时就自带了很多开箱即用的功能,可以查看如下手册了解详情:

你可以通过安装 KubeVela 的插件(Addon)获取更多的扩展能力。

KubeVela 官方团队维护了一个默认的插件仓库 (https://addons.kubevela.net) ,默认情况下会从这个仓库实时发现。

  1. vela addon list

该命令会输出所有插件版本以及你安装的版本

  1. NAME REGISTRY DESCRIPTION AVAILABLE-VERSIONS STATUS
  2. ocm-gateway-manager-addon KubeVela ocm-gateway-manager-addon is the OCM addon automates the cluster-gateway apiserver. [1.3.2, 1.3.0, 1.1.11] disabled
  3. rollout KubeVela Provides basic batch publishing capability. [1.3.0, 1.2.4, 1.2.3] disabled
  4. terraform-baidu KubeVela Kubernetes Terraform Controller Provider for Baidu Cloud [1.0.1, 1.0.0] disabled
  5. terraform-tencent KubeVela Kubernetes Terraform Controller Provider for Tencent Cloud [1.0.1, 1.0.0] disabled
  6. model-serving KubeVela Enable serving for models [1.0.0] disabled
  7. model-training KubeVela Enable training for models [1.0.0] disabled
  8. terraform KubeVela Terraform Controller is a Kubernetes Controller for Terraform. [1.0.6] disabled
  9. terraform-aws KubeVela Kubernetes Terraform Controller for AWS [1.0.1, 1.0.0] disabled
  10. terraform-azure KubeVela Kubernetes Terraform Controller for Azure [1.0.1, 1.0.0] disabled
  11. terraform-gcp KubeVela Kubernetes Terraform Controller Provider for Google Cloud Platform [1.0.1, 1.0.0] disabled
  12. dex KubeVela Enable dex for login [0.6.5] disabled
  13. ocm-hub-control-plane KubeVela ocm-hub-control-plane can install OCM hub control plane to the central cluster. [0.6.0] disabled
  14. terraform-ucloud KubeVela Kubernetes Terraform Controller Provider for UCloud [1.0.1, 1.0.0] disabled
  15. fluxcd KubeVela Extended workload to do continuous and progressive delivery [1.1.0, 1.0.0] disabled
  16. velaux KubeVela KubeVela User Experience (UX). An extensible, application-oriented delivery and management Dashboard. [v1.3.0, v1.3.0-beta.2, 1.2.4] enabled (v1.3.0)
  17. terraform-alibaba KubeVela Kubernetes Terraform Controller for Alibaba Cloud [1.0.2, 1.0.1] disabled

最简单的安装命令如下:

  1. vela addon enable fluxcd

期望输出

  1. I0111 21:45:24.553174 89345 apply.go:106] "creating object" name="addon-fluxcd" resource="core.oam.dev/v1beta1, Kind=Application"
  2. I0111 21:45:25.258914 89345 apply.go:106] "creating object" name="helm" resource="core.oam.dev/v1beta1, Kind=ComponentDefinition"
  3. I0111 21:45:25.342731 89345 apply.go:106] "creating object" name="kustomize-json-patch" resource="core.oam.dev/v1beta1, Kind=TraitDefinition"
  4. I0111 21:45:25.382201 89345 apply.go:106] "creating object" name="kustomize-patch" resource="core.oam.dev/v1beta1, Kind=TraitDefinition"
  5. I0111 21:45:25.411723 89345 apply.go:106] "creating object" name="kustomize" resource="core.oam.dev/v1beta1, Kind=ComponentDefinition"
  6. I0111 21:45:25.625815 89345 apply.go:106] "creating object" name="kustomize-strategy-merge" resource="core.oam.dev/v1beta1, Kind=TraitDefinition"
  7. I0111 21:45:25.660129 89345 apply.go:106] "creating object" name="component-uischema-helm" resource="/v1, Kind=ConfigMap"
  8. Addon: fluxcd enabled Successfully.

你可以通过通过设置 --version 启动参数,来指定安装插件的某个特定版本。例如:

  1. vela addon enable fluxcd --version=1.0.0

如果不指定该参数,默认会安装此插件的最新版本。

启用一个插件时,默认会在所有子集群中安装该插件,你也可以通过设置 --cluster 启动参数选择安装在某些集群当中。例如:

  1. vela addon enable <addon-name> --clusters={cluster1,cluster2}

某些插件支持在启用时设置一些参数。例如 velaux 插件支持通过设置 repo 参数使用其他的镜像仓库。你就可以通过以下命令设置使用你自己的镜像仓库:

  1. vela addon enable velaux repo=<your repo address>

如果因为某些原因,你的环境无法通过访问插件包仓库,你可以通过指定本地的插件包目录来进行离线安装。如下所示:

  1. $ ls
  2. README.md fluxcd ocm-cluster-manager terraform terraform-alibaba terraform-aws terraform-azure velaux
  3. $ vela addon enable velaux/
  4. Addon: velaux enabled Successfully

需要注意的是,在安装插件过程当中,仍可能需要从网络中拉取镜像或者 helm chart,如果你的网络环境同样无法访问这些地址,请参考文档进行完整的离线安装。

具有插件管理权限的用户可以进入插件管理页面,进行插件启用/停用等操作。

addon list

如上图所示,在插件列表中,你可以查看到插件启用状态和其他基础信息。点击插件名称可以进入到插件详情页面,你可以查询到插件的版本列表,提供的扩展类型和介绍信息。

addon detail

选择一个部署版本(默认为最新),设置需要部署的集群后,你可以点击 启用 按钮安装该插件。对于已启用的插件,如果没有应用使用该插件提供的扩展,你可以点击禁用按钮来卸载它。

如果你想通过 Kubernetes YAML 的方式安装插件或者使用 kubectl 命令行安装插件,你可以通过如下命令将 addon 变成 YAML 渲染出来。

  1. vela addon enable velaux --dry-run

期望输出

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. creationTimestamp: null
  5. labels:
  6. addons.oam.dev/name: velaux
  7. addons.oam.dev/registry: KubeVela
  8. addons.oam.dev/version: v1.5.8
  9. name: addon-velaux
  10. namespace: vela-system
  11. spec:
  12. components:
  13. - name: apiserver
  14. properties:
  15. cmd:
  16. - apiserver
  17. - --datastore-type=kubeapi
  18. image: oamdev/vela-apiserver:v1.5.8
  19. ports:
  20. - expose: true
  21. port: 8000
  22. protocol: TCP
  23. traits:
  24. - properties:
  25. name: kubevela-vela-core
  26. type: service-account
  27. - properties:
  28. replicas: 1
  29. type: scaler
  30. type: webservice
  31. - dependsOn:
  32. - apiserver
  33. name: velaux
  34. properties:
  35. env:
  36. - name: KUBEVELA_API_URL
  37. value: apiserver.vela-system:8000
  38. exposeType: ClusterIP
  39. image: oamdev/velaux:v1.5.8
  40. ports:
  41. - expose: true
  42. port: 80
  43. protocol: TCP
  44. traits:
  45. - properties:
  46. replicas: 1
  47. type: scaler
  48. type: webservice
  49. status: {}
  50. ---
  51. apiVersion: v1
  52. data:
  53. ui-schema: '[{"jsonKey":"replicas","validate":{"min":0,"required":true}}]'
  54. kind: ConfigMap
  55. metadata:
  56. creationTimestamp: null
  57. name: trait-uischema-scaler
  58. namespace: vela-system
  59. ---
  60. apiVersion: v1
  61. data:
  62. ui-schema: '[{"jsonKey":"selector","sort":100,"uiType":"ComponentSelect"},{"jsonKey":"components","sort":101,"uiType":"ComponentPatches"}]'
  63. kind: ConfigMap
  64. metadata:
  65. creationTimestamp: null
  66. name: policy-uischema-override
  67. namespace: vela-system
  68. ... snip ...

可以直接通过下面一行命令直接部署验证:

  1. vela addon enable velaux --dry-run | kubectl apply -f -

获得更多? - 图3警告

使用 dry-run 生成的 YAML 虽然可以直接部署,但是会损失 addon 命令行中对版本的检验和依赖检查等保护,请确保你使用的是合适的插件版本。

如果你想获取插件的详细信息,或者查看插件支持哪些启用参数等其他信息,你就可以用 addon status 的命令。 例如:

  1. vela addon enable velaux --verbose

期望输出

  1. velaux: disabled
  2. KubeVela User Experience (UX). An extensible, application-oriented delivery and management Dashboard.
  3. ==> Registry Name
  4. KubeVela
  5. ==> Available Versions
  6. [v1.4.3, v1.4.2, v1.4.0, v1.4.0-beta.2, v1.3.6, v1.3.4, v1.3.3, v1.3.2, ...]
  7. ==> Dependencies
  8. []
  9. ==> Parameters
  10. -> dbType: Specify the database type, current support KubeAPI(default) and MongoDB.
  11. default: "kubeapi"
  12. required:
  13. -> dbURL: Specify the MongoDB URL. it only enabled where DB type is MongoDB.
  14. -> gatewayDriver: Specify the gateway type.
  15. default: "nginx"
  16. required:
  17. -> imagePullSecrets: Specify the names of imagePullSecret for private image registry, eg. "{a,b,c}"
  18. -> serviceType: Specify the service type.
  19. default: "ClusterIP"
  20. required:
  21. -> database: Specify the database name, for the kubeapi db type, it represents namespace.
  22. -> dex: Specify whether to enable the dex
  23. default: "false"
  24. required:
  25. -> domain: Specify the domain, if set, ingress will be created if the gateway driver is nginx.
  26. -> repo: Specify the image hub of velaux, eg. "acr.kubevela.net"
  27. -> serviceAccountName: Specify the serviceAccountName for apiserver
  28. default: "kubevela-vela-core"
  29. required:

如上所示, 命令结果包含了一个插件的参数详细信息,可用版本,依赖的其他的插件等信息。

安装完成后,插件中的功能会以组件,运维特征,工作流步骤等形式呈现,你可以通过 vela componentvela trait 等命令查看新增的能力,也可以在插件的参考文档中查看每个官方插件对应的能力.

获得更多? - 图4警告

删除前请确认插件对应的能力没有被任何应用使用。

  1. $ vela addon disable fluxcd
  2. Successfully disable addon:fluxcd
  1. vela addon registry list

期望输出

  1. Name Type URL
  2. KubeVela helm https://addons.kubevela.net

KubeVela 社区在 Github 上维护了一个官方的正式插件包仓库 和一个试验阶段插件包仓库 。你在相应的仓库中找到插件包的定义文件。

同时这些文件会被同步到 对象存储 当中,以加快下载速度。

你可以添加自己的插件包仓库,目前支持 OSS 和 Github 两种仓库类型。

  1. vela addon registry add experimental --type OSS --endpoint=https://addons.kubevela.net --path=experimental/

期望输出

  1. Successfully add an addon registry experimental
  1. vela addon registry delete experimental

期望输出

  1. Successfully delete an addon registry experimental

如果你的环境中添加了若干个子集群,启用插件包时会默认在管控集群和所有子集群中安装此插件包。但如果子集群在某个插件包启用之后加入环境当中,则需要通过升级操作在新加入集群中安装此插件包。如下所示

  1. vela addon upgrade velaux

期望输出

  1. Addon:
  2. enabled Successfully

如果你对 KubeVela 扩展很感兴趣,你也可以了解 CUE 体系开始自定义扩展能力,KubeVela 具备非常灵活的扩展能力。

非常欢迎广大开发者们阅读开发者手册,了解更多的 KubeVela 细节,参与到社区的贡献中来。

Last updated on 2023年5月6日 by Tianxin Dong