云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

全站加速_数据库建立索引_12月免费

小七 141 0

作为Nomad和OpenFaaS的服务

AWS Lambda、Google Functions和Azure Functions推广的将应用程序分解为小型工作单元的概念是现代软件体系结构中最流行的趋势之一。Serverless的主要优点是您不必管理底层应用程序基础架构,开发人员可以集中精力交付业务价值。虽然Serverless的开发人员工作流非常吸引人,但这种方法可能不适合您的组织,原因如下:您有法规或公司限制,不允许您在共享环境中运行。对于现有的微服务,您已经有了调度程序群集和CI/CD工作流。Serverless仍然需要操作开销来配置和部署函数、数据存储和连接器(如消息队列)。您希望对操作系统和运行时平台有更多的控制OpenFaaS(或Functions as a Service)是一个框架,用于构建无服务器功能,但使用容器。使用OpenFaaS,您可以将任何进程或容器打包为Linux或Windows的无服务器功能—只需带上Nomad集群即可。该项目的重点是通过其UI和CLI的易用性,这些用户界面和CLI可以用来测试和监控功能,同时支持Prometheus的自动缩放功能。»建筑OpenFaaS围绕Docker构建;所有函数都打包成Docker镜像,这是微服务常用的工作流。这三个核心组件由网关、提供者和监视元素组成。网关是允许管理和执行函数的外部API。它不直接与Nomad交互,但将此职责委托给管理功能生命周期的提供者:部署、规模和机密管理。网关和提供者都会发出一些指标,比如调用计数和使用Prometheus收集的计时数据。普罗米修斯还可以根据存储的指标广播警报。此功能允许网关监听警报并对其作出反应。一个典型的例子是根据负载或其他因素自动触发函数的缩放。让我们看看在Nomad上使用OpenFaaS创建和部署函数是多么容易。»在Nomad上运行OpenFaaS要在Nomad集群上运行OpenFaaS,可以使用Nomad提供程序Github存储库中的示例作业文件:https://raw.githubusercontent.com/hashicorp/faas-nomad/master/nomad_job_files/faas.hcl$wget公司https://raw.githubusercontent.com/hashicorp/faas-nomad/master/nomad_job_files/faas.hcl甲醛hcl$nomad跑步甲醛hcl或者为什么不从这篇文章中启动交互式终端,交互式终端已经预装了Nomad、consur和OpenFaaS。启动交互式演示若要尝试交互式终端,请在屏幕更大的设备上查看此帖子。»创建新函数要创建一个新功能,我们可以利用OpenFaaS CLI faas CLI,它可用于大多数平台,如Windows、Linux和MacOS。它还支持许多编程语言,如Node、Python和Go。可用作模板的语言:-C竖琴-去吧-去armhf-节点-arm64节点-节点armhf-蟒蛇-蟒蛇armhf-蟒蛇3-红宝石除了官方模板,您还可以使用社区提交的模板。我们将使用绑定的Go模板并创建一个名为bcrypt的函数。$faas cli new-lang go bcrypt文件夹:已创建bcrypt。___ _____ ____/ _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___|| | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \| |_| | |_) | __/ | | | _| (_| | (_| |___) |\___/| .__/ \___|_| |_|_| \__,_|\__,_|____/|_|在文件夹中创建的函数:bcrypt已写入堆栈文件:bcrypt.yml公司新命令为函数bcrypt创建入口点/处理程序.go以及函数定义bcrypt.yml公司在当前文件夹中:$tree-L 2.├—bcrypt公司│ └── 处理程序.go├── bcrypt.yml公司———模板├—csharp公司├—去吧├—去armhf├—节点├—节点—arm64├—节点armhf├—蟒蛇├—蟒蛇armhf├—蟒蛇3———红宝石如果我们看看处理程序.go其中包含我们的示例函数代码,我们可以看到它只包含一个简单接口的函数。有效负载以字节片的形式发送给函数,输出是一个简单的字符串。包装功能进口("fmt")//处理无服务器请求函数句柄(req[]字节)字符串{返回快速冲刺("你好,走吧。你说的是:%s",字符串(req))}让我们用允许我们使用bcrypt散列一个字符串的东西来替换这个函数。编辑文件bcrypt/处理程序.go并将内容替换为以下函数:$vim bcrypt公司/处理程序.go包装功能进口("golang.org/x/crypto/bcrypt")//处理无服务器请求函数句柄(req[]字节)字符串{哈希,错误:=bcrypt.GenerateFromPassword(要求,bcrypt.DefaultCost公司)如果出错!=无{返回""}返回字符串(哈希)}保存文件后,让我们运行gofmt检查是否有语法错误:gofmt-s-w bcrypt公司/处理程序.go我们使用的是golang实验包中的bcrypt库,因此我们需要提供依赖关系,我们可以使用go的依赖管理工具dep来实现这一点。$cd字节$dep初始化使用主对象作为直接折旧的约束golang.org/x/crypto直接dep的主锁定(b3c9a1d)golang.org/x/crypto加元-下一步是构建我们的函数,并将其部署到Nomad,在此之前,我们需要编辑bcrypt.yml公司文件并更改图像字段,添加Docker注册表。供应商:名称:faas网关:https://my.gateway.com功能:B密码:朗:去吧经办人:./bcrypt图片:我的.docker.registry.com/bcrypt网站我们还更改gateway字段并指向Nomad集群上运行的网关。如果您使用的是交互式终端,环境变量FAAS_GATEWAY和DOCKER_REGISTRY包含要添加到bcrypt.yml公司文件。$sed-i"s#^ \(\s*image\s*:\s*\).*\1${DOCKER_REGISTRY}/bcrypt"bcrypt.yml公司$sed-i"s#^ \(\s*gateway\s*:\s*\).*\1${FAAS_gateway}\bcrypt.yml公司现在让我们构建函数:$faas cli构建--yamlbcrypt.yml公司[0]>建筑:bcrypt。正在清除临时生成文件夹:./build/bcrypt/#...拆卸中间容器a5e0be2bfdc9成功建造74cbd7f5e103已成功标记bcrypt:最新图片:bcrypt已建成。[0]推送:bcrypt。推送指向存储库[2886795314-5000-ollie01。environments.katacoda.com/bcrypt]974e4f38d961:层已存在8af4da1e470e:层已存在f6a874b4e2c7:层已存在ec8a829eb761:层已存在60273f4e6fd4:按下2aebd096e0e2:层已存在最新:摘要:sha256:B253F51ABBC53B69C84EED015CC244871DE6049E441200230C2612408A4075尺寸:1574[0]