k8s包管理器helm_k8s实践(九):Helm and Kubeapps UI

一、概述

1. Helm简介

  Helm是一个Kubemetes包管理器(类似于OS包管理器,比如Linux中的yum、apt,或者MacOS中的 homebrew)。

  Helm包括两个部分:helm客户端和tiller服务端。

helm客户端

helm客户端是一个命令行工具,负责管理charts、repository和release。它通过gPRC API(使用kubectl port-forward将tiller的端口映射到本地,然后再通过映射后的端口跟tiller通信)向tiller发送请求,并由tiller来管理对应的Kubernetes资源。helm作用:

  • 本地Charts开发;
  • 管理Charts仓库;
  • 与Tiller服务器交互:发送Charts以安装、查询Release的相关信息及升级或卸载已有的Release

tiller 服务端

tiller 接收来自helm客户端的请求,并把相关资源的操作发送到Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪 Kubernetes 资源。为了方便管理,tiller把release的相关信息保存在kubernetes的ConfigMap中。tiller作用:

  • 监听来自helm客户端的请求;
  • 合并Charts和配置以构建一个Release;
  • 向Kubernetes集群安装Charts并对相应的Release进行跟踪;
  • 升级和卸载Charts;
93e46a3738d9eba2d7d7eee718ba24d9.png

图片.png

2. 为什么需要Helm

  Kubernetes虽然提供了多种容器编排对象,例如Deployment、StatefulSet、DeamonSet、Job等,还有多种基础资源封装例如ConfigMap、Secret、Serivce等,但是一个应用往往有多个服务,有的可能还要依赖持久化存储,当这些服务之间直接互相依赖,需要有一定的组合的情况下,使用YAML文件的方式配置应用往往十分繁琐还容易出错,这时候就需要服务编排工具。

  服务编排管理工具就是构建在kubernetes的基础object之上,统筹各个服务之间的关系和依赖的。目前常用到的工具是Helm。

3. Helm核心术语

Chart:一个Helm包,其中包含了运行一个应用所需要的工具和资源定义,还可能包含Kubernetes集群中的服务定义,类似于Homebrew中的formula、APT中的dpkg或者Yum中的RPM文件: Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以安装多次。例如有一个MySQLChart,如果想在服务器上运行两个MySQL数据库,就可以基于这个Chart安装两次,每次安装都会生成新的Release,会有独立的Release名称; Repository:用于存放和共享Chart的仓库。

Helm将charts安装到Kubernetes中,每个安装创建一个新release。要找到新的chart,可以搜索Helm charts存储库repositories。

二、安装Helm

1. 安装Helm Client

Helm客户端可以从源代码安装,也可以从预构建的二进制版本安装或执行安装脚本。

1.1 脚本安装方式

Helm现在有一个安装shell脚本,将自动获取最新版本的Helm客户端并在本地安装。

[root@master ~]# curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

脚本方式安装很简单,执行一条命令就行。

1.2 二进制方式安装

这种方式可以选择helm客户端安装版本,下载二进制文件:https://github.com/helm/helm/releases/ ,例如下载2.14.2版本:

[root@master ~]# curl -L https://get.helm.sh/helm-v2.14.2-linux-amd64.tar.gz -o helm-v2.14.2-linux-amd64.tar.gz[root@master ~]# tar -zxvf helm-v2.14.2-linux-amd64.tar.gz linux-amd64/linux-amd64/LICENSElinux-amd64/helmlinux-amd64/README.mdlinux-amd64/tiller[root@master ~]# cp linux-amd64/helm /usr/bin[root@master ~]# helm versionClient: &version.Version{SemVer:"v2.14.2", GitCommit:"a8b13cc5ab6a7dbef0a58f5061bcc7c0c61598e7", GitTreeState:"clean"}Error: could not find tiller

下载二进制文件、解压、拷贝命令,执行helm version命令发现helm客户端版本为v2.14.2,服务端tiller还未安装,本文测试基于v2.14.3最新版。

1.3 命令补全

[root@master ~]# echo   "source > .bash_profile[root@master ~]# source .bash_profile
c52597e4a5ae81c45e002b15db274d40.png

图片.png

2. 安装Tiller server

2.1 设置环境变量

[root@master ~]# mkdir helm[root@master ~]# echo 'export HELM_HOME=~/helm' >> .bash_profile [root@master ~]# source .bash_profile [root@master ~]# echo $HELM_HOME/root/helm

设置helm的home目录为/root/helm,tiller将安装于该目录下

ef87c5d96fde1cd052c007e94f090ed3.png

图片.png

2.2 创建带有cluster-admin角色权限的服务账户

[root@master ~]# more rbac-config.yaml apiVersion: v1kind: ServiceAccountmetadata:  name: tiller  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:  name: tillerroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:  - kind: ServiceAccount    name: tiller    namespace: kube-system[root@master ~]# kubectl create -f rbac-config.yamlserviceaccount/til
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值