Ubuntu18安装Helm2.14.0
Helm简介
此文章取自官网 https://helm.sh/,并加入了自己的理解
Kubernetes的包管理器,类似于CentOS的yum
和Ubuntu的apt
,每个包称为一个Chart,一个Chart是一个目录,一般情况下会将目录进行打包压缩,形成name-version.tgz
格式的单一文件,方便传输和存储
对应用发布者而言,Helm可以打包应用,管理应用依赖关系,管理应用版本并发布到软件仓库。
对使用者而言,不再需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用。
Helm Charts可降低管理复杂性,可定义、安装和升级应用程序,容易在公有云或私有云创建、版本、共享、发布、回滚
词义:
Tiller:Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。用于接收 Helm 的请求
Chart:Helm 的软件包,采用 TAR 格式。其包含一组k8s的YAML资源文件
Repoistory:Helm 的软件仓库,用来保存Chart的软件包,Helm可管理多个Repoistory
Release:使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。
先决条件
成功且正确安全地使用Helm需要满足以下先决条件。
- Kubernetes集群
- 确定要应用于安装的安全配置(如果有)
- 安装和配置集群端服务Helm和Tiller。
注意1:作者此处是虚拟机内安装了kubernetes单master节点,若是生产安装请移步官方文档:Helm安全安装
注意2:默认情况下,安装Tiller时,未启用身份验证。要了解有关为Tiller配置强TLS身份验证的更多信息,请参阅 Tiller TLS指南。
作者Machine 为Ubuntu 18.04具体信息如下:
root@master:/home/hzz# lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
docker版本为18.06.3-ce,小版本没有太大差别
Kubernetes版本为1.15.3:
root@master:/home/hzz# kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
打开可以查看版本,后面拼接系统对应版本就可以下载了,linux直接wget就可以
谷歌镜像地址:https://storage.googleapis.com/kubernetes-helm/
微软镜像地址:https://mirror.azure.cn/kubernetes/helm/
如:
root@master:/home/hzz# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
--2019-09-01 17:09:32-- https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
Resolving storage.googleapis.com (storage.googleapis.com)... 172.217.160.80, 2404:6800:4008:802::2010
Connecting to storage.googleapis.com (storage.googleapis.com)|172.217.160.80|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9160761 (8.7M) [application/x-tar]
Saving to: ‘helm-v2.9.1-linux-amd64.tar.gz’
helm-v2.9.1-linux-amd64.tar.gz 100%[==============================================================================================>] 8.74M 9.03MB/s in 1.0s
2019-09-01 17:09:34 (9.03 MB/s) - ‘helm-v2.9.1-linux-amd64.tar.gz’ saved [9160761/9160761]
一、安装
注:这里作者安装的是稳定的2.14.0版本
1、解压包,复制helm到/usr/local/bin/ 客户端
我这里用的是root用户,所以直接拷贝到了/usr/bin/目录下
root@master:/home/hzz# tar -zxvf helm-v2.14.0-linux-amd64.tar.gz
linux-amd64/
linux-amd64/tiller
linux-amd64/README.md
linux-amd64/LICENSE
linux-amd64/helm
root@master:/home/hzz# cp linux-amd64/helm /usr/bin/
root@master:/home/hzz# helm
The Kubernetes package manager
To begin working with Helm, run the 'helm init' command:
$ helm init
This will install Tiller to your running Kubernetes cluster.
It will also set up any necessary local configuration.
此时运行helm version
已经可以看到helm客户端的版本了,但是连接不到服务端
root@master:/home/hzz# helm version
Client: &version.Version{SemVer:"v2.14.0", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
Error: could not find a ready tiller pod
2、初始化Helm 服务端
注:此处k8s会去仓库拉镜像,谷歌被墙所以这里需要指定--stable-repo-url
参数
helm init \
--history-max=3 \
--tiller-image=gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.0 \
--stable-repo-url=https://mirror.azure.cn/kubernetes/charts/ \
--service-account=helm-tiller
2.1、创建account并赋权
注意3:1.6之前的Kubernetes版本对基于角色的访问控制(RBAC)的支持有限或不支持。1.6之后的默认开启
我这里k8s集群开启了RBAC认证,所以需要多处理一步,没开启RBAC的可忽略
# 创建账号、绑定角色
kubectl create serviceaccount --namespace kube-system helm-tiller
kubectl create clusterrolebinding helm-tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:helm-tiller
# 给tiller设置角色
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"helm-tiller"}}}}' deployment.extensions "tiller-deploy" patched
# 查看授权
kubectl get deploy --namespace kube-system tiller-deploy --output yaml|grep serviceAccount
serviceAccount: helm-tiller
serviceAccountName: helm-tiller
如果这里的权限问题没有处理好,安装完成后会发现命令没有权限,
root@master:/home/hzz# helm ls
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list resource "configmaps" in API group "" in the namespace "kube-system"
可以通过helm reset -f
或者helm reset --force
强制删除tiller容器后,使用正确的参数重新进行helm init
操作
3、验证安装
出现helm client 和server之后helm便安装完成
root@master:/home/hzz# kubectl -n kube-system get pods|grep tiller-deploy
tiller-deploy-7d49974877-w78nz 1/1 Running 0 4h46m
root@master:/home/hzz# helm version
Client: &version.Version{SemVer:"v2.14.0", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.0", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
可执行helm list
查看K8S中已安装的charts 。
二、使用
1、更换仓库
# 先移除原先的仓库
root@master:/home/hzz# helm repo remove stable
"stable" has been removed from your repositories
# 添加新的仓库地址
root@master:/home/hzz# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
"stable" has been added to your repositories
# 更新仓库
root@master:/home/hzz# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
2、查看可获取的Chart
root@master:/home/hzz# helm search
NAME CHART VERSION APP VERSION DESCRIPTION
stable/acs-engine-autoscaler 2.1.3 2.1.1 Scales worker nodes within agent pools
stable/aerospike 0.1.7 v3.14.1.2 A Helm chart for Aerospike in Kubernetes
stable/anchore-engine 0.1.3 0.1.6 Anchore container analysis and policy evaluation engine s...
stable/artifactory 7.0.3 5.8.4 Universal Repository Manager supporting all major packagi...
stable/artifactory-ha 0.1.0 5.8.4 Universal Repository Manager supporting all major packagi...
stable/aws-cluster-autoscaler 0.3.2 Scales worker nodes within autoscaling groups.
stable/bitcoind 0.1.0 0.15.1 Bitcoin is an innovative payment network and a new kind o...
..................
这里有一篇思路更清晰的文章
参考:https://blog.csdn.net/bbwangj/article/details/81087911