kubevela.github.io/i18n/zh/docusaurus-plugin-content-docs/version-v1.2/end-user/components/helm.md

13 KiB
Raw Blame History

title
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 的时间间隔 默认值5m5分钟 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 的时间间隔 默认值5m5分钟 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 地区

使用示例

  1. (可选)如果你的 OSS bucket 需要身份验证, 创建 Secret 对象:
$ kubectl create secret generic bucket-secret --from-literal=accesskey=<your-ak> --from-literal=secretkey=<your-sk>
secret/bucket-secret created
  1. 部署 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 的时间间隔 默认值5m5分钟 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。