版本:v1.8
Helm Chart
本文介绍了如何通过 KubeVela 交付 Helm Chart 包交付到多个目标环境和集群。
通过 Helm Chart 包交付应用主要的应用场景是交付开源中间件应用,比如 bitnami 中包括了常用的生产可用中间件;交付开源工具应用,比如 Gitlab、Jenkins 等等,这些应用在 Helm 官方仓库 中可以获取到。KubeVela 可以帮助你将这些应用便捷地部署到管理的任何集群,并管理他们。
通过本文,你将学习使用 KubeVela 插件体系安装扩展插件。Helm Chart 包的交付能力目前由 FluxCD 插件支撑,FluxCD 插件除了带来 Helm 类型的应用交付能力以外还带来了 Kustomize 的交付能力。
- 选择一个你希望交付的 Chart 包,本文我们以 bitnami/redis 为例。
- 确保你交付的集群具有可用的默认 StorageClass,我们交付中间件大多需要数据持久化,需要默认的 StorageClass 来分配 PV。
插件的启用你在 KubeVela 的安装过程应该已经体验过,即安装 VelaUX 的过程。本文案例我们将通过 UI 页面完成插件的安装。
首先进入 Addon
页面中,该页面正常情况下会自动列出可以安装的社区插件,这些插件来源于 官方仓库,我们点击 fluxcd
即可查询该插件的详情和启用状态。
从详情中我们可以获取到以下信息:
Definitions:该插件提供的扩展能力,它可能包括组件类型扩展、运维特征类型扩展等。对于 fluxcd 插件,它提供了
helm
和kustomize
两种组件类型,其中helm
是我们今天需要关注和使用的类型。Readme:插件说明,对该插件的能力和相关信息进行解读说明。
我们点击 Enable
按钮即可, fluxcd 插件启用后会安装到所有接入到 KubeVela 的集群,因此其需要一定的时间。
当观察到插件显示为 enabled
状态,即代表插件启用已经完成。可以开始交付 Helm 应用了。
你也可以通过 CLI 来启用插件:
vela addon enable fluxcd
相信你通过之前的文章,已经掌握了应用的创建能力。我们需要使用 Chart 创建 Redis 应用,只需要选择应用部署类型为 helm
,然后选择你准备好的具有默认 StorageClass 可以提供 PV 的集群 Target,然后进入部署参数配置页面。
参考上图,需要做如下配置:
- Repo Type: 仓库类型,目前支持 Git 和 Helm,本例我们选择 Helm 类型。
- Repo URL: 仓库地址,基于不同的仓库类型填写仓库地址,这里我们填写:https://charts.bitnami.com/bitnami。另外,如果你在 配置集成 里配置了 helm 仓库,这里可以直接在下拉框中进行选择。
- Chart: 填写仓库地址之后,这里会自动列举出所有可用的 Helm chart,这里我们选择: redis
- Version: 选择 chart 之后,这里的下拉框会展示出所有当前 chart 所有可用的版本,这里我们选择 16.8.5
- Values: 确定 chart 和版本之后,这里的下来框会展出当前 chart 的自定义配置参数,这里由于我们使用的是 ACK 集群,PV 有最小容量要求,这里填写 15Gi。同理,其他配置参数也可以通过该方式进行配置,你需要根据你的集群情况进行配置。
如上参数填写完成后,点击 Create
完成应用创建进入应用管理页面。后续的部署流程与你在 交付第一个应用 的学习内容就一致了。
在 UI 中点击配置页面的组件名称即可进入组件的配置页面,对于 Helm Chart 部署的组件,我们能够通过设置 Values 配置项来变更部署参数,也可以支持变更 Chart 的来源。其中 Values 配置项会基于 values.yaml
文件中的默认值来生成配置提醒,你可以选择需要配置的行并为其设置需要的值。
修改部署参数后,必须执行环境的工作流才能将修改后的参数在指定的环境生效,由于版本管理的机制存在,历史配置参数会在版本中得以保存。
你也可以通过 CLI 来部署 Helm Chart 类型的应用, 基础配置如下:
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: helm-redis
spec:
components:
- name: redis
type: helm
properties:
repoType: "helm"
url: "https://charts.bitnami.com/bitnami"
chart: "redis"
version: "16.8.5"
values:
master:
persistence:
size: 16Gi
replica:
persistence:
size: 16Gi
你可以通过下述命令完成部署:
vela up -f https://kubevela.io/example/applications/app-with-chart-redis.yaml
接下来,通过 vela status helm-redis
命令查询部署应用的状态,直到进入下述状态即部署成功。
About:
Name: helm-redis
Namespace: default
Created at: 2022-04-21 17:19:12 +0800 CST
Status: running
Workflow:
mode: DAG
finished: true
Suspend: false
Terminated: false
Steps
- id:n1gxswwina
name:redis
type:apply-component
phase:succeeded
message:
Services:
- Name: redis
Cluster: local Namespace: default
Type: helm
Healthy Fetch repository successfully, Create helm release successfully
No trait applied
到此,你已经掌握了 Helm 应用的交付能力,快去交付更多的 Helm 应用吧。
如果你想掌握 Helm Chart 的多集群部署,可以参考这篇博客了解实践细节。
Last updated on 2023年5月6日 by Tianxin Dong