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
  • 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 页面。

本文由博客一文多发平台 OpenWrite 发布!

原文链接:https://www.cnblogs.com/kubesphere/p/17225716.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:OpenFunction v1.0.0 发布:集成 WasmEdge,支持 Wasm 函数和更完整的 CI/CD - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • IBM: 用户至上是云计算标准的发展之道

    本文讲的是IBM: 用户至上是云计算标准的发展之道,(2012年5月23日,北京)– 今天,IBM在北京隆重召开了“重塑IT,激发商业变革”——2012 IBM 云计算高峰论坛,与会来自全国的云计算专家和企业代表,与IBM云专家共同探讨了云计算在中国发展实践、落地应用的具体状况。今年IBM的云计算高峰论坛以实际应用案例为主,从不同行业的实践角度,诠释了云计算…

    云计算 2023年4月13日
    00
  • 云计算第二阶段shell脚本

    pstree                         #查看进程树 cat /etc/shells                #查看系统安装的所有shell解释器 yum -y install ksh                      #安装新的解释器   1、声明解释器                 #!/bin/bash 2、注释脚…

    云计算 2023年4月10日
    00
  • .Net Core中使用Quartz.Net实践记录

    下面我将为您详细讲解“.Net Core中使用Quartz.Net实践记录”的完整攻略。 什么是Quartz.Net Quartz.Net是一个开源的作业调度框架,可以用来实现定时任务、计划任务等。使用Quartz.Net可以实现复杂的任务调度,不仅可以在应用程序内部触发作业,还可以通过网络触发。 实现过程 这里我们将介绍如何在.Net Core中使用Qua…

    云计算 2023年5月17日
    00
  • 对近2年来“互联网思维”、“物联网”、“云计算”、“大数据”,“小白用户”等时髦词汇的些思考

      平时喜欢关注科技新闻,所以会在经常科技栏目里看到关于什么“互联网思维”,“物联网”,“小白用户”,”云计算“等等这些热词的文章。但是个人觉得很多文章是过度解读,在给读者相应的一些正面信息的同时,感觉更多的是给很多读者造成了一些负面影响。下面谈谈我自己的一些感受。   互联网思维   过度解读的典型,弄得过渡的神秘。自从近些年互联网通过自身强大的力量对传统…

    云计算 2023年4月10日
    00
  • 云计算常见面试题及参考答案集锦

    云计算常见面试题及参考答案集锦攻略 简介 本文总结了云计算常见面试题及参考答案,旨在帮助准备云计算相关面试的读者更好地备战。本篇文章主要涵盖以下内容: 云计算概念 云计算服务模型 云计算部署模型 云计算安全 操作系统及网络基础知识 云计算概念 1. 什么是云计算? 云计算是一种基于互联网的计算方式,它通过提供按需获取的可扩展的资源,为用户提供网络、存储、应用…

    云计算 2023年5月17日
    00
  • .Net Core3.0 WEB API中使用FluentValidation验证(批量注入)

    下面我来详细讲解“.Net Core3.0 WEB API中使用FluentValidation验证(批量注入)”的完整攻略。 简介 FluentValidation是一个验证库,可用于在C#中编写验证规则。 它专门用于面向对象验证,并提供了一种简单、强大的方法来验证您的一般的“POCO”类,而不需要创建过于复杂的自定义验证器。本文将介绍如何在.NET Co…

    云计算 2023年5月17日
    00
  • 聊一聊Asp.net过滤器Filter那一些事

    请看下面的详细讲解: 聊一聊Asp.net过滤器Filter那一些事 1. 过滤器Filter是什么? 过滤器(Filter)是ASP.NET中一种非常重要和有用的概念,它用于对应用程序中的请求和响应进行拦截和处理,以完成一些特定的任务。过滤器可以在请求执行之前、期间和之后被执行。 2. 过滤器类型 ASP.NET中提供了以下5种过滤器类型: 2.1. 授权…

    云计算 2023年5月17日
    00
  • 大数据workshop:《云数据·大计算:海量日志数据分析与应用》环境准备

    原文链接:http://click.aliyun.com/m/13840/ 大数据workshop:《云数据·大计算:海量日志数据分析与应用》 实验背景介绍 了解更多2017云栖大会·深圳峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《云计算·大数据:海量日志数据分析与应用》场的前提准备条件所需。主要为保障各…

    云计算 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部