OpenFunction v1.0.0 发布:集成 WasmEdge,支持 Wasm 函数和更完整的 CI/CD
OpenFunction 是一个开源的云原生 FaaS(Function as a Service,函数即服务)平台,旨在帮助开发者专注于业务逻辑的研发。今天,我们非常高兴地宣布 OpenFunction 迎来了一次重要的更新,即 v1.0.0 版本的发布!
In this update, we continue to focus on providing developers with more flexible and powerful tools, and have added some new features on this basis. This release
本次更新中,我们继续致力于为开发者们提供更加灵活和强大的工具,并在此基础上加入了一些新的功能点。其中,该版本集成了 WasmEdge 以支持 Wasm 函数;我们还对 OpenFunction 的 CI/CD 功能进行了增强,提供了相对完整的端到端的 CI/CD 功能;除此之外,我们还在这个版本中新增了从本地代码直接构建函数或应用的镜像的功能,让开发者可以更加便捷地进行代码发布和部署。
与此同时,我们也在大力优化 OpenFunction 的性能和代码质量,使其更加稳定高效。
以下是本次版本更新的主要内容:
集成 WasmEdge,支持 Wasm 函数
WasmEdge 是一个轻量级、高性能和可扩展的 WebAssembly 运行时,适用于云原生、边缘和去中心化应用程序。它为 Serverless 应用程序、嵌入式功能、微服务、智能合约和物联网设备提供支持。
OpenFunction 现在支持构建和运行以 WasmEdge 为运行时的 Wasm 函数或应用。WasmEdge 成为 Docker、Containerd 和 CRI-O 之外的容器运行时的新选择。
Wasm 函数示例
cat <<EOF | kubectl apply -f -
apiVersion: core.openfunction.io/v1beta1
kind: Function
metadata:
name: wasmedge-http-server
spec:
workloadRuntime: wasmedge
image: openfunctiondev/wasmedge_http_server:0.1.0
imageCredentials:
name: push-secret
build:
dockerfile: Dockerfile
srcRepo:
revision: main
sourceSubPath: functions/knative/wasmedge/http-server
url: https://github.com/OpenFunction/samples
port: 8080
route:
rules:
- matches:
- path:
type: PathPrefix
value: /echo
serving:
runtime: knative
scaleOptions:
minReplicas: 0
template:
containers:
- command:
- /wasmedge_hyper_server.wasm
imagePullPolicy: IfNotPresent
livenessProbe:
initialDelaySeconds: 3
periodSeconds: 30
tcpSocket:
port: 8080
name: function
EOF
借助 WasmEdge 引擎,开发者可以使用多种支持 Wasm 的语言和开发框架来编写及运行函数。
如何构建和运行 Wasm functions,请参考官方文档 Wasm Functions。
更完整的 CI/CD
之前,用户可以使用 OpenFunction 将函数或应用程序源代码构建为容器镜像,然后直接将构建的镜像部署到底层的同步或异步 Serverless 运行时,而无需用户干预。
但是,OpenFunction 不能在函数或应用程序源代码发生更改时重新构建镜像并重新部署它,也不能在镜像更改时重新部署它(例如手动构建和推送镜像或在其他函数中构建镜像)。
从 v1.0.0 开始,OpenFunction 在新的组件 Revision Controller 中增加了检测源代码或镜像变更的能力,并且可以在检测到变更后触发镜像重新构建或重新部署新的镜像。Revision Controller 的能力包括:
- 检测 GitHub、GitLab 或 Gitee 中的源代码变更,然后在源代码变更时重新构建并重新部署新的镜像。
- 检测包含源代码的镜像(Bundle Container Image)的变更,然后在该镜像变更时重新构建和重新部署新的镜像。
- 检测函数或应用程序镜像变更,然后在函数或应用程序镜像变更时重新部署新的镜像。
更好的 CI/CD 功能确保了代码能在不同的环境中高效运行,使用者可以在开发和部署过程中更好的控制版本和代码质量,同时也为使用者提供了更好的使用体验。
此处请参考官方文档 CI/CD。
从本地源代码构建函数
目前,OpenFunction v1.0.0 支持根据本地的源代码构建函数或应用。只需要将本地源代码打包到容器镜像中,并将此镜像推送到容器注册表即可完成构建。以下为操作方法。
假设你的源代码在 samples 目录中,你可以根据以下 Dockerfile 来构建包含源代码的镜像。
FROM scratch
WORKDIR /
COPY samples samples/
然后如下操作:
docker build -t <your registry name>/sample-source-code:latest -f </path/to/the/dockerfile> .
docker push <your registry name>/sample-source-code:latest
推荐使用空镜像
scratch作为基础镜像构建包含源代码的镜像,非空基础镜像可能会导致源代码拷贝失败。
另外还需要定义字段 spec.build.srcRepo.bundleContainer.image。
apiVersion: core.openfunction.io/v1beta1
kind: Function
metadata:
name: logs-async-handler
spec:
build:
srcRepo:
bundleContainer:
image: openfunctiondev/sample-source-code:latest
sourceSubPath: "/samples/functions/async/logs-handler-function/"
sourceSubPath是包含源代码的镜像中源代码的绝对路径。
其他的改进和优化
除了上述的主要变化,该版本还有以下更改和增强:
- OpenFunction
- 核心 API
v1alpha2已弃用并删除 - 将 sha256 添加到服务镜像
- 将构建源信息添加到函数状态
- 将 Shipwright 升级到 v0.11.0
- 将 Knative 升级到 v0.32.0
- 将 Dapr 升级到 v1.8.3
- 将 Go 升级到 v1.18
- 核心 API
- functions-framework-java 发布 V1.0.0
- 在一个 pod 中支持多个函数
- 支持自动发布
- Builder
- 在一个 pod 中支持多个函数
- 将默认的 Java 框架版本更新为 1.0.0
- revision-controller 发布 v1.0.0(功能见上文)
以上就是 OpenFunction v1.0.0 的主要功能变化,在此十分感谢各位贡献者的参与和贡献。如果您正在寻找一款高效、灵活的云原生函数开发平台,那么 OpenFunction v1.0.0 将是您的绝佳选择。
了解更多关于 OpenFunction 和本次版本更新的信息,欢迎访问我们的官方网站和 Github 页面。
- 官网:https://openfunction.dev/
- Github:https://github.com/OpenFunction/OpenFunction/releases/tag/v1.0.0
本文由博客一文多发平台 OpenWrite 发布!
OpenFunction v1.0.0 发布:集成 WasmEdge,支持 Wasm 函数和更完整的 CI/CD的更多相关文章
- [转帖]银河麒麟Kydroid 2.0全新发布:原生支持海量安卓APP
银河麒麟Kydroid 2.0全新发布:原生支持海量安卓APP https://news.cnblogs.com/n/652299/将手机操作系统 转移到 桌面 跟chromebook 类似的策略吧 ...
- 05 Zabbix4.0触发器表达式Trigger expression支持的函数
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 05 Zabbix4.0触发器表达式Trigger expression支持的函数 所有函数返回值 ...
- 高性能 Java 框架。Solon v1.12.3 发布(春节前兮的最后更)
一个更现代感的 Java "生态型"应用开发框架:更快.更小.更自由.不是 Spring,没有 Servlet,也无关 JavaEE:新兴独立的轻量生态 (已有150来个生态插件) ...
- Gitea 与 Drone 集成实践:完全基于 Docker 搭建的轻量级 CI/CD 系统
Drone 是一个使用 Go 语言编写的自助式的持续集成平台,和 Gitea 一样可以完全基于容器部署,轻松扩展流水线规模.开发者只需要将持续集成过程通过简单的 YAML 语法写入 Gitea 仓库目 ...
- 【Eolink】Apikit V10.8.0 版本发布!增加支持 DUBBO、TCP、SOAP 、HSF、UDP 的接口协议
Apikit 最新功能来袭! 我们在这个版本实现了接口管理和测试能力的全面升级,包括且不限于: 新增功能速览: 增加支持 DUBBO.TCP.SOAP .HSF.UDP 接口文档和协议 接口文档可自动 ...
- windows系统下.NET CORE c# 通过bat脚本发布iis应用程序,半智能点击式ci/cd
这里以git为例子讲解: 第一个 pullCode.bat 文件是 拉取代码 git pull 第二个 publish.bat 脚本,编译代码,并发布指定文件夹 dotnet publish &quo ...
- JEECG 4.0 版本发布,JAVA快速开发平台
JEECG 4.0 版本发布,系统全面优化升级,更快,更稳定! 导读 ⊙平台性能优化,系统更稳定,速度闪电般提升 ...
- devops-5:从0开始构建一条完成的CI CD流水线
从0开始构建一条完成的CI CD流水线 前文中已经讲述了静态.动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线. 实 ...
- 轻量级CI/CD发布部署环境搭建及使用_03_docker安装harbor
轻量级CI/CD发布部署环境搭建及使用_03_docker安装harbor 授人以鱼不如授人以渔,如果说的别人都没明白,说明自己实际也不是太明白 1,下载docker-compose sudo c ...
- Gitea 与 Jenkins 的集成实践,打造你的专属 CI/CD 系统
前言 Gitea 是一个用于代码托管的轻量级单体程序,它能与现有的经典应用集成,诸如代码分析工具 SonarQube.持续集成工具 Drone.Jenkins 以及用于工单管理的客户端插件(VSCod ...
随机推荐
- signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) —— 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程编程模式(信号与槽机制) —— python3.12版本下成功通过测试
什么是 Qt signal-slot库项目地址: https://github.com/alex-petrenko/signal-slot 该库实现的主要原理: 要注意这个项目的library只是对原 ...
- 分布式深度学习计算框架依赖环境——NCCL的安装
分布式深度学习计算框架(MindSpore, PyTorch)依赖环境--NCCL, NCCL提供多显卡之间直接进行数据交互的功能(可以跨主机进行). 注意: 本文环境为 Ubuntu18.04 以 ...
- 在vscode中通过修改launch.json文件为项目添加环境变量——在launch.json文件中修改env变量
在vscode中launch.json文件具有十分重要的作用,在vscode中可以通过修改launch.json文件修改调试和运行代码时的设置. 本文假设已对vscode有初步了解,已可以创建laun ...
- 洛谷P1842 [USACO05NOV] 奶牛玩杂技
[USACO05NOV] 奶牛玩杂技 题目背景 Farmer John 养了 \(N\) 头牛,她们已经按 \(1\sim N\) 依次编上了号.FJ 所不知道的是,他的所有牛都梦想着从农场逃走,去参 ...
- Java抽象类 小白版
什么是抽象 抽象就是从多个事物中将共性的,本质的内容抽象出来. 什么是抽象类 Java语言中,用abstract关键字修饰的类叫作抽象类.类本身是不存在的,所以抽象类无法创建对象无法实例化. 在面向对 ...
- k8s实践——命名空间隔离+request-key机制解决CSI内核态域名解析
0x01 背景 Pod需要使用远程存储的PV,由同k8s集群内的服务提供的存储服务.一开始的做法是: CSI中解析Service的clusterIP. 然后使用clusterIP挂载PV卷. 但因为走 ...
- Linux-centos中修改默认root帐户的登录用户名
vi /etc/passwd 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键退出编辑状态,并输入:x保存并退出 vi /etc/shadow 按i键进入编辑状态 修改第1行第1个 ...
- installer 命令介绍
installer 命令是 macOS 系统中用于在命令行界面下安装 .pkg 格式的安装包的工具.这个命令特别有用于自动化安装软件或者在没有图形用户界面的情况下进行软件安装,比如在远程管理或者终端会 ...
- 网站由http升级为https图文教程
网站由http升级为https图文教程 本文是基于凯哥个人网站由http升级为https的记录. 前提说明:凯哥网站在AliYun备案的.所以基于此创建的.如果是腾讯云备案的域名也是类似的. 名词解释 ...
- Could not resolve placeholder 'xxx.xxx.xxx' in value "http://${xxx.xxx.xxx}"
代码一切正常,忽然报这个错误, 原因为,当前配置在配置文件最后,且前面均为注释,把当前配置位置提前即可