Helm 初体验
Helm 的三大概念
- Chart: 代表着 helm 包,它包含在 kubernetes 集群内部运行应用的程序,工具或者服务所需的所有资源定义。可以看作 apt dpkg, 或者 yum rpm 在 kubernetes 中的等价物
- Repository: 仓库是用来存放和共享 charts 的地方
- Release: 是运行在 kubernetes 集群中的 chart 实例,一个chart 通常会在同一个集群中安装多次。每一次安装都会创建一个新的 release
Helm 安装 charts 到 kubernetes 集群中,每次安装都会创建一个新的 release。我们可以在 chart repositories 中寻找新的 chart
Helm 安装
使用脚本安装
[root@master ~]# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
[root@master ~]# chmod 700 get_helm.sh
[root@master ~]# ./get_helm.sh
[root@master ~]# helm version version.BuildInfo{Version:"v3.8.0", GitCommit:"d14138609b01886f544b2025f5000351c9eb092e", GitTreeState:"clean", GoVersion:"go1.17.5"}
初始化
添加一个示例仓库
[root@master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami "bitnami" has been added to your repositories
查看可使用的 helm chart 列表
[root@master ~]# helm search repo bitnami
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/bitnami-common 0.0.9 0.0.9 DEPRECATED Chart with custom templates used in ...
bitnami/airflow 12.0.6 2.2.3 Apache Airflow is a tool to express and execute...
bitnami/apache 9.0.6 2.4.52 Apache HTTP Server is an open-source HTTP serve...
bitnami/argo-cd 3.0.9 2.2.5 Argo CD is a continuous delivery tool for Kuber...
bitnami/argo-workflows 0.2.6 3.2.8 Argo Workflows is meant to orchestrate Kubernet...
bitnami/aspnet-core 3.1.6 6.0.2 ASP.NET Core is an open-source framework for we...
bitnami/cassandra 9.1.8 4.0.3 Apache Cassandra is an open source distributed ...
bitnami/cert-manager 0.4.6 1.7.1 Cert Manager is a Kubernetes add-on to automate...
bitnami/common 1.11.2 1.11.2 A Library Helm Chart for grouping common logic ...
bitnami/concourse 1.0.4 7.6.0 Concourse is an automation system written in Go...
bitnami/consul 10.2.8 1.11.4 HashiCorp Consul is a tool for discovering and ...
bitnami/contour 7.3.11 1.20.1 Contour is an open source Kubernetes ingress co...
bitnami/contour-operator 0.2.7 1.19.1 The Contour Operator extends the Kubernetes API...
...
安装 Chart 示例
我们可以通过 helm install
命令安装 Chart。
Helm 可以通过多种途径查找和安装 chart,但最简单的是安装官方的 bitnami charts
# 确定可以拿到最新的 charts 列表
helm repo update
# 发布 chart, 名称为自动生成的 mysql-1646116379
[root@master ~]# helm install bitnami/mysql --generate-name
NAME: mysql-1646116379
LAST DEPLOYED: Tue Mar 1 01:33:02 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 8.8.26
APP VERSION: 8.0.28
可以通过执行命令了解到这个 chart 的简单信息或者全部信息:
# 简单信息
$ helm show chart bitnami/mysql
# 所有信息
$ helm show all bitnami/mysql
Tips: 每次执行 helm install 命令的时候,都会创建一个新的发布版本,所以一个 chart 在同一个集群中可以被安装多次,每一个都是可以被独立的管理和升级。
关于版本发布
通过 helm 可以很容易的查询到发布的 chart:
[root@master ~]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mysql-1646116379 default 1 2022-03-01 01:33:02.275578355 -0500 EST deployed mysql-8.8.26 8.0.28
查看该 chart 的版本信息:
[root@master ~]# helm status mysql-1646116379
NAME: mysql-1646116379
LAST DEPLOYED: Tue Mar 1 01:33:02 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 8.8.26
APP VERSION: 8.0.2
卸载一个版本
$ helm uninstall mysql-1646116379
Tips: 如果在执行
helm uninstall
的时候提供 --keep-history 选项,helm 将保存版本历史.
常用命令说明
-
helm search
: 查找 ChartsHelm 自带一个强大的搜索命令,可以从两种来源中进行搜索
-
helm search hub 从 Artifact Hub 中查找并列出 helm charts。 Artifact 中存放了大量不同的仓库
[root@master ~]# helm search hub wordpress URL CHART VERSION APP VERSION DESCRIPTION https://artifacthub.io/packages/helm/kube-wordp... 0.1.0 1.1 this is my wordpress package https://artifacthub.io/packages/helm/bitnami-ak... 13.0.7 5.8.3 WordPress is the world's most popular blogging ... https://artifacthub.io/packages/helm/bitnami/wo... 13.0.19 5.9.1 WordPress is the world's most popular blog ...
-
helm search repo 从添加(使用 helm repo add)到本地的 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。
[root@master ~]# helm repo add brigade https://brigadecore.github.io/charts "brigade" has been added to your repositories [root@master ~]# helm search repo brigade NAME CHART VERSION APP VERSION DESCRIPTION brigade/brigade 1.10.0 v1.5.0 Brigade provides event-driven scripting of Kube... brigade/brigade-github-app 0.8.0 v0.4.1 The Brigade GitHub App, an advanced gateway for... brigade/brigade-github-oauth 0.4.0 v0.20.0 The legacy OAuth GitHub Gateway for Brigade brigade/brigade-k8s-gateway 0.3.0 A Helm chart for Kubernetes brigade/brigade-project 1.1.0 v1.0.0 Create a Brigade project brigade/kashti 0.7.0 v0.4.0 A Helm chart for Kubernetes
Tips: helm 搜索可以使用模糊字符串匹配:
[root@master ~]# helm search repo kash NAME CHART VERSION APP VERSION DESCRIPTION brigade/kashti 0.7.0 v0.4.0 A Helm chart for Kubernetes
-
-
helm install
: 安装一个 helm 包使用 helm install 命令安装一个新的 helm 包,最简单的使用办法只需要传入两个参数: 命名的 release 名字和想安装的 chart 的名称
[root@master ~]# helm install happy-panda bitnami/wordpress NAME: happy-panda LAST DEPLOYED: Tue Mar 1 02:20:13 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: wordpress CHART VERSION: 13.0.19 APP VERSION: 5.9.1
现在wordpress chart 已经安装。注意安装chart时创建了一个新的 release 对象。上述发布被命名为 happy-panda。 (如果想让Helm生成一个名称,删除发布名称并使用--generate-name。)
在安装过程中,helm 客户端会打印一些有用的信息,其中包括:哪些资源已经被创建,release当前的状态,以及你是否还需要执行额外的配置步骤。
Helm 客户端不会等到所有资源都运行才退出。许多 charts 需要大小超过 600M 的 Docker 镜像,可能需要很长时间才能安装到集群中。
你可以使用 helm status 来追踪 release 的状态,或是重新读取配置信息:
[root@master ~]# helm status happy-panda NAME: happy-panda LAST DEPLOYED: Tue Mar 1 02:20:13 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: wordpress CHART VERSION: 13.0.19 APP VERSION: 5.9.1
Helm 资源在 K8S 中的安装顺序
- Namespace
- NetworkPolicy
- ResourceQuota
- LimitRange
- PodSecurityPolicy
- PodDisruptionBudget
- ServiceAccount
- Secret
- SecretList
- ConfigMap
- StorageClass
- PersistentVolume
- PersistentVolumeClaim
- CustomResourceDefinition
- ClusterRole
- ClusterRoleList
- ClusterRoleBinding
- ClusterRoleBindingList
- Role
- RoleList
- RoleBinding
- RoleBindingList
- Service
- DaemonSet
- Pod
- ReplicationController
- ReplicaSet
- Deployment
- HorizontalPodAutoscaler
- StatefulSet
- Job
- CronJob
- Ingress
- APIService
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)