在Nutanix Karbon上无舵掌舵

  • 2018年12月2
  • 2回答
  • 3124的浏览量

Userlevel 4
徽章 +5

领导是什么?

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包)中获取。

fa2af93e-44da-4ba4-a8b4-e39215f61a03.png

关于Tiller (Helm Server)的安全问题

Tiller负责管理Kubernetes应用程序的发布。Tiller在Kubernetes集群上以根访问权限运行,这带来了很大的风险,有人可能未经授权访问您的服务器。

这个安全风险将在未来的Helm v3版本中得到解决。在新版本推出之前,我们有办法减轻Helm v2的风险。

tilerless来救援!

Tillerless是一个由裂缝Mocevicius在Jfrog。简而言之,这个插件所做的就是在您的工作站本地或CI/CD管道中运行Tiller,而无需在Kubernetes集群上安装Tiller。

安装

在你开始使用无Tillerless Helm安装之前,重要的是你有kubectlkubeconfig文件正确配置并在您的机器上运行。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
这是不知疲倦的掌舵的领事部署的截图

9 bb7576d c867 - 463 b - a7ad 15 - bbc463e032.png

当你完成Helm任务后,你可以关闭shell并停止Tiller服务。

出口舵柄停止

结论

使用不知疲倦的Helm,您不需要在Kubernetes集群上安装Tiller,也不需要为它创建任何类型的RBAC。使用这种方法,您可以获得一种安全的方式来部署Helm图表。


本主题已关闭供评论

2回答

这真是太好了。我们很高兴能够以Nutanix的方式来管理Kubernetes……没有难以忍受的安装和升级管理的运维维护。

我不能让插件工作…可能是因为Helm和Tiller做出了突破性的改变。它似乎建议社区运行舵和当地的舵柄。这篇文章让我朝着正确的方向前进谢谢对!

开始执掌仅客户端的
代码:
执掌init -仅客户端的

开始舵柄
代码:
舵柄&

设置HELM主机环境变量。
代码:
出口HELM_HOST = localhost: 44134
Baidu