一、安装Helm客户端
在github上的helm项目下选择对应平台的二进制包并下载,此处以MacOS为例:
# 下载
wget https://get.helm.sh/helm-v3.12.3-darwin-amd64.tar.gz
# 解压
tar zxvf helm-v3.12.3-darwin-amd64.tar.gz
# 加执行权限
chmod +x helm
# 将二进制移动到path下
mv helm /usr/local/bin/
验证安装结果
helm version
能够查看到版本信息,即安装成功
二、helm简单使用
2.1 简介
Helm直接与Kubernetes API服务器交互,因此,Helm需要能够连接到Kubernetes集群。helm通过读取kubectl使用的相同配置文件来自动完成与api server的连接。helm会首先尝试通过读取环境变量$KUBECONFIG来查找此信息,如果没有设置此环境变量,它将在与kubectl相同的默认位置查找,例如在linux和macos上的$HOME/.kube/config。
我们将从下面流程开始:
1. 添加chart存储库
2. 查找要安装的chart
3. 安装helm chart
4. 查看安装内容列表
5. 升级安装
6. 删除安装
注:helm chart是一个单独的软件包,可以安装到Kubernetes集群中。
2.2 添加chart存储库
使用helm repo add命令添加chart,例如:
% helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
验证bitnami存储库是否存在
% helm repo list
NAME URL
jetstack https://charts.jetstack.io
bitnami https://charts.bitnami.com/bitnami
2.3 搜索chart存储库
% helm search repo drupal
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/drupal 15.1.3 10.1.3 Drupal is one of the most versatile open source...
默认情况下,helm尝试安装chart的最新稳定版本,但是你可以覆盖此行为并安装chart的特定版本,因此也可以需要先查看chart的确切版本:
% helm search repo drupal --versions
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/drupal 15.1.3 10.1.3 Drupal is one of the most versatile open source...
bitnami/drupal 15.1.2 10.1.2 Drupal is one of the most versatile open source...
bitnami/drupal 15.1.1 10.1.2 Drupal is one of the most versatile open source...
bitnami/drupal 15.1.0 10.1.2 Drupal is one of the most versatile open source...
bitnami/drupal 15.0.4 10.1.2 Drupal is one of the most versatile open source...
bitnami/drupal 15.0.3 10.1.2 Drupal is one of the most versatile open source...
bitnami/drupal 15.0.2 10.1.2 Drupal is one of the most versatile open source...
bitnami/drupal 15.0.1 10.1.2 Drupal is one of the most versatile open source...
2.4 安装程序包
在helm中安装chart至少需要两条信息:安装的名称和要安装的chart。helm需要一种方法来区分同一chart的不同实例,因此,chart的installation是chart的一个特定实例,一个chart可能包含多个installation。当我们运行helm install命令时,需要给它指定一个installation名和chart名。示例如下:
% helm install mysite bitnami/drupal
NAME: mysite
LAST DEPLOYED: Tue Sep 19 16:01:52 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: drupal
CHART VERSION: 15.1.3
APP VERSION: 10.1.3** Please be patient while the chart is being deployed **
1. Get the Drupal URL:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w mysite-drupal'
export SERVICE_IP=$(kubectl get svc --namespace default mysite-drupal --template "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}")
echo "Drupal URL: http://$SERVICE_IP/"
2. Get your Drupal login credentials by running:
echo Username: user
echo Password: $(kubectl get secret --namespace default mysite-drupal -o jsonpath="{.data.drupal-password}" | base64 -d)
上面创建了bitnami/drupal chart的一个实例,并将这个实例命名为mysite。
2.5 列出你的安装
% helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mysite default 1 2023-09-19 16:01:52.20696 +0800 CST deployed drupal-15.1.3 10.1.3
2.6 升级安装
升级到指定版本
helm upgrade mysite bitnami/drupal --version 6.2.22
2.7 卸载安装
% helm uninstall mysite
release "mysite" uninstalled
三、总结
helm是一个非常强大的k8s包管理工具,可以很方便的帮助我们在k8s集群中部署和管理应用,本文简单介绍了helm的入门使用,后续将介绍helm的一些高级用法。