利用Helm简化Kubernetes应用部署-阿里云开发者社区

开发者社区> 易立> 正文

利用Helm简化Kubernetes应用部署

简介: Helm 是由 Deis 发起的一个开源工具,有助于简化部署和管理 Kubernetes 应用。本文将介绍Helm的基本概念和使用方式,演示在阿里云的Kubenetes集群上利用 Helm 来部署应用。
+关注继续查看

15019343434549

Helm 是由 Deis 发起的一个开源工具,有助于简化部署和管理 Kubernetes 应用。

注:阿里云Kubernetes服务已经内置提供了Helm/Chart支持,可以直接使用
https://help.aliyun.com/document_detail/58587.html

Helm 基本概念

Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用,它包含几个基本概念

  • Chart:一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula,APT 的 dpkg 或者 Yum 的 rpm 文件,
  • Release: 在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称。
  • Repository:用于发布和存储 Chart 的仓库。

Helm 组件

Helm 采用客户端/服务器架构,有如下组件组成:

  • Helm CLI 是 Helm 客户端,可以在本地执行
  • Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期
  • Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。

15019325767895

安装Helm

首先,利用阿里云容器服务来创建Kubernetes集群

然后

安装好 Helm 后,通过键入如下命令,在 Kubernetes 群集上安装 Tiller:

helm init --upgrade

在缺省配置下, Helm 会利用 "gcr.io/kubernetes-helm/tiller" 镜像在Kubernetes集群上安装配置 Tiller;并且利用 "https://kubernetes-charts.storage.googleapis.com" 作为缺省的 stable repository 的地址。由于在国内可能无法访问 "gcr.io", "storage.googleapis.com" 等域名,阿里云容器服务为此提供了镜像站点。

请执行如下命令利用阿里云的镜像来配置 Helm

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.5.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

安装成功完成后,将看到如下输出:

$ helm init --upgrade
$HELM_HOME has been configured at /Users/test/.helm.

Tiller (the helm server side component) has been installed into your Kubernetes Cluster.
Happy Helming!

Helm 基础操作

若要查看在存储库中可用的所有 Helm charts,请键入以下命令:

helm search 

将看到如下输出:

$ helm search
NAME                             VERSION    DESCRIPTION                                       
stable/aws-cluster-autoscaler    0.2.1      Scales worker nodes within autoscaling groups.    
...

若要更新charts列表以获取最新版本,请键入:

helm repo update 

若要查看在群集上安装的Charts列表,请键入:

helm list 

或者缩写

helm ls 

自Kubernetes 1.6版本开始,API Server启用了RBAC授权。而目前的Tiller部署没有定义授权的ServiceAccount,这会导致访问API Server时被拒绝。我们可以采用如下方法,明确为Tiller部署添加授权。

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

有关利用 Helm 使用的详细信息,请参阅文档

通过 Helm 部署 WordPress

下面我们将利用Helm,来部署一个 WordPress 博客网站

输入如下命令

helm install --name wordpress-test --set "persistence.enabled=false,mariadb.persistence.enabled=false" stable/wordpress

注: 目前阿里云Kubernetes服务中还没有开启块存储的PersistentVolume支持,所以在示例中禁止了数据持久化。

我们可以得到如下的结果

NAME:   wordpress-test
LAST DEPLOYED: Sat Aug  5 18:54:02 2017
NAMESPACE: default
STATUS: DEPLOYED

...

利用如下命令可以获得 WordPress 的访问地址

echo http://$(kubectl get svc wordpress-test-wordpress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

通过上面的URL,可以在浏览器上看到熟悉的WordPress站点,

15019352696985

也可以根据 Charts的说明,利用如下命令获得WordPress站点的管理员用户和密码

echo Username: user
echo Password: $(kubectl get secret --namespace default wordpress-test-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)

总结

在Kubernetes中,应用管理是需求最多、挑战最大的领域。Helm项目提供了一个统一软件打包方式,支持版本控制,可以大大简化Kubernetes应用分发与部署中的复杂性;Helm也催生了社区的发展壮大,越来越多的软件提供商,如Bitnami等公司等,开始提供高质量的Charts。在 https://kubeapps.com/ 你可以寻找和发现已有的Charts。

了解更多阿里云容器服务内容,请访问 https://www.aliyun.com/product/containerservice

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里巴巴 Kubernetes 应用管理实践中的经验与教训
作者 | 孙健波(阿里巴巴技术专家)、赵钰莹 导读:云原生时代,Kubernetes 的重要性日益凸显。然而,大多数互联网公司在 Kubernetes 上的探索并非想象中顺利,Kubernetes 自带的复杂性足以让一批开发者望而却步。
11531 0
SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可回滚)
本篇是《SpringCloud 应用在 Kubernetes 上的最佳实践》系列文章的第七篇,主要介绍了新功能上线时,如何尽快减少对线上用户的影响?发布系统需要提供回滚到前一个或前几个版本的能力,达到快速恢复线上业务的目的。
1477 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4614 0
阿里云容器服务Kubernetes实现应用自动部署
## 前言 CICD是研发效率提升必不可少的一环, 要提高迭代效率,就要减少开发到部署中等待和人工操作的时间与步骤。 通过容器以及周边产品集成,我们更能将代码开发完成到部署时间极大缩短, 并将一切手工操作自动化。
5097 0
Flutter 在饿了么的应用与沉淀
Flutter作为当前最火的跨平台研发方案,它到底好在哪里?饿了么从2018年下半年开始接触Flutter,并在多个App大量落地Flutter业务。饿了么对Flutter的期待是保质提效,赋能业务。阿里巴巴新零售淘系技术AliFlutter系列第八场直播中邀请了蜂鸟大前端资深iOS工程师李永光为大家介绍饿了么为了”保质提效,赋能业务”,选择Flutter作为跨平台研发方案的缘由,Flutter在饿了么应用与落地情况,饿了么在Flutter应用过程中的基础建设和沉淀。相信能给大家带来更多尝试使用Flutter、以及把Flutter实际用于业务开发的信心和决心。
2952 0
SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)
本文将主要介绍如何将开发篇中提到的应用在云上跑起来。
3323 0
这些知识点你都了解了吗?#云安全CCSK-M5:保护云应用和用户
内容概述:保护云应用和用户。该模块涵盖了云部署的身份管理和应用程序安全。主题包括结成同盟身份和不同的IAM应用程序、安全开发以及管理云中的应用程序安全。
168 0
+关注
易立
易立,阿里云资深专家,目前负责阿里云容器服务和区块链服务研发。之前曾在IBM中国开发中心工作,担任资深技术专员。关注Docker/Kubernetes等云原生计算和Hyperledger Fabric/Ethereum等区块链技术。
69
文章
37
问答
来源圈子
更多
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载