领导是什么?
Helm是一个工具,可以简化IT运营团队安装和管理Kubernetes应用程序的方式。你可以把它看作Linux中的包管理器(apt/yum),但对于Kubernetes来说。
什么是舵轮图?
Helm图表只是一个包含Kubernetes应用程序的包。这类似于您首选的Linux发行版上的.deb/.rpm包。
Helm的用例是什么?
如果你想知道为什么使用Helm是一个好主意,以下是一些原因:
- 大多数流行的软件都有一个Helm图表,以方便在Kubernetes上安装
- 如果您希望共享自己的Kubernetes应用程序,Helm图表是一个不错的选择
- 部署期间的一致性是一个关键方面,图表为您的应用程序带来了可复制的构建
- Kubernetes应用程序是一组清单文件。图表可以帮助您管理Kubernetes清单文件的复杂性
- 管理Helm包的发行版
领导架构
从舵网站:
- Helm有两个部分:客户机(Helm)和服务器(舵柄)
- Tiller在Kubernetes集群中运行,并管理图表的发布(安装)。
- Helm运行在您的笔记本电脑,CI/CD,或任何您想要它运行。
- 图表是包含至少两个内容的Helm包:
*包装说明(Chart.yaml)
*一个或多个模板,包含Kubernetes清单文件
- 图表可以存储在磁盘上,也可以从远程图表存储库(如Debian或RedHat包)中获取。
关于Tiller (Helm Server)的安全问题
Tiller负责管理Kubernetes应用程序的发布。Tiller在Kubernetes集群上以根访问权限运行,这带来了很大的风险,有人可能未经授权访问您的服务器。
这个安全风险将在未来的Helm v3版本中得到解决。在新版本推出之前,我们有办法减轻Helm v2的风险。
tilerless来救援!
Tillerless是一个由裂缝Mocevicius在Jfrog。简而言之,这个插件所做的就是在您的工作站本地或CI/CD管道中运行Tiller,而无需在Kubernetes集群上安装Tiller。
安装
在你开始使用无Tillerless Helm安装之前,重要的是你有kubectl和kubeconfig文件正确配置并在您的机器上运行。Helm客户端与kubecconfig文件有依赖关系。
领导客户
首先安装Helm客户机(Helm)。我建议您按照下面的步骤来做这个链接为你的操作系统平台。在我的情况下,我是一个macOS用户,所以我使用Homebrew安装Helm。酿造安装kubernetes-helm
预置舵
确保你用正确的旗号初始化赫尔姆,——仅客户端的.如果不这样做,Tiller将被安装到Kubernetes集群中。执掌init -仅客户端的
输出:$HELM_HOME已经配置在/Users/jose.gomez/.helm。没有安装Tiller,因为“仅客户端”标志已经设置快乐Helming!
安装Tillerless插件
初始化Helm后,下一步是安装Tillerless插件。请记住,这个插件将使Tiller运行在您的工作站上,而不是Kubernetes集群上。Helm插件安装https://github.com/rimusz/helm-tiller
我们准备开始使用无Tillerless Helm。
在本地使用插件
Tillerless在默认情况下从本地启动,并带有名称空间kube-system.您可以从一个不同的名称空间开始,但是要确保Kubernetes名称空间以前存在。在这篇文章中,我们使用Tillerless使用的默认名称空间,kube-system.舵舵柄开始
输出:install Helm version v2.9.1 copy found /usr/local/bin/ Tiller to Helm - Tiller /bin舵柄开始……舵柄名称空间:kube-system
一个新的shell已经打开,你可以在一个安全的方式上运行任何舵手命令。出于本文的目的,我们将部署Consul图表来检查所有内容的运行情况。Helm install -name consul stable/consul
输出:名称:领事最后部署:Sun Dec 2 14:03:00 2018命名空间:默认状态:部署资源:= = > v1beta1 / StatefulSet名称所需的当前时代高3 1 0 = = > v1beta1 / PodDisruptionBudget名最小可用的最大年龄consul-pdb N /不可用允许中断1 0 0 = = > v1 / Pod(相关)姓名就绪状态重启年龄consul-0 0/1 Pending 0 0 = = > v1 /秘密的名字类型数据时代consul-gossip-key不透明的1 0 = = > v1 / ConfigMap名称数据年龄consul- testing 1 0s ==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE consul ClusterIP无8500/TCP,8400/TCP,8301/TCP,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP 0s consul-ui NodePort 172.19.210.185 8500:31820/TCP 0s观察出现的所有集群成员。$ kubectl获取pod——namespace=default -w 2。使用Helm测试测试集群运行状况。$ helm测试领事3。(可选)手动确认领事集群是否正常。$ con_pod =$(kubectl get pods -l='release=consul'——output=jsonpath={.items[0].metadata.name})——kubectl exec $ con_pod consul成员——namespace=default | grep服务器
完全部署Consul大约需要5分钟。可以使用以下命令查看状态:掌舵测试领事,清理
当Consul准备好后,前面的命令应该有以下输出。你会得到通过了消息,一旦部署完成。通过:consul-ui-test-yht8o
下一步是检查已将哪些端口分配给consul-ui服务。您可以在图表安装输出中获取信息。检查它的服务部分。==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE consul ClusterIP无8500/TCP,8400/TCP,8301/TCP,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP 1m consul-ui NodePort 172.19.210.185 8500:31820/TCP 1m
在我的案例中consul-ui港口8500已映射到端口31820.打开一个web浏览器,使用一个工人的IP地址和映射的端口。一种快速获取你的工人IP地址的方法。Kubectl获取node -o yaml | grep地址
输出:地址:—address: 10.10.56.161—address: tillerless-f42dcf-k8s-master-0地址:—address: 10.10.56.162—address: tillerless-f42dcf-k8s-worker-0
这是不知疲倦的掌舵的领事部署的截图
当你完成Helm任务后,你可以关闭shell并停止Tiller服务。出口舵柄停止
结论
使用不知疲倦的Helm,您不需要在Kubernetes集群上安装Tiller,也不需要为它创建任何类型的RBAC。使用这种方法,您可以获得一种安全的方式来部署Helm图表。