Helm 介绍

2021-07-27  本文已影响0人  Joening

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:

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 #删除发布,并删除配置,彻底删除

上一篇 下一篇

猜你喜欢

热点阅读