入门
Last updated
Last updated
Conduit是一个面向Kubernetes的超轻量Service Mesh。他对运行在Kubernetes中的服务间通信进行透明的管理,让服务变得更加安全和可靠。在不需要变更代码的前提下,Conduit微服务提供了可靠性、安全性和可监控的特性。
Conduit有两个基础组件:数据平面由轻量级代理组成,这些代理部署为sidecar容器,与每个服务代码的实例在一起;控制平面 则用来对这些代理进行协调和管理。用户可以使用命令行界面(CLI)来和Service Mesh进行交互,另外还有Web应用用于控制集群。
本文会谈到如何在Kubernetes集群中部署Conduit,并在其上运行一个gRPC示例应用。注意Conduit 0.1是一个Alpha版本。他Alpha到什么程度呢?目前仅提供了HTTP/2(包括gRPC),甚至HTTP/1.1也不被支持。如果你没有HTTP/2应用,也不用担心,我们已经提供示例应用给你尝试。
需要运行Kubernetes 1.8版本的集群,还有在本机可正常工作的kubectl
命令。可以用下面的命令来检查是否符合需要:
应该会看到类似这样的内容:
请确认"Server Version"内容是1.8或以上。如果返回内容不是上面的情况,或者kubectl
返回了错误信息,可能是集群不存在或者没有正确配置(如果想要快速简便的在本机运行Kubernetes,我们建议使用,需要注意的是,要求0.24.1或其后的版本。)
如果你是首次运行Conduit,需要下载命令行接口工具(CLI)到本机,然后使用CLI在Kubernetes集群上安装Conduit。
运行下列命令,开始安装CLI:
然后跟随指示即可。
另外,还可以直接在下载CLI;或者可以从克隆源代码,根据README指导自行Build。
CLI安装之后,用下面命令检查一下:
应该会看到类似的内容:
现在本机安装好了CLI了,是时候在Kubernetes集群上安装Conduit的控制平面了。不要担心目前集群上运行的其他应用——控制平面会安装在单独的conduit
命名空间,所以要删除也是很容易的。
运行下面的命令:
第一个命令生成Kubernetes配置,然后用管道输出给kubectl
。Kubectl随后把配置应用到Kubernetes集群。(可以把这个命令拆成两个命令,来观察在应用之前发生了什么,例如conduit install > foo.yml; cat foo.yml
)。
第二个命令在浏览器窗口中加载仪表盘,如果你看到下图类似的内容,那么恭喜你,Conduit已经在你的集群上运行。
当然,目前还没有任何服务运行在Service Mesh之中,所以仪表盘没有什么内容,只显示了Service Mesh自身的情况。
终于,到了安装演示应用并添加到mesh的环节了。完成这所有只需要运行下面的一条命令:
这个的命令下载示例gRPC应用的Kuberneetes配置,然后通过conduit inject
运行配置。这将重写配置,在应用Pod中插入Conduit数据平面代理,作为sidecar容器。最后,kubectl
应用这些配置到Kubernetes集群。
和用conduit install
类似,在这个命令中,Conduit CLI只是简单地进行文本转换而kubectl
做了大量工作来把配置实际应用到Kubernetes集群。以这种方式,可以在管道中引入额外的过滤器,或者单独运行命令来观察每个命令的输出。
至此,这个应用就在Kubernetes集群上运行了,并且(它还不知道!)也被加入到了Conduit的Service Mesh之中。
浏览一下Conduit的仪表盘,则应该会看到演示应用的所有HTTP/2服务,这些服务在已添加到Conduit网格的部署列表中显示。
我们可以用下面的URL查看应用:
为了让仪表盘生动一些,我们可以编程生成一些流量。首先,我们需要IP地址:
现在我们用一个简单的循环来生成流量:
最后,我们再看仪表盘(如果尚未运行,运行conduit dashboard
)。可以浏览所有的作为应用一部分的服务,并查看这些服务:
成功率
请求率
延迟分布区间
上下游依赖
以及有关实况流量的其他各种信息。整洁,对不?
当然,仪表盘不是观测Conduit Service Mesh的唯一手段。CLI提供了很多有趣又强大的命令可以用来体验,包括:
conduit stat
conduit tap
试试看运行conduit stat deployments
和conduit tap deploy default/xxx
,看看会有什么发现。
这就是我们的入门指南。要获得关于Conduit的更多信息,可以查看和,或者加入的#conduit
频道,以及浏览。还可以在Twitter上关注。我们刚刚开始Conduit的构建工作,我们对您的反馈非常感兴趣!