在Kubernetes集群上安装和使用Helm 2
在今天的教程中,我们将介绍如何安装和使用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