Artifactory和OpenFaaS -容器无处不在!

现在,我们生活在Kubernetes网站的世界里更多的游客比西雅图海鹰的网站更重要这可能意味着容器以及运行容器的编排平台是最重要的事情之一。我的意思是,所有东西都像一个容器一样运行,不是吗?
对开发人员来说,另一个昂贵的项目是无服务器。对于开发人员来说,能够无限伸缩,无需为未使用的资源付费,无需担心高可用性和容错性,这是一种解放。2022世界杯阿根廷预选赛赛程开发人员“唯一”需要担心的是编写代码。
把这两个想法结合起来听起来很容易。让世界级的容器编排平台负责基础设施,让开发人员只编写他们的代码。不出所料,您仍然希望将您构建的应用程序的依赖项和应用程序本身保持在安全的地方。为了涵盖所有这些,让我们结合起来OpenFaaS与JFrog Artifactory作为工件存储库.
设置OpenFaaS
OpenFaaS始于2016年,Alex Ellis希望在现有的编排平台上构建一个抽象,这样我们就不会被锁定在一个供应商或技术上。我们的想法是专注于优化开发人员的体验,让他们更容易开发基于容器技术的无服务器应用程序.
将OpenFaaS部署到K8s集群中最简单的方法是使用执掌图表.OpenFaaS可用的Helm图表使用最合理的默认设置设置项目。您可能希望更改的设置之一被调用faasIdler.dryRun.通过将它设置为假您将指示OpenFaaS自动将函数缩小到零pod。当应用程序在指定的一段时间内(默认为5分钟)没有被使用时,就会发生缩小。
构建一个应用程序
就我个人而言,我喜欢编写Go,所以这款应用程序将非常简单。”你好世界在围棋中。首先,您需要下载函数模板,并在构建应用程序的Dockerfile中做一个微小的更改/去/ Dockerfile。/模板,应该读成
RUN CGO_ENABLED=0 GOOS=linux \ go build——ldflags "-s -w" -a -installsuffix cgo -o处理器。&& \ go test $(go list ./…| grep -v /vendor/) -cover
使用供应商(就像默认模板一样),或者直接从GitHub获取Go模块,如果你想拥有不可变和可重复的构建,这真的不是一个好主意。更好的方法是从Artifactory或GoCenter.根据你想从哪里获取它们,你可以将Dockerfile更新为下面两个中的任何一个:
如果你想使用Artifactory,
运行export GOPROXY=https://my-artifactory-server/artifactory/api/go/go && \ go get -u ./…&& \ CGO_ENABLED=0 GOOS=linux \ go build——ldflags "-s -w" -a -installsuffix cgo -o处理器。&& \ go test $(go list ./…| grep -v /vendor/) -cover
如果你想使用GoCenter,
执行export GOPROXY=https://gocenter。IO && \ go get -u ./…&& \ CGO_ENABLED=0 GOOS=linux \ go build——ldflags "-s -w" -a -installsuffix cgo -o处理器。&& \ go test $(go list ./…| grep -v /vendor/) -cover
上面的代码片段确保在应用程序的构建过程中,Go客户端将使用代理来解析来自的模块。
现在可以创建一个新项目了。第一步是使用一个简单的命令创建脚手架Faas-cli new——lang go hello-openfaas-go.该命令将创建一个名为hello-openfaas-go,有一个处理程序。把文件放进去,还有hello-openfaas-go.yml这是部署描述符。一个简单的处理程序,响应一个友好的“hello”,看起来像这样
默认情况下,OpenFaaS会将容器中的所有输出返回给用户,但并不总是需要这样做。第9和第10行hello-openfaas-go.yml进行更新以进行更改。
实际的“魔法连接OpenFaaS、JFrog Artifactory和Kubernetes发生在第8行。你可以在这里指定生成的Docker映像应该存储在哪里,这也是Kubernetes在开始部署时获取映像的地方。在本例中,图像存储在
并且:8081 /码头工人/ hello-openfaas-go: 1
URL有几个组件,所以让我们把它分解一下:
- 并且:8081是Artifactory服务器的URL(如果你想开始使用Artifactory作为Docker注册表,请查看入门指南);
- 码头工人是Artifactory中存储库的名称吗存储映像的位置(docker是docker类型存储库的默认名称);
- hello-openfaas-go: 1是docker映像和标记的名称。在Artifactory中,您可以在“Package Viewer”或“Artifact Repository Browser”下找到它。
部署和测试
配置完所有内容后,可以使用两个简单命令将功能部署到K8s。首先,你需要登录到Artifactory,让Docker守护进程知道在哪里存储映像:
$ docker登录myhost:8081
第二个命令将构建、存储和部署应用程序集成到OpenFaaS安装中。
$ faas-cli up -f hello-openfaas-go.yml
您可以使用UI或CLI测试刚刚部署的功能。CLI非常简单,尤其是在这种情况下:
$ echo "Hello World" | faas-cli invoke Hello -openfaas-go {"Hello":"Hello, World ."}
不需要改变您的工作流程,您就可以使用Artifactory作为OpenFaaS部署的存储库!
接下来是什么
如果您想试驾JFrog Artifactory的所有功能(以及更多),您可以在我们的网站上注册试驾演示环境.如有任何问题或意见,请在这里或在这里留言推特!
