Helm 是 Kubernetes 的包管理器,类似于rpm 包管理工具yum。
安装helm步骤也很简单,即只需要下载一个可执行文件并赋予可执行权限即可:
$ chmod 700 get_helm.sh
$ ./get_helm.sh
查看 helm 版本信息:
[root@kvm ~]# helm version
version.BuildInfo{Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.17.5"}
使用Helm之前先介绍如下三个概念:
-
Chart
代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义;
-
Repository(仓库)
是用来存放和共享 charts 的地方,可以采用harbor来实现;
-
Release
是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。
在了解了上述这些概念以后,我们就可以这样来解释 Helm:
Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
如下所示为搜索并安装一个mariadb 应用:
[root@kvm ~]# helm repo list
[root@kvm ~]# helm search repo mariadb
NAME CHART VERSION APP VERSION DESCRIPTION
aliyun/mariadb 2.1.6 10.1.31 Fast, reliable, scalable, and easy to use open-...
bitnami/mariadb 13.0.3 11.0.3 MariaDB is an open source, community-developed ...
bitnami/mariadb-galera 9.0.2 11.0.3 MariaDB Galera is a multi-primary database clus...
stable/mariadb 2.1.6 10.1.31 Fast, reliable, scalable, and easy to use open-...
bitnami/phpmyadmin 12.0.1 5.2.1 phpMyAdmin is a free software tool written in P...
[root@kvm ~]#
[root@kvm ~]#
[root@kvm ~]# helm install test1 bitnami/mariadb
NAME: test1
LAST DEPLOYED: Fri Sep 8 20:14:16 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mariadb
CHART VERSION: 13.0.3
APP VERSION: 11.0.3
** Please be patient while the chart is being deployed **
Tip:
Watch the deployment status using the command: kubectl get pods -w --namespace default -l app.kubernetes.io/instance=test1
Services:
echo Primary: test1-mariadb.default.svc.cluster.local:3306
Administrator credentials:
Username: root
Password : $(kubectl get secret --namespace default test1-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 -d)
To connect to your database:
1. Run a pod that you can use as a client:
kubectl run test1-mariadb-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mariadb:11.0.3-debian-11-r0 --namespace default --command -- bash
2. To connect to primary service (read/write):
mysql -h test1-mariadb.default.svc.cluster.local -uroot -p my_database
To upgrade this helm chart:
1. Obtain the password as described on the 'Administrator credentials' section and set the 'auth.rootPassword' parameter as shown below:
ROOT_PASSWORD=$(kubectl get secret --namespace default test1-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 -d)
helm upgrade --namespace default test1 oci://registry-1.docker.io/bitnamicharts/mariadb --set auth.rootPassword=$ROOT_PASSWORD
[root@kvm ~]#
[root@kvm ~]#
[root@kvm ~]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test1 default 1 2023-09-08 20:14:16.151539678 +0800 CST deployed mariadb-13.0.3 11.0.3
如下所示工作负载和服务被成功创建:
[root@kvm ~]# kubectl get service -o wide |grep test1
test1-mariadb ClusterIP 10.233.19.11 <none> 3306/TCP 2m32s app.kubernetes.io/component=primary,app.kubernetes.io/instance=test1,app.kubernetes.io/name=mariadb
[root@kvm ~]#
[root@kvm ~]#
[root@kvm ~]# kubectl get pods -o wide |grep test1
test1-mariadb-0 1/1 Running 0 2m38s 10.233.107.38 kvm <none> <none>
如果想卸载这个mariadb应用也很简单,只需执行如下步骤即可:
[root@kvm ~]# helm uninstall test1
release "test1" uninstalled
[root@kvm ~]#
[root@kvm ~]#
[root@kvm ~]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
[root@kvm ~]#