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。
cat <<EOF | vela up -f -
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: app-delivering-chart
spec:
  components:
    - name: redis-comp
      type: helm
      properties:
        chart: redis-cluster
        version: 6.2.7
        url: https://charts.bitnami.com/bitnami
        repoType: helm
EOF
请复制上面的代码块,直接部署到运行时集群:
application.core.oam.dev/app-delivering-chart created
最后我们使用 vela ls 来查看交付成功后的应用状态:
APP                     COMPONENT   TYPE        TRAITS  PHASE   HEALTHY STATUS  CREATED-TIME                 
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/https | https://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 bucket | oss | 
| pullInterval | 可选 | 与 bucket 进行同步,与调谐 Helm release 的时间间隔 默认值5m(5分钟) | 10m | 
| url | 必填 | bucket 的 endpoint,无需填写 scheme | oss-cn-beijing.aliyuncs.com | 
| secretRef | 可选 | 保存一个 Secret 的名字,该Secret是读取 bucket 的凭证。Secret 包含 accesskey 和 secretkey 字段 | sec-name | 
| timeout | 可选 | 下载操作的超时时间,默认 20s | 60s | 
| 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 地区 | 
使用示例
- (可选)如果你的 OSS bucket 需要身份验证, 创建 Secret 对象:
 
$ kubectl create secret generic bucket-secret --from-literal=accesskey=<your-ak> --from-literal=secretkey=<your-sk>
secret/bucket-secret created
- 部署 chart
 
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: bucket-app
spec:
  components:
    - name: bucket-comp
      type: helm
      properties:
        repoType: oss
        # required if bucket is private
        secretRef: bucket-secret
        chart: ./chart/podinfo-5.1.3.tgz
        url: oss-cn-beijing.aliyuncs.com
        oss:
            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 | 可选 | 下载操作的超时时间,默认 20s | 60s | 
| 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 分支,默认为 master | dev | 
使用示例
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
   name: app-delivering-chart
spec:
   components:
     - name: terraform-controller
       type: helm
       properties:
          repoType: git
          url: https://github.com/oam-dev/terraform-controller
          chart: ./chart
          git:
            branch: master
上面的示例中,Application 中名为 terraform-controller 的组件交付了一个来自 https://github.com/oam-dev/terraform-controller 的 Github 仓库的 chart。Chart 路径为 ./chart,仓库分支为 master。