什么是头盔?
Helm是一种简化IT操作团队如何安装和管理Kubernetes应用程序的工具。您可以将其视为Linux(APT/YUM)中的软件包经理,但对于Kubernetes来说。
什么是舵图?
Helm图只是包含Kubernetes应用程序的软件包。这类似于您首选的Linux发行版上的.deb/.rpm软件包。
什么是舵机用例?
如果您想知道为什么使用Helm是个好主意,这里有一些原因:
- 大多数受欢迎的软件都有掌舵图表,可促进其在Kubernetes上的安装
- 如果您想共享自己的kubernetes应用程序,那么掌舵图是要走的方式
- 部署过程中的一致性是一个关键方面,图表带来了您的应用程序的可重复性构建
- Kubernetes应用程序是一组清单文件。图表可帮助您管理这些Kubernetes清单文件的复杂性
- 管理Helm套件的版本
掌舵建筑
来自Helm网站:
- Helm有两个部分:客户端(Helm)和服务器(Tiller)
- Tiller在Kubernetes群集内部运行,并管理图表的版本(安装)。
- Helm在笔记本电脑,CI/CD或您想要运行的任何地方运行。
- 图表是至少包含两件事的舵机包:
*包装的描述(Chart.yaml)
*一个或多个模板,其中包含kubernetes清楚文件
- 图表可以存储在磁盘上,也可以从远程图表存储库中获取(例如Debian或Redhat软件包)
Tiller(Helm Server)周围的安全问题
Tiller负责管理Kubernetes应用程序的版本。蒂勒(Tiller)在kubernetes群集上使用root Access运行,这带来了极大的风险,并且有人可以未经授权访问您的服务器。
这种安全风险将在未来的Helm V3版本中解决。在新版本发布之前,我们有一种方法可以减轻Helm V2的风险。
耕种以营救!
Tillerless是由Rimas Mocevicius在Jfrog。简而言之,此插件的作用是在工作站或CI/CD管道上本地运行分er,而无需在Kubernetes簇上安装分erer。
安装
在您开始使用Tillerless Helm Sportination之前,重要的是kubectl和Kubeconfig文件正确配置并在计算机上工作。Helm Client对Kubeconfig文件具有依赖性。
掌舵客户
首先安装Helm Client(Helm)。我建议您遵循步骤这个链接对于您的操作系统平台。就我而言,我是MacOS用户,所以我使用Homebrew来安装Helm。酿造安装kubernetes-helm
初始头盔
确保您用正确的标志初始化头盔,- 仅愿意。如果您不这样做,则将安装在Kubernetes群集上。Helm Init-仅愿意
输出:$ helm_home已在/users/jose.gomez/.helm上配置。由于设置了愉快的Helming,因此未安装Tiller,因为“只有客户”的标志!
安装Tillerless插件
使用Helm初始化的下一步是安装Tillerless插件。请记住,此插件将使Tiller可以在您的工作站上运行,而不是Kubernetes群集。Helm插件安装https://github.com/rimusz/helm-tiller
我们已经准备好开始使用无辫子的头盔了。
在本地使用插件
默认情况下,Tillerless在本地和命名空间开始Kube-System。您可以从不同的名称空间开始,但请确保以前存在Kubernetes名称空间。在这篇文章中,我们使用了Tillerless使用的默认名称空间,Kube-System。舵蒂勒开始
输出:已安装的Helm版本v2.9.1复制/usr/usr/local/bin/tiller到Helm-Tiller/bin Helm和Tiller是同一版本!启动分er ... tiller名称空间:kube-system
已经打开了一个新的外壳,您可以以安全的方式运行任何Helm命令。为了本文的目的,我们将部署领事图以检查所有正在运行的内容。舵机安装 - 名字领事稳定/领事
输出:姓名:领事上次部署:12月2日14:03:00 2018 2018名称空间:默认状态:部署资源:==> v1beta1/statefulset名称所需的当前年龄领事3 1 0S ==> v1beta1/poddisisportionbudgetbudtionbudgetbudget name name name name bassion baste wassion wassion wassion wassion wassion washe wassion washe wassion washe年龄领事pdb n/a 1 0 0S ==> v1/pod(相关)名称ready status starts age consul-0 0/1待定0 0S ==> v1/秘密名称类型数据类型consul-gossip-keye opaque 10S ==> v1/configmap名称数据年龄领事考试1 0S ==> v1/服务名称类型cluster-ip外部-IP端口(S)年龄领事集群无8500/tcp,8400/tcp,8301/tcp,8301,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP 0S Consul-UI NodePort 172.19.19.210.185 8500:31820/TCP 0S注意:1。注意所有集群成员。$ kubectl get pods -namespace =默认值-W 2.使用Helm Test测试群集健康。$ HELM TEST CONSUL 3.(可选)手动确认领事群集健康。$ consul_pod = $(kubectl get pods -l ='发行= consul' - output = jsonpath = {。items [0] .metadata.name})$ kubectl exec $ consul_pod consul_pod consul consul consul consul -namespace = default = default | default |GREP服务器
完全部署领事大约需要五分钟。您可以使用以下命令检查状态:掌舵测试领事 - 清洁
当领事准备就绪时,上一个命令应具有以下输出。你会得到通过部署完成后消息。跑步:Consul-UI测试YHT8O通过:领事-UI检验YHT8O
下一步是检查已分配了哪些端口领事服务。您可以在图表安装输出上获取信息。检查其服务部分。==> v1/服务名称类型类型cluster-ip外部-IP端口(S)年龄领事集群无8500/tcp,8400/tcp,8301/tcp,8301/udp,8302/tcp,8302,8302/udp,8300/tcp,8300/tcp,,83008600/TCP,8600/UDP 1M CONSUL-UI NODEPORT 172.19.210.185 8500:31820/TCP 1M
在我的情况下领事港口8500已与港口映射31820。打开网络浏览器,并使用您的一位工人和映射端口的IP地址。快速获取您的工人IP地址的方法。kubectl获取节点-O yaml |GREP地址
输出:地址: - 地址:10.10.56.161-地址:Tillerless-F42DCF-K8S-Master-0地址: - 地址:10.10.56.162-地址:Tillerless-F42DCF-K8S-Worker-0
这里是领事部署的屏幕截图
完成掌舵任务后,您可以关闭外壳并停止分er服务。退出舵手耕种停止
结论
凭借不懈的头盔,您无需在Kubernetes群集上安装分erer或为其创建任何类型的RBAC。通过这种方法,您可以获得一种安全的方式来部署头盔图表。