在Kubernetes (K8S) 上部署应用时,应用对象通常由多个资源描述组成,例如deployment、services等。这些资源描述可以保存在各自的文件中,或者集中写在一个配置文件中,然后通过kubectl apply -f
命令进行部署。
对于简单应用,这种部署方式是足够的。但是,对于复杂的应用,尤其是微服务架构,可能包含数十个服务,这时候就需要管理大量的资源文件。如果需要更新或回滚应用,就需要修改和维护这些资源文件,这种方式就显得不够高效。
此外,缺少对发布过的应用的版本管理和控制,使得Kubernetes上的应用维护和更新面临挑战,主要问题包括:
Helm是Kubernetes的包管理工具,类似于Linux下的包管理器(如yum、apt等),它可以方便地将打包好的yaml文件部署到Kubernetes上。
Helm有两个重要概念:
2019年11月13日,Helm团队发布了Helm v3的第一个稳定版本。这个版本的主要变化包括:
命令 | 描述 |
---|---|
create | 创建一个chart并指定名称 |
dependency | 管理chart依赖 |
get | 下载release,可用子命令:all、hooks、manifest、notes、value |
history | 获取release历史 |
install | 安装一个chart |
list | 列出release |
package | 将chart目录打包到chart存档文件中 |
pull | 从远程仓库中下载chart并解压到本地 |
repo | 添加、列出、移除、更新和索引chart仓库 |
rollback | 从之前版本回滚 |
search | 根据关键字搜索Chart |
show | 查看chart详细信息 |
template | 本地呈现模板 |
uninstall | 卸载一个release |
upgrade | 更新一个release |
version | 查看helm客户端版本 |
添加存储库:
helm repo add stable http://xxxx.xxx
helm repo add aliyun http://xxx.xxx
helm repo update
查看配置的存储库:
helm repo list
helm repo repo stable
删除存储库:
helm repo remove aliyun
主要介绍三个命令:
查找chart:
helm search repo
helm search repo mysql
部署mysql:
helm install my_db stable/mysql
查看pod的详细信息:
kubectl get pods
kubectl describe pod pod_name
自定义chart配置选项:
所有,我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据:
使用--values:
helm show values stable/mysql
cat config.yaml
然后在config.yaml中,写上配置数据,然后执行:
helm install db -f config.yaml stable/mysql;
kubectl get pods;
命令行替换变量:
helm install db --set persistence.storageClass= "managed-ngf-storage" stable/mysql
也可以将chart包下载下来,查看详情:
helm pull stable/mysql --untar
可以通过以下命令创建一个Helm目录:
helm create mychart
如果您喜欢我的文章,请点击下面按钮随意打赏,您的支持是我最大的动力。
最新评论