使用Artifactory和云上运行的容器实现无服务器化

Guillaume Laforge |开发人员谷歌云平台的倡导者
Ayrat Khayretdinov | CNCF大使

在谷歌Cloud上,现代工作负载以无服务器的方式运行容器。

使用Cloud Run,您可以轻松部署工作负载,并透明地扩大和缩小工作负载,以适应流量峰值和低需求。在本节课中,我们将向您介绍Cloud Run的无服务器容器世界,以及如何使用Cloud build构建它们,我们还将了解如何利用JFrog Artifactory托管容器构件。

在一系列现场演示中,我们将演示不同的Cloud Run用例。传统的巨石,机器学习API,保险库,微服务或基于事件的架构-谷歌云运行和JFrog将让你覆盖!

视频记录

大家好,欢迎来到这个主题为无服务器容器以及与不同系列产品的集成的会议。hth华体会最新官方网站我是Guilaume Laforge,我是谷歌Cloud的开发人员,专注于无服务器技术。今天和我在一起的是我的同事Ayrat,他是谷歌的混合云专家,也是CNCF在谷歌开发者专家中的大使。所以你可能听说了,最近,JFrog将其云DevOps产品扩展到谷歌云市场,在那里用户可以轻松地从谷歌云部署端到端JFrog DevOps平台,以加速和安全他们的应用程序交付。这就是为什么我们想要告诉你一些谷歌云技术的伟大组合,特别是无服务器技术,如cloud Run,这是我们要告诉你的产品,以及JFrog的酷产品。hth华体会最新官方网站

在进一步讨论之前,让我们先定义什么是无服务器。有两种方式来考虑无服务器的概念。有一个操作模型和一个编程模型。从操作的角度来看,作为用户,您使用的是完全受管理的环境,您不必处理硬件和它的工作,操作系统等。所以安全方面也会为你们做好。

例如,为已知的漏洞应用补丁。这是云提供商谷歌cloud,它将在底层为无服务器产品处理这些问题。hth华体会最新官方网站无服务器的一个关键特征是仅为使用付费模式。所以成本和使用量成正比。

当没有交通流量的时候,你可以支付很好,零。而基础设施的规模,你的服务上升和下降,透明的需要。因此,从编程的角度来看,您倾向于编写更小的颗粒服务,而不是更大的整体服务。

您经常编写事件驱动方法来响应来自系统或云的各种事件。而且,由于您的服务可以缩减到零,在某种意义上,您还应该使用无状态方法进行某种防御性的编程,因为您永远不知道一旦运行您的工作负载的实例被关闭,您的资源将会发生什么。2022世界杯阿根廷预选赛赛程因此,如果你看看谷歌Cloud提供的产品范围,你有用于虚拟机的计算引擎,有用hth华体会最新官方网站于编排容器的Kubernetes引擎,在无服务器领域,你会发现用于容器的云运行产品,用于web应用的应用程序引擎,移动后端产品,以及用于业务逻辑小脑功能的云功能。

今天,我们将重点介绍Cloud Run,它允许您以无服务器的方式部署容器。那么什么是Cloud Run呢?Cloud Run是一个无服务器平台,允许您在完全受管理的环境中部署容器化的工作负载。所以你可以使用你喜欢的编程语言。所以这不是一个有限的选择。

你可以使用任何你想要的语言,使用你想要的库,二进制等等。所有的基础设施,扩展方面,这一级别的一切都是由平台为你完成的。因此,你会获得很棒的开发体验,因为你专注于你的应用程序,它的业务逻辑,它的代码,而不是设置组成项目的所有东西。所以容器技术在可移植性方面很好。

但如果你想要整个扩展和管理的方面,都是可移植的,您希望整个平台都是可移植的。这就是Cloud Run建立在开源加拿大标准之上的原因。

多亏了加拿大标准,您可以在完全托管的Cloud run服务中运行容器化应用程序到其他云提供商的混合云anthos平台上,或者在您已经安装了加拿大原语的任何Kubernetes集群上锁定在谷歌云平台上。

由于云原生,您可以选择运行和扩展容器化的工作负载。使用Cloud Run,就像我说的,你不受限于使用特定的语言、堆栈或框架。有了容器,你可以使用任何语言、任何库、依赖项、任何二进制文件,并充分利用基础映像的丰富生态系统。因此,在Cloud Run上,您可以获得容器的灵活性,但同时,您还可以获得无服务器计算平台的所有好处和速度。

容器化的工作负载应该遵循一些契约,比如监听如果在端口环境变量上使用Localhost,那么它应该不会花费太多时间来准备服务第一个请求。服务请求也不会花太长时间,对吧?也要以无状态的方式进行编程。

例如,文件系统只是在内存中。因此,您永远无法确定文件系统上的内容在接下来的传入请求中是否还存在。

还要避免后台活动,因为运行您的工作负载的实例可能会在另一个实例启动之前关闭。所以不会再接收任何请求的那个会在CPU级别上被节流,甚至在完成请求后一段时间内被杀死。所以后台活动也会被杀死,不一定会及时结束。

在资源方面,你有一到四个2022世界杯阿根廷预选赛赛程v - cpu,从256兆字节的RAM到8gigs,默认容器可以运行80个并发请求。默认情况下,最多可以分离出100个容器。但它是可配置的,你可以增加这些数字。

在谈到运营模式时,我们说过Cloud Run是按使用付费的模式。所以你使用的CPU越多,内存越多,你收到的请求就越多,成本将与之成比例。它以100毫秒为单位计费。所以它是非常细的。所以如果请求只花了100毫秒就完成了,你就不用支付整整一秒,对吧?

此外,计费时间不只是针对每个请求。假设你有两个并发请求,你要为执行付费,这两个请求的总执行,不,它不是这样工作的,你实际上是从第一个并发请求开始构建到最后一个请求执行结束。这在定价方面很有趣。当然,一定要利用并发性。

说到并发,正如你在前面的图表中看到的,不像其他的无服务器平台,我们的竞争对手,甚至云功能,例如,并发级别是1,这意味着一个实例一次只能服务一个请求,Cloud Run可以接收80个并发请求,最多250个,如果你这样配置的话。因此,这也有助于应对即将到来的流量高峰,并在没有太多冷启动的情况下优雅地扩展。

对于无服务器平台来说,考虑这一点非常重要。好的,还有什么?这已经很多了,但还有更多。所以云运行在世界上很多地区都可以使用。得益于此,如果您将Cloud Run与谷歌云负载均衡器配对,您可以公开一个全局端点,将用户请求路由到最近的区域,因此它有助于在区域中断时具有弹性。

它有助于以尽可能小的延迟服务用户请求,因为用户将被路由到最近区域中最近的服务实例。

你可以利用像云CDN这样的东西来缓存资产,以减少负载对您的服务和提高业绩。您还集成了用于DDoS保护的云装甲,通过纯IP地址或地理位置过滤流量,并定义其他防火墙规则。

就Cloud Run服务的部署而言,您可以创建服务的新修订。因此,您可以使用该机制执行各种部署场景。

例如,蓝绿部署、Canary或AB测试,你可以在几个版本之间定义流量的百分比,甚至可以使用标签轻松地识别服务并将流量路由到它们,因此非常有效。您可以访问谷歌云VPC和其他谷歌通过VPC提供的云业务,如内存存储redis、memcached等。如果需要访问谷歌计算引擎中的虚拟机,可以通过VPC访问。

项目之间也有共享VPC。除了云运行或云运行的补充,如果你需要编排各种云运行服务,甚至第三方api,你可以使用云工作流。它也是完全托管的无服务器服务。你可以很容易地连接服务调用,处理重试请求策略,它可以通过驱动方法来解决微服务的混乱和协调问题。所以这也是一个很好的方法,特别是如果你能够将你的业务流程定义为流程图,比如说,你可以设计或将该流程图实现为工作流,以便协调应该一起执行某项任务的一系列服务。我提到过,寒冷开始得更早。

还有一件事可以避免冷启动,那就是定义准备好服务的最小实例数,这些实例是温暖的,可以为新的传入请求服务。所以如果你看蓝色的流量,对于绿色虚线以下的部分,通常你会对这些时期的请求有一个冷启动。

但是对于最少的实例数量,您可以确定总是会有一个实例准备好为新的传入请求服务,即使存在没有保持实例运行的流量。所以对于你的应用来说,避免冷启动是非常有用的。

还有什么?优雅的实例终止。当您的恢复服务在流量达到峰值后缩减规模时,您的容器实例将被关闭。但是您可以通过实例终止通知来优雅地完成这一点,这要感谢一个病态术语信号。它给了您更多的几秒钟来清理可能仍然打开的资源,比如数据库连接或清理一些临时资源或缓存数据。2022世界杯阿根廷预选赛赛程除了处理常见的HTTP请求(这是Cloud Run的目的),您还可以实现GRPC api之类的东西。所以你可以调用GRPC api或者实现GRPC api。我的意思是作为GRPC api的服务器。

除了GRPC,还有服务器端流媒体。举个例子,你可以……就像我说的GRPC,你也可以做GRPC流。

你也可以使用服务器,甚至,你可以使用HTTP 2流和web套接字,你知道,实时和交互式的应用程序。哇,事情太多了,对吧?因此,这实际上是Cloud Run为开发人员和客户提供的服务的鸟瞰或蛙瞰。现在,说得够多了,是时候真正动手演示了,我的同事Aryat将向您展示与Artifactory和其他很酷的JFrog集成的集成。非常感谢大家的关注。轮到你了,伊拉特。谢谢你!

谢谢Guilaume。

嗨,我叫阿奇。我是来自加拿大的认知大使,在谷歌Cloud工作。很高兴来到2021年的沼泽,与这个令人惊叹的社区分享一些令人兴奋的技术。所以在覆盖范围之外那么,什么是Cloud Run及其特性呢?现在让我向您展示几个演示,如何轻松地在无服务器的Cloud Run上部署应用程序,以及JFrog技术在这里如何帮助我们。首先,我将在Cloud Run上部署一个简单的应用程序,并展示Cloud Run如何处理流量并利用并发性。我在这里的谷歌云控制台云运行菜单。我要创建一个新服务。我要给它起个好听的名字。现在我可以选择提供Docker映像或提供我的GitHub存储库。所以如果你有你的代码库,你想要构建它,即使没有Docker文件,云运行,使用认知构建包自动构建你的映像,并将它们部署在象限。但在我的例子中,我将使用我自己的图像,已经为这个演示准备好了。这里,你可以有一些高级设置如果你想玩的话,你可以设置你的内存和CPU等等。在我的例子中,我只指定并发数等于1。

你可以配置变量,秘密,连接,到数据库,等等,一些安全特性,但只是继续部署这个应用程序。你可以看到应用程序开始运行了。

我们正在为您的指标和日志提供一些视图。好了,应用程序已经部署好了。我们可以看到HTTPS的端点在这里。因此,我们自动提供utilis、证书验证,应用程序就可以启动并运行了。太好了。然而,这更像是向你展示交通是如何工作的。这里我有一个可视化的服务后台发生了什么。正如你所看到的,现在它的流量为零,这意味着你现在没有为任何东西付费。

现在,我将使用一个Linux工具,我将发送一些突发负载,假设是10秒,我们将每秒有20个请求。让我们看看我们的Cloud Run服务将如何运行。所以你可以看到,我们的服务可以立即扩大到30个集装箱,然后马上缩小到零。这就是你花钱买的东西。我认为这很棒。

你可以想一下你现在有多少应用程序在Kubernetes或者prem上运行,它们在那里什么都不做,你要为此付费,对吧?

云运行允许你在没有流量的情况下将规模缩小到零。当你遇到突发流量时,它会迅速扩大系统,而不会有任何数据包丢失。这就是,缩放到0。关于流量行为,我想给你们展示另一个很好的特性,叫做并发。实际上,并发是Cloud Run的一个非常独特的特性,在Kubernetes上是不存在的。有了这个特性,您就可以为来自同一个容器的多个并发请求提供服务。因此,你可以节省一些成本。现在我要产生一些额外的负载。这一次,我要做一个3分钟的加载。我要创建应用程序的新版本。这里,我要指定并发选项卡,我要添加一个新变量来改变应用程序的颜色。它是绿色的,就像JFrog。我马上取消这个冲浪百分比流量。现在会发生什么呢,应用程序将部署我的应用程序的新版本。我们应该在可视化中看到,我将有一个绿色的新容器,绿色的新应用程序。让我转移一些流量。在这种情况下,我将把交通一分为二。让我们来看看我们的可视化。

好吧。从图中可以看到,我们的并发性越高,比如我们的绿色应用,容器就越少,我们只运行了5分钟,因此我们可以节省成本。

没有使用并发的蓝色应用程序目前必须使用25个容器,而并发只使用5个,这是相当惊人的成本节约,对吧?好吧,我希望你现在可以了对cloudron的使用有一定的了解。也许你知道,你马上就想自己试试。但你知道,无论你是在构建一个HTTP web应用程序,还是试图使用WebSockets构建一个多人游戏,也许你想要提供一些api,比如机器学习,或者做数据处理,Cloud Run都可以满足你。

还有一些领域我们还在发展,所以云运行对于运行有状态工作负载来说还不是很好。但是,我们可以为您提供连接到不同云服务并将状态保存在那里的功能。好吧,谷歌Cloud提供了许多构建软件的解决方案在GCP上使用云运行的供应链,例如谷歌容器注册表,云构建,我们生活在一个拥抱混合和多云方法的世界。许多公司仍然在prem上运行,或者在不同的云提供商上运行,或者同时在多云上运行,他们在某种程度上解决了需要部署应用程序的挑战。理想情况下,他们希望在所有地方都用同样的方法。这就是为什么我们与JFrog合作,做混合多云CI\CD解决方案,Anthos将Gk部署在prem上,或在Azure上,或在亚马逊上或在环境上,并连接到谷歌云控制台。然后JFrog负责CI\CD部分。在我们的下一个演示中,我们将进入现实生活中的例子,并向你们展示一些实现用例的工作流程。

最好的工具,我们将使用Anthos平台,将部署我们的云运行Anthos在GCP上。

对于自动化软件交付,我们将使用JFrog云平台和GCP。

我们将为CI和CD部分利用不同的管道。我们将使用JFrog Artifactory来存储我们的工件和Docker映像。最后,我们用j代表X射线来确保我们的代码是安全完整的。

基本用例,开发人员向GitHub存储库发出拉请求,触发管道。在这种情况下,我们使用JFrog管道,它将运行代码质量,构建我们的图像,扫描它,然后推送到JFrog Artifactory。最后,JFrog管道发挥作用,我们将能够推出我们的图像到前景的Anthos。至于我们的演示应用程序,这次我们将使用微服务,它将是一个在线商店应用程序。

我们有不同的组成部分,一些现金,一些前端。让我们转到谷歌云控制台。我们可以看到实际上已经部署的服务。因此,我们使用的不同之处在于,之前它运行在完全托管的云运行平台上,而这个微服务应用程序部署在云运行上。

正如我们在这里看到的,涉及到一些集群。让我们进入前端,看看它是什么样子。

应用程序已经启动并运行。但由于我们参加的是不同的会议,我们对蛙式自行车的需求非常大。所以让我们试着更新我们的微服务应用程序,让一些JFrog自行车在这里运行。因此,要更改这段代码,我们实际上需要查看源代码。

我们可以在这里看到我们微服务的所有源代码,到前端,我们可以看到它是用go Lang写的,我们的图像存储在这里的某个地方。所以我们需要改变这个形象,把它换成青蛙自行车。

让我们试试吧。

复制……这里我们需要一些代码。我们得到了我们的仓库,我们会确保我们有摊位信息,这样我们就能知道我们在这里要做什么。我们想把它推到我们的GitHub回购。

我在这里使用的是基本的工作流程,没有pull请求,因为这里几乎只有我一个人。我们现在应该看到的是我们的管道应该启动了。

看看JFrog…这是运行在GCP上的JFrog平台。我们这里有Artifactory管道。让我们来看看管道。这里我们有一些积分。因此,对于集成,我们使用Artifactory集成,以确保我们可以部署我们的代码和图像到JFrog Artifactory。

我们使用谷歌云集成来创建我们的服务帐户和连接部署代码。我们还与GitHub进行了集成,因为我们想确保在拉请求时,我们的代码将被部署。现在我们来检查一下管道本身。

我们可以看到我们的管道启动了,它正在处理。这里我们有一个很好的UI,它展示了我们的管道是什么样的。这里有多个步骤,第一步是构建Docker镜像,然后它会推送到Artifactory,它也会扫描图像如果扫描成功,它会被部署到这里。

通常,扫描和部署可以有多个步骤。在我们的例子中,为了演示的目的,我们做了这两个步骤平行,加快速度。

所以让我们更多地看看管道内部,看看事情是如何发展的。现在,我们的Docker构建开始了。我们可以看到,在这里的步骤中,它实际上正在将我们的图像推向。实际上,这是在建立我们的形象。然后下一步就是推。所以我们要等一段时间,看看事情会如何发展。

与此同时,我能做的是,实际上,我可以跳转到管道的源代码存储库。这里,我们定义了一些资源。2022世界杯阿根廷预选赛赛程所以我们提供了GitHub存储库集成,以及建筑。

然后我们就有了我们刚才看到的管道的步骤。因此,我们正在构建前端Docker映像。然后我们把它推送到Docker本地,这是Artifactory存储库,然后我们执行x射线扫描。我认为最后一部分,实际上对我来说很有趣的是,现在,可能没有与谷歌云控制台的直接集成,所以我们在这里使用的,我们实际上是在部署云SDK使用谷歌Cloud命令行。我们登录到谷歌Cloud,然后我们可以执行部署步骤。

还有什么?实际上,这里有一些舱单。所以实际上不是部署这个应用程序,我们使用这个清单,它实际上不是Kubernetes的清单,它实际上是[听不清]清单,它比Kubernetes的清单要小得多。

这允许您以声明方式部署应用程序。这是非常棒的,因为现在有了Cloud Run,你就有了清单,你可以在Cloud Run上部署完全管理的清单,或者在Cloud Run上部署anthos清单。因此,它提供了代码可移植性和零锁定,因为[听不清]可以在Cloud run上运行,或者任何有k个本机的Kubernetes集群上运行。让我们回到我们的管道,看看它是如何进行的。所以我们完成了构建,推送部分也完成了。我们来检查一下推力。

我们是来宣传你的形象的。然后是x射线扫描部分,最后是我们推出谷歌云SDK的部分。因此,我们可以实际执行部署云的命令。它现在正在运行。希望它是完整的。很少有这样的例子。

好吧。给,再等几秒钟。然后看看我们的新版本会自动启动什么。是的,它刚刚被部署。让我看看,是的,管道已经完全启动并运行了。让我们去看看应用程序的新版本。我要在隐身窗口中打开看看它是如何展开的。

是的,我们的前轮车已经启动了。在我看来很不错。我们将回到幻灯片上,结束我们的演讲。

非常感谢。我希望你喜欢我们的小样。

希望你能在2021年享受沼泽之旅。在这里你可以找到一些关于云运行的惊人链接,可以帮助你开始。

请跟我和Guilaume在推特上留言,如果你有什么问题吗?谢谢你!

再见。

要么快速释放,要么死亡