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

无服务器(作为一个操作结构)和Kubernetes(作为一个强大的平台和推动者)正在迅速改变公司的运营方式。KubeCon + CloudNativeCon EU 2019有近8000名与会者,而作为会前活动的无服务器从业者峰会(Serverless Practitioners Summit)已经售罄,这表明开发人员强烈认为有必要很好地使用它们。
在我的演讲中”胶带和绳子:持续交付无服务器微服务“在swampUP 2019上,我谈到了一些项目的最佳实践,这些实践让我对无服务器和k8都感到兴奋:OpenFaaS!
什么是OpenFaaS?
OpenFaaS功能即服务框架的用途是什么构建无服务器功能使用Docker和Kubernetes。它使您能够以任何语言构建微服务和函数,并具有在任何云或本地硬件上运行容器的灵活性。用美丽找出构建事件驱动和可扩展应用程序的难点,让开发人员专注于他们最擅长的事情:创造商业价值。
Artifactory适合的地方
使用OpenFaaS,您将容器部署到Kubernetes,这就是Artifactory可以作为你的Docker注册表.Artifactory提供Kubernetes Docker注册表,为K8s集群提供动力使用您创建的容器映像。
使用Artifactory是一件好事,因为您创建的任何应用程序,无论是否无服务器,仍然需要您考虑依赖关系及其构建。Artifactory也可以通过依赖项的代理存储库这提供了一个快速缓存,并帮助确保您始终使用期望的版本进行构建。OpenFaaS让您可以自由选择您喜欢的语言,因此Artifactory对25种封装技术的支持你覆盖了吗?
当然,通过发布构建信息,您还可以获得OpenFaaS的每个Docker映像的完整可追溯性,并且您甚至可以帮助保持安全JFrog x射线扫描的漏洞这些图像。这意味着Artifactory可以成为一个值得信赖的地方,你可以在这里存储应用程序的所有内容。
最佳实践:将它们捆绑在一起
让我们回顾一下我在swampUP舞台上构建的相同场景。
首先,我创建了一个新的模板从Artifactory获取Go模块。第26至30行涉及与Artifactory的连接。按顺序排列,线路包括:
- 配置JFrog CLI连接到Artifactory
- 构建Go应用程序
- 将应用程序和依赖项发布到Artifactory
- 收集build-info,并将该构建信息发布到Artifactory。
要获取模板并创建应用的大纲,你需要运行两个命令:
使用模板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- 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": "National Eat and Oreo Day", "url": "https://www.checkiday.com/f49c89ec9ad6e802c7a0adffb1d19ed2/national-eat-an-oreo-day"…]
接下来是什么?
如果您也想尝试这些步骤,请查看试驾选项我们有。这将使您可以在四天内访问Artifactory和Xray(对于扫描您刚刚构建的功能非常有用),而无需在本地机器上安装任何东西。一如既往,让我知道你的想法,评论和反馈推特!
