Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。
安装helm,解压后将二进制文件移动到环境变量目录中
tar zxf helm-v3.4.1-linux-amd64.tar.gz
cd linux-amd64/
cp helm /usr/local/bin/
添加环境变量
echo "source <(helm completion bash)" >> ~/.bashrc
source .bashrc
测试搜索
helm search hub nginx
Helm 添加第三方 Chart 库,
helm repo add bitnami https://charts.bitnami.com/bitnami
列出默认default ns下的第三方chart仓库
helm repo list
使用helm部署redis集群
helm search repo redis
拉取应用到本地,编辑value文件,读取本地harbor仓库
helm pull bitnami/redis-cluster
tar zxf redis-cluster-6.3.2.tgz
cd redis-cluster/
vim values.yaml
测试,使用helm部署redis集群
支持多种安装方式,本次从当前目录安装:
helm install redis-cluster .
kubectl get pod
列出已安装的
helm list
helm list --all-namespaces
卸载redis集群
helm uninstall redis-cluster
kubectl get pod
helm create mychart
tree mychart/
cd mychart/
编写mychart的应用描述信息
vim Chart.yaml
编写应用部署信息:
vim values.yaml
检查依赖和模板配置是否正确
helm lint mychart/
将应用打包
helm package mychart/
建立本地chart仓库,只需要连接到之前的harbor仓库即可
helm repo add westos https://hyl.westos.org/chartrepo/charts
添加认证密钥
cp /etc/docker/certs.d/hyl.westos.org/ca.crt /etc/pki/ca-trust/source/anchors/
ll /etc/pki/ca-trust/source/anchors/
更新密钥认证
update-ca-trust
重新添加chart仓库
helm repo add westos https://hyl.westos.org/chartrepo/charts
helm repo list
查看plugins的位置
helm env
添加push命令
cd /root/.local/share/helm/plugins
mkdir -p /root/.local/share/helm/plugins
cd /root/.local/share/helm/plugins
mkdir push
tar zxf ~/helm-push_0.9.0_linux_amd64.tar.gz -C push/
上传mychart到仓库中
helm push mychart-0.1.0.tgz westos --insecure -u admin -p westos
更新后才可search到
helm search repo mychart
helm repo update
helm search repo mychart
helm show values westos/mychart
部署仓库中的mychart并测试访问
helm install mychart westos/mychart
kubectl get all
curl 10.96.143.134
更新迭代mychart的版本
cd mychart/
vim Chart.yaml
vim values.yaml
打包上传
helm lint mychart
helm package mychart
helm push mychart-0.2.0.tgz westos --insecure -u admin -p westos
helm repo update
查看所有版本
helm search repo mychart
helm search repo mychart -l
更新mychart,访问测试,版本更新成功
helm upgrade mychart westos/mychart
访问查看svc
kubectl get svc
curl 10.96.143.134
添加第三方charts到本地并拉取
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
helm repo add bitnami https://charts.bitnami.com/bitnami
创建工作目录
mkdir nfs-subdir-external-provisioner
拉取charts并且移动到动作目录
helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
解压并编辑values.yaml
tar zxf nfs-subdir-external-provisioner-4.0.12.tgz
cd nfs-subdir-external-provisioner/
vim values.yaml
删除之前的nfs配置、pvc、pv
cd volumes/nfs-client/
kubectl delete -f nfs-client-provisioner.yaml
kubectl delete pvc --all
kubectl delete pv --all
删除之前的helm配置服务
helm list --all-namespaces
helm uninstall mychart
helm list --all-namespaces
使用helm安装nfs
helm install nfs-client-provisioner . -n nfs-client-provisioner
查看
helm list --all-namespaces
查看默认sc已配置成功
kubectl get sc
测试:拉起pvc
cat test-pvc.yaml
kubectl apply -f test-pvc.yaml
kubectl get pvc
测试完成,删除testpvc
kubectl delete -f test-pvc.yaml
kubectl get pvc
kubectl get pv
删除之前的metrics-server监控服务
kubectl delete -f components.yaml
kubectl top node
创建ns,将helm服务放到该ns中
kubectl create namespace metrics-server
拉取chart metrics-server
helm pull bitnami/metrics-server
解压并配置value
tar zxf metrics-server-5.9.2.tgz
cd metrics-server/
vim values.yaml
使用helm安装,并按照提示解决报错
helm install metrics-server . -n metrics-server
helm upgrade --namespace metrics-server metrics-server bitnami/metrics-server --set apiService.create=true
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
查看服务是否健康
kubectl -n metrics-server get all
kubectl top node