本博客为 http://zhaohuabing.com 在优快云的镜像,评论请移步 https://zhaohuabing.com/2018/04/16/using-helm-to-deploy-to-kubernetes/
目录
- 前言
- Kubernetes应用部署的挑战
- Helm是什么?
- Helm组件及相关术语
- 安装Helm
- 构建一个Helm chart
- Helm Repository
- 在kubernetes中部署Chart
- 升级和回退
- 总结
- Q&A
- 参考
前言
Helm是Kubernetes生态系统中的一个软件包管理工具。本文将介绍为何要使用Helm进行Kubernetes软件包管理,澄清Helm中使用到的相关概念,并通过一个具体的示例学习如何使用Helm打包,分发,安装,升级及回退Kubernetes应用。
Kubernetes应用部署的挑战
让我们首先来看看Kubernetes,kubernetes提供了基于容器的应用集群管理,为容器化应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。
kubernetes的核心设计理念是: 用户定义应用程序的规格,而kubernetes则负责按照定义的规则部署并运行应用程序,如果应用系统出现问题导致偏离了定义的规格,kubernetes负责对其进行自动修正。例如应用规格要求部署两个实例,其中一个实例异常终止了,kubernetes会检查到并重新启动一个新的实例。
用户通过使用kubernetes API对象来描述应用程序规格,包括Pod,Service,Volume,Namespace,ReplicaSet,Deployment,Job等等。一般这些对象需要写入一系列的yaml文件中,然后通过kubernetes命令行工具kubectl进行部署。
以下面的wordpress应用程序为例,涉及到多个kubernetes API对象,这些kubernetes API对象分散在多个yaml文件中。
图1: Wordpress应用程序中涉及到的kubernetes API对象
可以看到,在进行kubernetes软件部署时,我们面临下述问题:
- 如何管理,编辑和更新这些这些分散的kubernetes应用配置文件?
- 如何把一套的相关配置文件作为一个应用进行管理?
- 如何分发和重用kubernetes的应用配置?
Helm的引入很好地解决上面这些问题。
Helm是什么?
很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。
我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。