在Kubernetes集群上安装和使用Helm 2

时间:2020-02-23 14:31:39  来源:igfitidea点击:

在今天的教程中,我们将介绍如何安装和使用Helm 2在Kubernetes集群上部署和管理应用程序(Helm图表)。 Helm是一种用于简化Kubernetes应用程序的安装和管理的工具。我们可以将Helm视为YUM/APT或者Kubernetes的Homebrew软件包管理器。

成功安装和运行Helm几乎不需要任何准备工作。Kubernetes clusterAdmin访问权限可以安装TillerLocal配置的kubectl

安装Helm客户端

Helm客户端可以在笔记本电脑,CI/CD管道等上运行。通过bash脚本可以简化Helm客户端的安装。

curl -L https://git.io/get_helm.sh | bash

这是预期的安装输出:

Helm v2.16.1 is available. Changing from version .
Downloading https://get.helm.sh/helm-v2.16.1-linux-amd64.tar.gz
Preparing to install helm and tiller into /usr/local/bin
helm installed into /usr/local/bin/helm
tiller installed into /usr/local/bin/tiller
Run 'helm init' to configure helm.

Helm二进制软件包将安装到/usr/local/bin /目录。

$helm version
Client: &version.Version{SemVer:"v2.16.1", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}

创建Tiller服务帐户和角色绑定

Helm2具有一个称为Tiller的服务器组件。由于没有分3,这在头盔3中有所改变。分er服务将在我们的Kubernetes集群中运行,当在集群中管理Helm应用程序时,Helm客户端会与它交谈。

我们需要为Tiller创建服务帐户,并具有对集群的管理员访问权限。创建一个名为tiller-serivice-account.yaml的新文件。

$vim tiller-account-rbac.yaml

将下面的数据粘贴到文件中。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
--
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

根据列表定义,我们创建了一个对分ole服务帐户具有集群管理员权限的ClusterRoleBinding。

使用kubectl命令在Kubernetes中创建资源:

$kubectl apply -f tiller-account-rbac.yaml
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created

确认创建这些对象:

$kubectl get serviceaccount tiller -n kube-system        
NAME     SECRETS   AGE
tiller   1         64s

$kubectl get clusterrolebinding tiller -n kube-system
NAME     AGE
tiller   100s

部署耕种机并初始化Helm

helm init命令用于将Tiller(Helm服务器端组件)安装到
Kubernetes集群。请注意,此命令将发现Kubernetes集群
通过读取$KUBECONFIG(默认~/.kube/config)并使用默认上下文。

如果我们有多个集群,请确保切换到所需的集群,请参考:使用kubectl和kubectx轻松管理多个Kubernetes集群

现在,使用以下命令初始化Helm。

$helm init --service-account=tiller \
   --stable-repo-url=https://kubernetes-charts.storage.googleapis.com \
   --upgrade \
   --automount-service-account-token=true \
   --replicas=1 \
   --history-max=100 \
   --wait

以下是helm init命令的输出。

选项tiller-image可用于安装特定版本的Tiller,例如:

--tiller-image=gcr.io/kubernetes-helm/tiller:v2.16.0

初始化还将在$HELM_HOME中设置本地配置(默认~/.helm /)

$ls ~/.helm 
cache  plugins  repository  starters

在kubernetes端,我们应该看到一个名为tiller-deploy的新部署。

$kubectl get deployment  -n kube-system       
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server           1/1     1            1           20d
local-path-provisioner   1/1     1            1           20d
coredns                  1/1     1            1           20d
traefik                  1/1     1            1           20d
tiller-deploy            1/1     1            1           63m

$kubectl get deployment tiller-deploy -n kube-system -o wide
NAME            READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                                  SELECTOR
tiller-deploy   1/1     1            1           64m   tiller       gcr.io/kubernetes-helm/tiller:v2.16.1   app=helm,name=tiller