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

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

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

什么是OpenFaaS?

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

Artifactory的定位

使用OpenFaaS,你可以将容器部署到KubernetesArtifactory可以作为Docker注册表.Artifactory提供Kubernetes Docker Registry支持您的K8s集群使用您创建的容器映像。

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

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

最佳做法:把它们绑在一起

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

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

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

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

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

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

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

接下来,在代码中添加一个新的依赖项.要做到这一点,运行去获取:

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有效载荷添加到响应返回处理程序中。响应{正文:有效载荷,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 #使用faas-cli echo "" | faas-cli调用假日

结果是:

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

接下来是什么?

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