Version: v1.1

Helm 组件

KubeVela 的 helm 组件满足了用户对接 Helm Chart 的需求,你可以通过 helm 组件部署任意来自 Helm 仓库、Git 仓库或者 OSS bucket 的现成 Helm Chart 软件包,并对其进行参数覆盖。

部署来自 Helm 仓库的 Chart

来自 Helm 仓库的 Chart 包部署方式,我们以一个 redis-comp 组件为例。它是来自 bitnami Helm 仓库的 Chart。Chart 类型为 redis-cluster,版本 6.2.7

  1. cat <<EOF | kubectl apply -f -
  2. apiVersion: core.oam.dev/v1beta1
  3. kind: Application
  4. metadata:
  5. name: app-delivering-chart
  6. spec:
  7. components:
  8. - name: redis-comp
  9. type: helm
  10. properties:
  11. chart: redis-cluster
  12. version: 6.2.7
  13. url: https://charts.bitnami.com/bitnami
  14. repoType: helm
  15. EOF

请复制上面的代码块,直接部署到运行时集群:

  1. application.core.oam.dev/app-delivering-chart created

最后我们使用 vela ls 来查看交付成功后的应用状态:

  1. APP COMPONENT TYPE TRAITS PHASE HEALTHY STATUS CREATED-TIME
  2. app-delivering-chart redis-comp helm running healthy 2021-08-28 18:48:21 +0800 CST

我们也看到 app-delivering-chart APP 的 PHASE 为 running,同时 STATUS 为 healthy。

参数说明

参数是否可选含义例子
repoType必填值为 Helm,标志 chart 来自 Helm 仓库库Helm
pullInterval可选与 Helm 仓库进行同步,与调谐 Helm release 的时间间隔 默认值5m(5分钟)10m
url必填Helm 仓库地址,支持 http/httpshttps://charts.bitnami.com/bitnami
secretRef可选存有拉取仓库所需凭证的 Secret 对象名,对 HTTP/S 基本鉴权 Secret 中必须包含 username 和 password 字段。对于 TLS the secret must contain a certFile and keyFile, and/or // caCert fields.对 TLS 鉴权 Secret 中必须包含 certFile / keyFile 字段 和/或 caCert 字段。sec-name
timeout可选拉取仓库索引的超时时间60s
chart必填chart 名称redis-cluster
version可选chart 版本,默认为*6.2.7
targetNamespace可选安装 chart 的名字空间,默认由 chart 本身决定your-ns
releaseName可选安装得到的 release 名称your-rn
values可选覆写 chart 的 Values.yaml ,用于 Helm 渲染。见来自 Git 仓库的例子

部署来自 OSS bucket 的 Chart

参数是否可选含义例子
repoType必填值为 oss 标志 chart 来自 OSS bucketoss
pullInterval可选与 bucket 进行同步,与调谐 Helm release 的时间间隔 默认值5m(5分钟)10m
url必填bucket 的 endpoint,无需填写 schemeoss-cn-beijing.aliyuncs.com
secretRef可选保存一个 Secret 的名字,该Secret是读取 bucket 的凭证。Secret 包含 accesskey 和 secretkey 字段sec-name
timeout可选下载操作的超时时间,默认 20s60s
chart必填chart 存放路径(key)./chart/podinfo-5.1.3.tgz
version可选在 OSS 来源中,该参数不起作用
targetNamespace可选安装 chart 的名字空间,默认由 chart 本身决定your-ns
releaseName可选安装得到的 release 名称your-rn
values可选覆写 chart 的 Values.yaml ,用于 Helm 渲染。见来自 Git 仓库的例子
oss.bucketName必填bucket 名称your-bucket
oss.provider可选可选 generic 或 aws,若从 aws EC2 获取凭证则填 aws。默认 generic。generic
oss.region可选bucket 地区

使用示例

  1. (可选)如果你的 OSS bucket 需要身份验证, 创建 Secret 对象:
  1. $ kubectl create secret generic bucket-secret --from-literal=accesskey=<your-ak> --from-literal=secretkey=<your-sk>
  2. secret/bucket-secret created
  1. 部署 chart
  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: bucket-app
  5. spec:
  6. components:
  7. - name: bucket-comp
  8. type: helm
  9. properties:
  10. repoType: oss
  11. # required if bucket is private
  12. secretRef: bucket-secret
  13. chart: ./chart/podinfo-5.1.3.tgz
  14. url: oss-cn-beijing.aliyuncs.com
  15. oss:
  16. bucketName: definition-registry

上面的示例中,Application 中名为 bucket-comp 的组件交付了一个来自 endpoint 为 oss-cn-beijing.aliyuncs.com 的 OSS bucket definition-registry 的 chart。Chart 路径为 ./chart/podinfo-5.1.3.tgz。

部署来自 Git 仓库的 Chart

参数是否可选含义例子
repoType必填值为 git 标志 chart 来自 Git 仓库git
pullInterval可选与 Git 仓库进行同步,与调谐 Helm release 的时间间隔 默认值5m(5分钟)10m
url必填Git 仓库地址https://github.com/oam-dev/terraform-controller
secretRef可选存有拉取 Git 仓库所需凭证的 Secret 对象名,对 HTTP/S 基本鉴权 Secret 中必须包含 username 和 password 字段。对 SSH 形式鉴权必须包含 identity, identity.pub 和 known_hosts 字段sec-name
timeout可选下载操作的超时时间,默认 20s60s
chart必填chart 存放路径(key)./chart/podinfo-5.1.3.tgz
version可选在 Git 来源中,该参数不起作用
targetNamespace可选安装 chart 的名字空间,默认由 chart 本身决定your-ns
releaseName可选安装得到的 release 名称your-rn
values可选覆写 chart 的 Values.yaml ,用于 Helm 渲染。见来自 Git 仓库的例子
git.branch可选Git 分支,默认为 masterdev

使用示例

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: app-delivering-chart
  5. spec:
  6. components:
  7. - name: terraform-controller
  8. type: helm
  9. properties:
  10. repoType: git
  11. url: https://github.com/oam-dev/terraform-controller
  12. chart: ./chart
  13. git:
  14. branch: master

上面的示例中,Application 中名为 terraform-controller 的组件交付了一个来自 https://github.com/oam-dev/terraform-controller 的 Github 仓库的 chart。Chart 路径为 ./chart,仓库分支为 master。