使用OpenFaaS和JFrog Artifactory在Kubernetes上构建无服务器

无服务器(作为一种运营结构)和Kubernetes(作为一种强大的平台和使能者)正在迅速改变公司的运营方式。只要看看KubeCon + CloudNativeCon EU 2019有近8000名与会者,以及售罄的无服务器从业者峰会作为会前活动,就可以看出开发人员是多么强烈地感觉到有必要将它们很好地结合在一起。

在我的演讲中"管道胶带和字符串:持续提供无服务器微服务“在swampUP 2019上,我谈到了一些让我对无服务器和k8感到兴奋的项目最佳实践:OpenFaaS

什么是OpenFaaS?

OpenFaaS是一个功能即服务框架构建无服务器函数使用Docker和Kubernetes。它使您能够用任何语言构建微服务和函数,并具有在任何云或内部硬件上运行的容器的灵活性。用美丽找出构建事件驱动和可扩展应用的难点,让开发人员专注于他们最擅长的事情:创造商业价值。

Artifactory适合哪里

使用OpenFaaS,您可以将容器部署到Kubernetes,这就是Artifactory可以作为您的Docker注册表.Artifactory提供为K8s集群提供动力的Kubernetes Docker注册表使用您创建的容器映像。

使用Artifactory是一件好事因为您创建的任何应用程序,无论是否无服务器,仍然需要考虑依赖关系及其构建。Artifactory帮助您管理这些,通过用于依赖关系的代理存储库这提供了一个快速的缓存,并帮助确保您总是使用您期望的版本进行构建。OpenFaaS允许您自由选择喜欢的语言,因此Artifactory对25个包技术的支持你覆盖了吗?

当然,您还可以通过发布构建信息获得用于OpenFaaS的每个Docker映像的完全可跟踪性,您甚至可以帮助保持安全JFrog x射线扫描的漏洞这些图像。这意味着Artifactory可以成为唯一的、值得信任的地方,您可以在这里存储应用程序的所有内容。

最佳实践:将它们结合在一起

让我们回顾一下我在swampUP上构建的相同场景。

首先,我创建了一个新的模板从Artifactory获取Go模块。第26至30行涵盖了与Artifactory的连接。按顺序,这些行包括:

  1. 配置JFrog CLI连接到Artifactory
  2. 构建围棋应用程序
  3. 将应用程序和依赖项发布到Artifactory
  4. 收集build-info,并将该建筑信息发布给Artifactory。

要获取模板并创建应用程序的大纲,你需要运行两个命令:

#获取模板faas-cli模板pull https://github.com/retgits/of-templates #使用模板faas-cli new——lang go-art -http holidays创建一个名为holidays的新应用

这些命令生成一个名为假期还有一个文件叫做holidays.yml.YAML文件是描述应用程序是什么的部署描述符。在该文件中,您将看到一个名为“image”的YAML标记,您必须更新该标记以引用Artifactory中的Docker映像。其形式将是://:(例如,myartifactory /码头工人/假期:最新).

默认情况下,模块名称设置为我的函数.如果你想改变它(你可能应该)更新它在go.mod文件。

接下来,向代码添加一个新的依赖项.要做到这一点,运行go get:

package function import ("encoding/json" "net/http" "github.com/openfaas-incubator/go-function-sdk" "github.com/retgits/checkiday") //处理一个函数调用Response, error) {var err error //检查今天的假日,err:= checkiday.Today() //将其转换为JSON有效载荷,err:= JSON . marshal (days. holidays) //将JSON有效载荷添加到响应返回处理程序中。Response{Body: payload, StatusCode: http。StatusOK}, err}

要构建该函数并将其部署到OpenFaaS运行时,您需要再运行一个命令。该命令将具有一些特定的参数,以确保正确设置到Artifactory的连接。

  • APP_VERSION:你的应用程序的版本,它也将是Artifactory中的构建号;
  • APP_NAME:你的应用程序的名称,它也将是Artifactory中的构建名称;
  • ARTIFACTORY_URL:到Artifactory服务器的URL
  • ARTIFACTORY_USER:登录Artifactory的用户;
  • ARTIFACTORY_PASSWD:用户密码。

合并成一行,看起来像:

Faas-cli up -f假期。yml -b APP_VERSION= \ -b APP_NAME= \ -b ARTIFACTORY_URL= \ -b ARTIFACTORY_USER= \ -b ARTIFACTORY_PASSWD=

命令的结果显示了一个URL,您可以使用它来调用函数并查看当天的节假日(它是全国吃奥利奥日当我做报告的时候)。您可以使用任何一种方法调用函数旋度faas-cli

#使用curl curl——请求GET——url https://my.openfaas.gateway/function/holidays # using faas-cli echo "" | faas-cli invoke节假日

结果是:

[…“name”:“全国吃奥利奥日”,“url”:“https://www.checkiday.com/f49c89ec9ad6e802c7a0adffb1d19ed2/national-eat-an-oreo-day”…]

接下来是什么?

如果你也想尝试这些步骤,请查看试驾选项我们有。这将使您可以在四天内访问Artifactory和Xray(对于扫描您刚刚构建的函数非常有用),而不需要在本地机器上安装任何东西。一如既往,让我知道你的想法,评论和反馈推特