陈奇网络工作室

Rio掌上电脑教程:如何构建集装箱化APP应用一站式部署体验

云计算

11月19日,业界使用最广泛的Kubernetes管理平台创建者Rancher Labs (以下简称Rancher )发布了Rio基于Kubernetes的APP应用部署引擎beta版。 今年5月发售,现在的最新版本是v0.6.0。 Rio结合了多种云原生技术,简化了将代码从测试环境发布到生产环境的过程,并确保了强大、安全的代码体验。

什么是Rio?

下图是Rio的体系结构。

Rio采用Kubernetes、knative、linkerd、cert-manager、buildkit和gloo等技术,将它们组合起来为用户提供完整的APP应用程序部署环境。

Rio具有以下功能:

通过源代码生成代码并将其部署到Kubernetes群集中

自动创建APP应用的dns记录,并使用let’s encrypt的TLS证书保护这些端点

根据QPS和工作负载指标自动扩展容量

支持金丝雀发行版、蓝绿色发行版和A/B部署

支持通过服务网格路由流量

支持缩小到零的serverless工作负载

Git部署

Rancher的产品生态

Rio是Rancher产品生态的一部分,它支持从操作系统到APP应用的APP应用部署和集装箱运输。 通过将Rio与Rancher 2.3、k3s和RKE等产品相结合,企业可以全面部署和管理APP应用程序和容器。

深入了解Rio

为了了解Rio如何实现这些功能,让我们来详细了解几个概念和工作原理。

安装Rio

前期准备

Kubernetes版本1.15或更高版本的Kubernetes群集

为群集配置的kubeconfig (即上下文要在其中安装Rio的群集) )。

有关安装在$PATH上的Rio CLI工具的信息,请参阅以下链接以了解如何安装CLI :

3359 github.com/rancher/Rio/blob/master/readme.MD

安装

使用安装的Rio CLI工具调用Rio安装。 您可能需要考虑以下事项:

ip-address节点IP地址的逗号分隔列表。 可用于以下情况:

您不使用或不能使用layer-4负载平衡器

您的节点IP不是希望通信到达的IP地址(例如,使用具有公共IP的EC2实例)

服务

在Rio中,service是基本的执行单位。 从Git仓库或容器镜像实例化后,服务由单个容器和服务网格中的相关sidecar组成。 默认情况下处于启用状态。 例如,运行一个使用Golang构建的简单的" hello world " APP应用程序。

Rio run https://github.com/EB auman/Rio-demo

或运行容器镜像版本:

rio run ebauman/demo-rio:v1

其他选项也可以传递给rio run,例如需要公开的任何端口(-p 80:8080/http )或自动扩展的配置(--scale 1-10 )。 在这个命令rio help run中,你可以看到所有可以传递的选项。

要检查正在运行的服务,请运行rio ps。

$ rio ps

名称图像输入

demo-service default-demo-service-4 dqdw:618253359 demo-service .

每次运行新服务时,Rio都会为此服务生成一个全局端点。

$ rio endpoints

NAME ENDPOINTS

demo-service 3359 demo-service-default.op0kj0. on-Rio.io:30282

请注意,此端点不包含版本——,而是指向由common name标识的服务,并且流量根据服务权重进行路由。

自动DNSTLS

缺省情况下,所有Rio群集都会创建自己的on-rio.io主机名,并以随机字符串开头,如lkjsdf.on-rio.io。 此域名将是通配符域名,并且该记录将被解析到群集的网关。 如果使用的是NodePort服务,则网关可以是第4层负载平衡器,也可以是节点本身。

除了创建此通配符域名外,Rio还将使用let’s encrypt为此域名生成通配符证书。 这样,无需用户设置即可自动加密HTTP工作负载。 要开始此功能,请传递-p参数并指定http作为协议。 例如:

rio run -p 80:8080/http .

自动缩放

Rio可以根据每秒搜索到的指标自动扩展服务。 要启用此功能,请将--scale 1-10作为参数传递给rio run。 例如:

Rio run-p80:8080/http-ndemo-service-- scale1- 10eb auman/Rio-demo:v1

运行此命令将生成并部署ebauman/rio-demo。 您可以看到,在使用工具向端点添加载荷时,容量会自动扩展。 为了证明这一点,必须使用HTTP端点而不是HTTPS。 因为使用的工具不支持TLS。

$ rio inspect demo-service

snipped

endpoints :

- https://demo-service-v0- default.op0kj0. on-Rio.io:30282

- http://demo-service-v0- default.op0kj0. on-Rio.io:31976

snipped

rio inspect还显示非端点信息,但当前需要的是端点信息。 使用HTTP端点和HTTP基准工具rakyll/hey可以添加综合负载。

hey-n 10000http://demo-service-v0- default.op0kj0. on-Rio.io:31976

这将向HTTP端点发送10000个请求,Rio将提高QPS并相应地扩大规模。 再运行一个rio ps,就会显示出扩大的规模。

$ rio ps

NAME . SCALE WEIGHT

demo-service.2/5(40% ) 100%

逐步释放、金丝雀引入、权重

注意

对于每个服务,都会创建一个全局端点,用于根据基本服务的权重路由通信。

Rio可以提供新的服务版本,然后部署到生产环境中。 分阶段发布新版本很简单。

Rio stage-- imageebauman/Rio-demo:v2 demo-service v2

此命令使用版本v2,逐步发布新版本的demo-service,并使用容器镜像ebauman/rio-demo:v2。 通过运行rio ps命令,可以看到新阶段的版本。

$ rio ps

名称image endpoint weight

demo-service @ v2eb auman/Rio-demo:v 2https://demo-service-v2 .0%

demo-serviceebauman/Rio-demo:v 1https://demo-service-v 0.100 %

请注意,新服务端点具有v2的新功能,因此即使将权重设置为0 %,uff0c访问此端点也会将其带到服务的v2。 这样就可以在发送通信之前验证服务器的运行状况。

说到发送的通信量:

$ rio weight demo-service@v2=5%

$ rio ps

名称image endpoint weight

demo-service @ v2eb auman/Rio-demo:v 2https://demo-service-v2 .5%

demo-serviceebauman/Rio-demo:v 1https://demo-service-v 0.95 %

当前使用rio weight命令将5%%u7684通信从全局服务端点发送到新版本。 满足demo-service的v2性能后,可以将其提升到100%%uFF1A

$ Rio promote-- duration 60s demo-service @ v2

demo-service@v2 promoted

如果超过60秒,demo-service@v2服务器将逐渐监听100%%u7684通信。 在此流程的任何端点上,都可以运行rio ps来检查流程。

$ rio ps

名称image endpoint weight

demo-service @ v2eb auman/Rio-demo:v 2https://demo-service-v2 . 34 %

demo-serviceebauman/Rio-demo:v 1https://demo-service-v 0.66 %

路由选择

Rio可以根据主机名、路径、方法、报头和cookie的任意组合将通信路由到端点。 Rio还支持镜像通信、注入故障,并配置retry逻辑和超时。

创建路由器

要开始决定路由,必须首先创建路由器。 路由器表示主机名和一组规则,并确定发送到主机名的通信在Rio群集中的路由方式。 要定义路由器,必须运行rio router add。 例如,要创建一个在缺省测试时接收通信并将其发送到demo-service的路由器,请使用以下命令:

资源寻址服务

这将创建以下路由器:

$ rio routers

name URL opts操作目标

router/testing 3359 testing-default.0 pjk . to demo-service,port=80

发送到https://测试默认……的通信通过端口80转发到仲裁服务。

请注意,您在此处创建的根是testing-default.rio domain。 由于Rio始终使用命名空间资源,因此在这种情况下,主机名测试已在缺省命名空间中命名。 要在其他命名空间中创建路由器,请单击-n lt; 名称空间gt; 传递给rio命令:

Rio-n名称空间路由添加.

基于路径的路由

要定义基于路径的路由,请在调用rio route add时指定主机名和路径。 它可以是新路由器,也可以是现有路由器。

$ riorouteaddtesting/old to demo-service @ v1

上述命令创建基于路径的路由,用于在https://testing-default.Rio-domain/old上接收通信并将通信转发到` demo-service@v1 `服务器

br/以上命令提供基于路径的路由,用于通过https://testing-default.Rio-domain/old接收通信并将通信转发到` demo-service@v1 `服务br/

基于报头和方法的路由

Rio支持基于HTTP报头和HTTP verbs值的路由策略。 如果要创建基于特定标头的路由规则,请在rio route add命令中指定标头。

$ riorouteadd-- headerx-header=somevaluetestingtodemo-service

上述命令创建了一个路由规则,通过该规则可以使用X-Header的HTTP报头和SomeValue值将流量转发到demo-service。 同样,可以定义HTTP方法的规则。

$ riorouteadd-- methodposttestingtodemo-service

故障注入

Rio路由的一个有趣功能是可以将故障注入响应。 定义故障路由规则后,可以设置具有指定延迟和HTTP代码的故障流量的百分比。

$ riorouteadd---fault-httpcode 502---fault-delay-milli-seconds 1000-- fault-percentage 75 testingtodemems

其他路由选择选项

Rio支持分配流量、重试失败请求的逻辑、重定向到其他服务、定义超时和添加重写规则。 要查看这些选项,请参阅以下链接:

https://github.com/rancher/rio

自动构建

如果将git仓库传递给rio run,Rio将在提交给受监视的branch后指示其构建代码。 默认值为master。 对于Github仓库,可以从Github webhooks启动此功能。 如果不想使用其他git repo或webhooks,Rio将提供“gitwatcher”服务,定期检查仓库是否有更改。

Rio还可以基于受监控branch的拉式请求构建代码。 如果想配置,请将--build-pr传递给rio run。 此外,还可以选择配置此功能,包括传递dockerfile名称、自定义内部版本镜像名称以及将镜像推送到指定的镜像仓库。

堆栈和Rio文件

Rio使用称为Rio文件的docker-compose-style manifest定义资源

configs :

conf :

index.html: |-

! DOCTYPE html

html

身体

h2Hello World/h2

/body

/html

服务:

nginx :

image: nginx

端口:

- 80/http

configs :

- conf/index.html:/usr/share/nginx/html/index.html

Riofile定义了简单的nginx Hello World页面所需的所有组件。 在rio up中部署它时,将创建一个堆栈,它是Rio文件定义的资源集合。

Riofile具有许多功能,例如观察Git库的更改并使用Golang模板将其模板化。

其他Rio组件

Rio具有许多功能,包括配置、安全和基于角色的访问控制( RBAC )。 详情请参照以下内容。

https://rio.io/

Rio可视化

Rio Dashboard

Rio的测试版包含用于可视化Rio组件的新仪表板。 要访问此操控板,请运行命令“rio dashboard”。 在具有GUI和默认浏览器的操作系统上,Rio会自动打开浏览器并加载仪表板。

您可以使用仪表板创建和编辑堆栈、服务、路由等。 此外,还可以直接查看和编辑用于各种组件技术(如Linkerd和gloo )的对象,但不建议使用。 仪表板目前处于开发的初期阶段,因此还无法实现自动缩放和服务网格等某些功能的可视化。

Linkerd

作为Rio的默认服务网格,Linked附带了仪表板作为产品的一部分。 通过运行rio linkerd可以使用此仪表板。 rio linkerd将代理本地主机通信发送到linkerd仪表板。 不会对外公开。 与Rio仪表盘一样,在具有GUI和默认浏览器的操作系统上,Rio会自动打开浏览器并加载仪表盘。

“Linkerd”仪表板显示Rio群集的网格配置、流量和网格组件。 由于Linkerd提供了Rio路由的某些功能组件,因此这些配置可能显示在此控制板中。 还有可用于测试和调试网格配置和流量的工具。

关于结论

Rio为用户提供了许多功能,是一个强大的APP应用部署引擎。 这些组件在部署APP应用程序时为开发者提供强大的功能,使过程稳定、安全、简单且有趣。 在Rancher产品生态中,Rio为企业部署和管理APP应用程序和容器提供了强大的功能。

如果您想了解更多关于Rio的信息,欢迎访问Rio主页或Github主页:

https://rio.io

https://github.com/rancher/rio

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3