Helm 介绍
Helm 是什么?
Helm是 kubernetes的包管理器,包管理器类似于我们在ubuntu中使用的apt,在centos中使用的yum 或者python中的pip一样,能够快速查找,下载和安装软件包。helm由客户端组件helm和服务端组件Tiller组成,能够将一组众多分散的k8s资源打包统一管理,是查找、共享和使用为kubernetes构建软件的最佳方式
Helm 三大核心概念
1,chart:是一个Helm包。它包含了在Kubernetes集群中运行应用程序、工具或服务所需的所有资源定义。类似于一个Apt dpkg包或一个Yum RPM包。
2,仓库(repository)是可以收集和共享chart的地方。仓库针对的是Kubernetes包。
3,发布(release)是在Kubernetes集群中运行的chart的实例。一个chart通常可以多次安装到同一个集群中。每次安装它时,都会创建一个新的发布。
有了这些概念,我们现在可以这样解释Helm:
Helm将chart安装到Kubernetes中,为每个安装创建一个新的发布。要找到新的chart,你可以搜索Helm chart仓库。
Helm前提条件:
1,一个kubernetes集群环境
2,helm客户端和tiller服务器
helm客户端与tiller服务器:
helm是一个命令行工具,用于本地开发及管理chart,chart仓库管理等
Tiller是helm的服务器,Tiller负责接收helm的请求,与k8s的aipserver交互,根据chart来生成一个release并管理release
Helm的repository是一个HTTP服务,可以用于管理Chart
Repo helm仓库
helm 仓库
helm repo -h #查看帮助
helm repo list #查看可用helm仓库
helm repo add dev "URL" #添加helm仓库
helm repo update #更新helm仓库
Helm提供一个serve,用于管理本地Chart
helm serve --address "0.0.0.0:8879" #启动服务,浏览器访问本机 8879端口即可
Chart 介绍
Chart:helm的打包格式叫做chart,所谓chart就是一系列文件,它描述了一组相关的k8s集群资源
chart是以文件的形式创建的,放在特定的目录树中,然后可以将它们打包到版本化的归档中进行部署
chart管理
helm create wordpress
helm package wordpress #为chart打包归档
helm lint worepress #检测chart包格式上的问题
chart被组织为目录中的文件集合。目录名称是chart的名称。描述WordPress的chart将存储在wordpress/ 目录中
ls wordpress/
charts/ #其中包含该chart所依赖的其他chart
Chart.yaml #包含chart的基本信息,包括chart版本、名称等
templates/ #目录下存放应用一系列k8s资源的yaml模板
requirements.yaml #一个yaml文件,列出了chart的依赖性
values.yaml #包含了必要的值定义,用于存储templates目录下模块文件中用到的变量
README.md #帮助文档
helm 客户端安装
helm二进制包安装,helm只是是一个单纯的可执行程序
wget https://get.helm.sh/helm-v3.2.0-linux-amd64.tar.gz
tar xvf helm-v3.2.0-linux-amd64.tar.gz
cp -av linux-amd64/helm /usr/bin/
helm --help #即可使用helm
Tiller 安装
Tiller是Helm的服务端部分,通常运行在Kubernetes集群内部。也可以在本地,并远程k8s集群通信
简单的集群内安装
vim helm-rbac.yml #创建RBAC授权
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: helm
name: helm-admin
namespace: kube-system
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: helm-admin
labels:
k8s-app: helm
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: helm-admin
namespace: kube-system
kubectl apply -f helm-rbac.yaml
helm init --service-account helm-admin
helm init --service-account helm-admin --upgrade #并不是第一次执行
helm 使用
helm init #默认连接k8s集群并在集群内部安装tiller
--canary-image #选项安装“金丝雀”构建
--tiller-image #选项安装指定的镜像(版本)
--tiller-namespace #选项安装至指定命名空间
kubectl get pod -n kube-system
查看帮助:
helm --help
helm create --help
helm repo update #更新chart源
helm list #查看已经发布的chart
helm list --all #查看所有状态的chart
helm serach #查找chart包
helm install 安装
helm install stable/mysql #安装官方仓库stable中的chart
helm install https://example.com/charts/foo-1.2.3.tgz #完整URL安装
helm install foo-0.1.1.tgz #本地chart归档文件
helm install -f values.yaml --name=sugar . #指定values.yaml文件并对当前目录下的chart包进行安装
--set #在命令行中指定要覆盖的配置项
helm status dayu #查看chart状态配置等
helm 升级与回滚
helm upgrade -f values.yaml dayu . #由于将其中配置修改了需要更新升级chart
helm get values dayu #查看是否更新生效
helm history dayu #查看chart历史发布版本
helm rollback dayu 1 #将版本回滚为 REVISION=1 的状态
upgrade 与 rollback 支持选项
--recreate-pods #此选项将导致重新创建所有pod
helm 删除发布
helm delete --purge dayu #删除发布,并删除配置,彻底删除