精华内容
下载资源
问答
  • openfaas

    2018-10-17 10:41:00
    英文博客 https://blog.alexellis.io/your-serverless-raspberry-pi-cluster/ 中文译文 https://linux.cn/article-9007-1.html?utm_source=index&utm_medium=more https://docs.openfaas.com/deplo...
        

    英文博客 https://blog.alexellis.io/your-serverless-raspberry-pi-cluster/
    中文译文 https://linux.cn/article-9007-1.html?utm_source=index&utm_medium=more

    https://docs.openfaas.com/deployment/docker-swarm/

    https://github.com/openfaas/faas

    步骤一

    • 多台树莓派均安装HypriotOS固件
    • 在master主机上执行docker swarm init命令
    • 在n台从机上执行docker swarm join 令牌字符串 主机IP地址:2377命令

    步骤2

    mkdir -p ~/openfaas && pushd ~/openfaas
    git clone https://github.com/openfaas/faas.git -b 0.9.6 faas-0.9.6
    
    cd faas-0.9.6
    docker stack deploy func --compose-file docker-compose.arm64.yml
    # 备注:32位raspbian可以执行./deploy_stack.armhf.sh , 但这里我们用的是64位HypriotOS所以手动docker敲命令
    
    Creating network func_functions
    Creating service func_gateway
    Creating service func_prometheus
    Creating service func_alertmanager
    Creating service func_nodeinfo
    Creating service func_markdown
    Creating service func_wordcount
    Creating service func_echoit
    
    watch 'docker service ls'
    
    # 手动下载 https://github.com/openfaas/faas-cli/releases/download/0.7.6/faas-cli-arm64 保存到 /tmp/faas-cli-arm64
    
    curl -sSL cli.openfaas.com > install-cli.sh
    切换到root
    sudo su
    启动翻墙代理, 设置http_proxy
    cat install-cli.sh | sh
    
    展开全文
  • openfaas-deno-template Openfaas的deno模板
  • OpenFaaS云 多用户OpenFaaS平台 介绍 OpenFaaS Cloud引入了针对无服务器功能的自动构建和管理系统,并将其与GitHub或GitLab的源代码管理系统进行了本地集成。 使用OpenFaaS Cloud,可以通过键入git push来管理功能...
  • Openfaas云-源码

    2021-02-21 07:20:59
    Openfaas
  • OpenFAAS integration

    2020-11-24 15:02:04
    <div><p>Hi Tim, Wondering if you're familiar with openfaas, and if so have considered running exoframe in it? Richard</p><p>该提问来源于开源项目:exoframejs/exoframe</p></div>
  • Openfaas Cron连接器 用于的基于Node.js的cron连接器,允许用户指定要调用其函数的cron表达式以及要遵循的cron时间表的时区。 只要可以访问OpenFaaS网关,它就可以部署在OpenFaaS旁边,也可以部署在外部群集中。 ...
  • 该操作员已移动! 发生了什么事?...Kubernetes的官方OpenFaaS运营商和CRD 需要Kubernetes 1.11或更高版本 openfaas.com/v1 CRD的示例Function 最小示例: apiVersion : openfaas.com/v1 kind : F
  • Serverless OpenFaas

    千次阅读 2019-01-25 15:39:38
    OpenFaas 文章目录@[toc]原理技术简介架构结构分析性能性能表现环境对象数据生态圈高级用法YAML命名空间工作流函数调用多级页面权限API网关内置基本身份验证其他secret函数Openfaas Cloud原理特点实践安装使用说明...

    原理

    技术简介

    OpenFaaS是golang编写的一个使用Docker和Kubernetes构建的serveless框架
    和Fnproject 有点像,只是 Openfaas 并不是直接抓取容器的标准输出,而是写一个 Function Watchdog 作为容器的启动进程,暴露 http 服务,用于和调度系统交互,然后直接调用进程运行 Function 获取输出。

    在这里插入图片描述

    Prometheus:监控系统报警框架
    watchdog:https://news.ycombinator.com/item?id=15116834
    Swarm:提供 Docker 容器集群服务

    架构

    在这里插入图片描述
    当Gateway作为一个入口,当CLI或者web页面发来要部署或者调用一个函数的时候,Gateway会将请求转发给Provider,同时会将监控指标发给Prometheus。AlterManager会根据需求,调用API自动伸缩函数。

    结构分析

    • 基本的安全验证
    • 和函数相关的代理转发
      • 同步函数
        • 列出函数
        • 部署函数
        • 删除函数
        • 更新函数
    • 异步函数
    • Prometheus的监控
    • ui
    • 自动伸缩
      • 根据每秒请求数来做伸缩
      • 最小/最大副本数 通过向函数添加标签, 可以在部署时设置最小 (初始) 和最大副本数。
      • 通过内存和CPU的使用量。

    性能

    社区活跃度
    Dec 18, 2016 – Dec 27, 2018

    https://kenfdev.o6s.io/github-stats-page#/
    在这里插入图片描述
    1.社区活动

    开发工作量平均每周大约5个commits

    2.社区规模

    github核心开发人员3名

    3.社区表现

    issues的平均close周期比较长

    5.社区多样性
    Pony factor:1

    性能表现

    环境

    非生产环境

    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                2
    On-line CPU(s) list:   0,1
    Thread(s) per core:    1
    Core(s) per socket:    1
    Socket(s):             2
    NUMA node(s):          1
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 42
    Model name:            Intel Xeon E312xx (Sandy Bridge)
    Stepping:              1
    CPU MHz:               1999.999
    BogoMIPS:              3999.99
    Hypervisor vendor:     KVM
    Virtualization type:   full
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              4096K
    NUMA node0 CPU(s):     0,1
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    
    对象

    http://192.168.44.204:8080/function/figlet 0.016
    http://192.168.44.204:8080/function/nodeinfo 0.2
    http://192.168.44.204:8080/function/echoit 0.02

    数据

    单任务
    在这里插入图片描述

    #!/bin/bash
    rm -rf ab.log  
    for i in $(cat url.txt)
    do
        if [ "$1" == "" ]
        then 
            echo "is empty" 
        elif [[ "$2" == "" ]]
        then
            if [ "$3" == "" ]
            then
                Echo "c = $1,no t,no n"
                ab -c $1 $i >> ab.log &
                continue
            else
                Echo "c = $1,no t,n = $3 "
                ab -t $2 -n $3 $i >> ab.log &
                continue
            fi
    
        elif [[ "$3" == "" ]]
        then
            Echo "c = $1,t = $2 ,no n"
            ab -c $1 -t $2 $i >> ab.log &
            continue
        else
            Echo "c = $1,t = $2 ,n = $3 "
            ab  -c $1 -t $2 -n $3 $i >> ab.log &
            continue
        fi
    done
    

    在这里插入图片描述
    多函数
    Figlet/nodeino/echoit
    http://192.168.44.204:8080/function/figlet
    http://192.168.44.204:8080/function/nodeinfo

    在这里插入图片描述
    在这里插入图片描述
    做压力测试是为了知道服务器(单台)的QPS承受能力是多少。得到我们服务器能承受的最大并发数和最大QPS值,就要进行压力测试

    生态圈

    内部服务

    • 事件源 http,cli等
    • CLI: fass_cli
    • Prometheus
    • watchdog
    • Docker/k8s
    • NATS Streaming

    外部服务

    • Openfaas云:使用git管理的多用户无服务器功能
    • 触发:kafka\sns\Cloud event\IFTT\Redis\RebbitMQ
      生产工具
    • faas-netes

    高级用法

    YAML

    provider:
      name: faas
      gateway: http://127.0.0.1:31112
    functions:
      first:
        lang: python3
        handler: ./IamSequin/first
        image: sequinyf/first:latest
      second:
        lang: python3
        handler: ./second
        image: sequinyf/second:latest
    

    网关URL可以硬编码到YAML文件中,也可以在部署时使用–gateway标志或OPENFAAS_URL env-var覆盖。
    函数handler字段指的是可以找到函数源代码的文件夹,它必须是文件夹而不是文件名。

    build时需要添加模块

    build_options : 
      -  name : dev 
        packages : #必需包的列表
          -  make 
          -  automake 
          -  gcc 
          # -  etc. 
      -  name : debug 
        packages : 
          -  mg 
          -  iw 
          # -  etc.
    

    environment字段

    • Content-Type
    • 超时
    • 日志

    也可以在yaml中自定义字段,通过获取环境在函数中获取。

    命名空间

    //可以通过openfaas cloud实现

    工作流

    函数调用

    从另一个函数调用一个函数的最简单方法是通过OpenFaaS API网关通过HTTP进行调用。此调用不需要知道外部域名或IP地址,它可以gateway通过DNS条目简单地引用API网关。

    使用requests库发出http请求

    多级页面

    html:
    http://10.202.26.244:31112/function/sequin-test3/new
    http://10.202.26.244:31112/function/sequin-test3/list

    权限

    API网关
    内置基本身份验证

    OpenFaaS的API网关提供内置的基本身份验证:

    开启basic_auth

    # /home/wangyifei03/faas-netes/yaml/gateway-dep.yml
    
    - name: basic_auth
      value: "true"
    

    推荐使用helm chart安装的openfaas。在init 参数上开启
    --set basic_auth=true

    然后创建两个名为 basic-auth-user 和 basic-auth-password的secrets

    #sequin
    #1a2b3c4d
    kubectl create secret generic basic-auth-password --from-file=basic-auth-password=passwd --namespace openfaas-fn
    kubectl create secret generic basic-auth-user --from-file=basic-auth-user=user --namespace openfaas-fn
    
    kubectl get secrets
    NAME                  TYPE                                  DATA   AGE
    basic-auth-password   Opaque                                1      13m
    basic-auth-user       Opaque                                1      13m
    

    生效后使用faas-cli之前就需要登陆

    faas-cli login

    在这里插入图片描述

    其他

    反向代理项目(如Kong)来启用OAuth或类似策略

    secret

    secret用于在函数中使用API​​令牌,密码等

    创建一个secret文件里面存放密码
    echo -n '1a2b3c4d' > ./password.txt

    创建secret对象

    kubectl create secret generic secret-api-key \
      --from-file=secret-api-key=password.txt \
      --namespace openfaas-fn
    
    kubectl get secrets -n openfaas-fn
    NAME                  TYPE                                  DATA   AGE
    secret-api-key        Opaque                                1      4h5m
    

    当部署一个function的时候,编写一个函数去使用它:

    package function
    
    import (
    	"fmt"
    	"io/ioutil"
    	"log"
    	"os"
    	"strings"
    )
    
    func getAPISecret(secretName string) (secretBytes []byte, err error) {
    	secretBytes, err = ioutil.ReadFile("/var/openfaas/secrets/" + secretName)
    	if err != nil {
    		secretBytes, err = ioutil.ReadFile("/run/secrets/" + secretName)
    	}
    
    	return secretBytes, err
    }
    
    func handle(body []byte) {
    	key := os.Getenv("Http_X_Api_Key")
    
    	secretBytes, err := getAPISecret("secret_api_key")
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	secret := strings.TrimSpace(string(secretBytes))
    
    	if key == secret {
    		fmt.Println("Unlocked the function!")
    	} else {
    		fmt.Println("Access denied!")
    	}
    }
    
    func Handle(req []byte) string {
    	handle(req)
    	return "ok"
    }
    

    部署函数,要在函数的yaml文件中指明secret

    provider:
      name: faas
      gateway: http://127.0.0.1:31112
    functions:
      sec:
        lang: go
        handler: ./sec
        image: sequinyf/sec:latest
        secrets:
        - secret-api-key
    

    触发的时候,需要添加一个参数

    echo | faas-cli invoke temp -H "X-Api-Key=1a2b3c4d"
    good
    
    echo | faas-cli invoke temp -H "X-Api-Key=aaaaaa"
    no
    

    可以对多个函数设置一个secret或者多个secret

    函数

    HMAC使用对称密钥,发送方/接收方都提前共享。当想要传输消息时,发送方将生成散列 - 此数据与有效负载一起发送。然后,接收方将使用共享密钥对有效负载进行签名,如果散列匹配,则假定有效负载来自发送方。(有些相应外部系统的功能不支持身份验证,比如webhook)

    首先部署env
    faas-cli deploy --name env --fprocess="env" --image="functions/alpine:latest"

    当使用 --sign 标志时,会生成Http_Hmac字段

    echo -n "The message" | faas-cli invoke env --sign=HMAC --key=cookie
    Http_Hmac=sha1=9239edfe20185eafd7a5513c303b03d207d22f64
    

    OpenFaaS将HMAC视为环境变量Http_Hmac。生成的值是使用密钥The message --sign后的哈希值cookie,然后使用散列方法sha1。

    为HMAC创建一个secret,修改目标Function的yaml指明secret.

    官方的目标函数代码:

    import os, hmac, hashlib
    
    def validateHMAC(message, secret, hash):
    
        # GitHub and the sign flag prefix the hash with "sha1="
        receivedHash = getHash(hash)
    
        # Hash message with secret
        #收到请求后,该函数将使用secret对请求消息进行签名。这将创建第二个HMAC,将其与'Http-Hmac`进行比较。
    
        expectedMAC = hmac.new(secret.encode(), message.encode(), hashlib.sha1)
        createdHash = expectedMAC.hexdigest()
    
        return receivedHash == createdHash
    
    def getHash(hash):
        if "sha1=" in hash:
            hash=hash[5:]
        return hash
    
    def handle(req):
        # We receive the hashed message in form of a header
        messageMAC = os.getenv("Http_Hmac")
    
        # Read secret from inside the container
        with open("/var/openfaas/secrets/payload-secret","r") as secretContent:
            payloadSecret = secretContent.read()
    
        # Function to validate the HMAC
        if validateHMAC(req, payloadSecret, messageMAC):
            return "Successfully validated: " + req
        return "HMAC validation failed."
    

    调用

     echo -n "This is a message" | faas-cli invoke hmac-protected --sign hmac --key=<your-secret>
     Successfully validated: This is a message
     HMAC validation failed.
    

    Openfaas Cloud

    原理

    在这里插入图片描述
    主要流程:

    • 用户推送代码 - GitHub / GitLab推送事件被发送到github-event / gitlab-event函数,触发CI / CD工作流程
    • 用户从一个或多个repos中删除GitHub / GitLab应用程序 - 调用垃圾收集删除1个多功能
    • 用户通过路由器使用“漂亮的URL”格式访问功能,并通过API网关将请求路由到功能
    特点

    在这里插入图片描述

    • 便携式 - 自托管
    • 多用户 - 使用您的GitHub / GitLab身份登录您的个人仪表板
    • 自动化由git push(也称为GitOps)触发的CI / CD
    • 通过在GitLab中添加GitHub应用程序或存储库标记,只需单击即可在板上添加新的git 存储库
    • 立即反馈您的个人仪表板和GitHub支票或GitLab状态
    • 使用HTTPS的每个用户或组织的子域
    • 使用Docker的buildkit构建快速的非root映像

    实践

    安装使用说明

    环境

    Debian9

    安装docker

    卸载docker

    sudo apt-get remove docker \
                   docker-engine \
                   docker.io
    

    配置环境

    $ sudo apt-get update
    
    $ sudo apt-get install \
         apt-transport-https \
         ca-certificates \
         curl \
         gnupg2 \
         lsb-release \
         software-properties-common
    

    添加软件源的gpg密钥

    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
    

    添加docer-ce软件源

    sudo add-apt-repository \
       "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian \
       $(lsb_release -cs) \
       stable"
    
    

    apt-get update && apt-get install -y docker-ce=$(apt-cache madison docker-ce | grep 18.09.1 | head -1 | awk '{print $3}’)

    锁定版本
    apt-mark hold docker-ce

    安装k8s

    !!!
    首先关闭分区
    sudo swapoff -a

    能翻墙
    安装依赖工具、添加 GPG 秘钥、添加软件仓库,进行软件下载 这一步照着k8s的官网来。

    apt-get update && apt-get install -y apt-transport-https curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb http://apt.kubernetes.io/ kubernetes-xenial main
    EOF
    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    apt-mark hold kubelet kubeadm kubectl
    
    

    在官网选一个组网,我用的fannal

    kubeadm init --apiserver-advertise-address=你的ip --pod-network-cidr=10.244.0.0/16

    不能翻墙

    不能翻墙的话需要备好所需的镜像。

    # 添加可信密钥
    curl -s http://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
    
    #添加源地址
    cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
    deb http://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
    EOF
    
    #更新
    apt-get update
    
    #安装
    apt-get install -y kubelet kubeadm kubectl 
    

    然后把你准备好的镜像pull下来。

    修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,这一步是使cgroupdrive支持kubelet 、绕过墙。

    Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrapkubelet.
    conf --kubeconfig=/etc/kubernetes/kubelet.conf --runtimecgroups=/
    systemd/system.slice --kubelet-cgroups=/systemd/system.slice --pod-infra-containerimage=
    dockerhub.nie.netease.com/whale/pause:3.1"
    

    然后重启服务

    systemctl daemon-reload
    

    组网,这个是calico,按照官网的选就行。

    kubeadm init --podnetwork-cidr=192.168.0.0/16
    

    网络这里经常会出现问题,看缘分吧,不行就换插件。很容易出现node notfound的问题,具体看解决方法查看https://g.126.fm/028py8g。

    openfaas
    安装

    安装方式:k8s

    1 安装cli
    curl -sL https://cli.openfaas.com | sudo sh
    2 安装

    1. helm (官网说helm用于生产,yaml适用于开发,这里我用的yaml)
    2. yaml
    git clone https://github.com/openfaas/faas-netes
    kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
    cd faas-netes && kubectl apply -f ./yaml
    
    

    查看安装情况

    kubectl get pod --all-namespaces

    在这里插入图片描述

    使用

    Openness 自带的商店可以一键部署一些demo

    通过命令行部署

    faas-cli store list
    faas-cli deploy -f https://raw.githubusercontent.com/openfaas/faas/master/stack.yml
    

    或者openfaas UI http://127.0.0.1:8080
    在这里插入图片描述
    UI

    http://localhost:8080
    UI 可以查看function的运行情况和状态,也可以通过UI调用函数。
    在这里插入图片描述

    部署function也可以通过UI部署,选择打包好的镜像
    在这里插入图片描述

    监控部分

    OpenFaaS使用Prometheus自动跟踪功能指标
    部署grafana
    现在docker 上找到pull openfaas grafana
    https://hub.docker.com/r/stefanprodan/faas-grafana/

    kubectl -n openfaas run \
    --image=stefanprodan/faas-grafana:4.6.3 \
    --port=3000 \
    grafana
    
    kubectl -n openfaas expose deployment grafana \
    --type=NodePort \
    --name=grafana
    
    $GRAFANA_PORT=$(kubectl -n openfaas get svc grafana -o jsonpath="{.spec.ports[0].nodePort}")
    

    prometheus: http://10.202.26.244:31119/graph
    在这里插入图片描述
    Grafana: http://10.202.26.244:30020/dashboard/db/openfaas?refresh=5s&orgId=1
    在这里插入图片描述
    开发流程

    Openfaas 支持多种模版

    $ faas-cli new --list
    Languages available as templates:
    - csharp
    - dockerfile
    - go
    - go-armhf
    - node
    - node-arm64
    - node-armhf
    - python
    - python-armhf
    - python3
    - ruby
    

    用打包好的模版

    faas-cli new --lang python3 hello-openfaas --prefix="<your-docker-username-here>”
    

    该–prefix参数将使用前缀更新image: hello-openfaas.yml,该前缀应该是Docker Hub帐户。

    ./hello-openfaas.yml
    ./hello-openfaas
    ./hello-openfaas/handler.py
    ./hello-openfaas/requirements.txt
    

    一个待部署的function包含以上几个模块
    Yaml文件可以方便的设置function部署环境,包括将多个function组合、超时设置、日志设置等
    有使用pip要安装的第三方依赖模块,例如requests或urllib 需要在requirements.txt中声明。

    部署时需要首先登陆docker,生成的镜像需要docker用户名做前缀。

    部署
    faas-cli up -f hello-openfaas.yml

    在这里插入图片描述

    定时样例

    OpenFaaS借助k8s的cron job实现定时任务

    定时任务执行的函数是nodeinfo函数,我已经部署好了,该函数用于返回服务器信息。
    首先创建一个cronjob的yaml文件

    # node-cron.yaml
    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: nodeinfo
      namespace: openfaas
    spec:
      schedule: "*/1 * * * *"
      concurrencyPolicy: Forbid
      successfulJobsHistoryLimit: 1
      failedJobsHistoryLimit: 3
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: faas-cli
                image: openfaas/faas-cli:0.7.1
                args:
                - /bin/sh
                - -c
                - echo "verbose" | faas-cli invoke nodeinfo -g http://10.202.26.244:31112
              restartPolicy: OnFailure
    

    部署:kubectl apply -f node-cron.yaml

    查看:

    kubectl get cronjob nodeinfo --watch -n openfaas
    NAME       SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    nodeinfo   */1 * * * *   False     0        38s             12m
    nodeinfo   */1 * * * *   False   1     2s    13m
    nodeinfo   */1 * * * *   False   0     12s   13m
    
    

    总结

    特点

    • package in Docker/OCI image format
    • Runs on Kubernetes and Docker Swarm native
    • CLI available with YAML format for templating and defining functions
    • Auto-scal

    思考

    使用OpenFaas,任何进程或容器都可以打包为Linux或Windows的无服务器功能。对于企业而言,OpenFaaS使用的体系结构提供了无缝插入计划群集和现有微服务的CI/CD工作流的能力,因为OpenFaaS是围绕Docker构建的,所有功能都打包到Docker镜像中。OpenFaaS还为企业提供了一种通过外部API,网关管理和执行函数的无缝方式,并管理函数的生命周期,包括通过提供商进行部署,扩展和secret管理。

    展开全文
  • tensorflow-serving-openfaas:将TensorFlow服务与OpenFaaS结合使用的示例
  • openfaas-plus-webassembly:WebAssembly + OpenfaaS无服务器功能的通用运行时
  • 用于Spring Cloud功能的OpenFaas模板 这是一个OpenFaas模板,它提供以下环境: 弹簧扣功能 webflux 杰克11 用功能编写您的业务逻辑,即仅提供RequestHandler的实现。 通过DI,实现从REST类传递到功能。 因此,只...
  • 您是否在寻找OpenFaaS? 您可能正在寻找 。 状态 这是Serverless Inc.的“无服务器” JavaScript框架的插件。在上一次提交时,该插件已投入运行。 在撰写本文时,OpenFaaS CLI具有500-600次提交,并且完全用Go编写...
  • openfaas-puppeteer-模板 该使用 来访问 。 Puppeteer是一种流行的工具,可以自动化无头的Chrome浏览器来抓取完全渲染的网页。 用例: 使用mocha / jest对真实网站进行端到端测试 捕获网站的屏幕截图并进行比较 从...
  • OpenFaaS 网关

    2018-07-27 06:30:50
    网关还有一个内置的UI界面,使得你可以从OpenFaaS的函数商店部署并调用自己的函数。 网关会根据需要自动伸缩函数,依据Docker Swarm 或 Kubernetes的API来改变服务的副本数来做到。 在/system/alert端点接收Alert...

    Gateway

    API网关为你的函数提供了一个外部路由,并通过Prometheus收集云原生指标。网关还有一个内置的UI界面,使得你可以从OpenFaaS的函数商店部署并调用自己的函数。

    网关会根据需要自动伸缩函数,依据Docker Swarm 或 Kubernetes的API来改变服务的副本数来做到。 在/system/alert端点接收AlertManager生成的自定义通知。

    综上:

    • 内置UI÷
    • 部署自定义函数,或者函数商店中的函数
    • Prometheus的仪表盘
    • 通过AlertManager自动伸缩
    • REST API

    图:Kubernetes作为编排provider时的概念架构

    函数提供者

    可以使用Golang实现的faas-provider 接口来实现函数提供者程序,该接口是用于于网关交互的REST API 。网关最初是和Docker Swarm直接交互,一个函数提供者的相关东西现在被移动到一个单独的faas-swarm项目中。

    REST API

    Swagger 文档: https://github.com/openfaas/faas/tree/master/api-docs

    日志

    日志在函数级别可以用,而且可以使用本机工具通过 Swarm 或 Kubernetes 来访问。你也可以安装Docker日志记录驱动程序来收集日志。默认情况下,函数不会把请求和响应体写到stdout。你可以通过设置read_debugwrite_debug 来切换。

    追踪

    "X-Call-Id"头被添加到每一个通过网关的调用,用来追踪和监控调用。我们使用了UUID字符串。

    Header:

    X-Call-Id
    复制代码

    在函数中,可以用作Http_X_Call_Id

    环境变量重载

    可以通过如下的环境变量配置网关:

    选项 用法
    write_timeout 函数中写入响应体的HTTP超时时间(以秒为单位),默认是8
    read_timeout 从客户端读取有效载荷的HTTP超时时间(以秒为单位),默认是8
    functions_provider_url 上游 函数提供者的URL,比如:Swarm,Kubernetes,Nomad等
    faas_nats_address 服务的地址。异步模式需要
    faas_nats_port 服务端口。异步模式需要
    faas_prometheus_host 主机连接 Prometheus,默认是 "prometheus"
    faas_promethus_port Port to connect to Prometheus. Default: 9090 Prometheus连接端口。默认是9090
    direct_functions truefalse - 直接通过覆盖网络请求调用函数,而不是通过提供者
    direct_functions_suffix 提供一个DNS后缀,用来直接通过网络调用函数
    basic_auth 设置truefalse ,在/system和/ui开启基本的身份验证
    secret_mount_path 设置你已经安装的位置的basic-auth-userbasic-auth-password,默认是/run/secrets/
    scale_from_zero 启用拦截代理,将任意函数扩展的最大值。

    转载于:https://juejin.im/post/5b5abba96fb9a04fa671b46f

    展开全文
  • OpenFaaS需要Kubernetes或Docker Swarm集群才能运行。无论是在笔记本电脑上还是在云中,都可以使用单节点群集或多节点群集。 任何OpenFaaS功能基本都是原于Docker映像,它是使用faas-cli工具链构建的。 先决条件: ...

    openfaas
    OpenFaaS需要Kubernetes或Docker Swarm集群才能运行。无论是在笔记本电脑上还是在云中,都可以使用单节点群集或多节点群集。
    任何OpenFaaS功能基本都是原于Docker映像,它是使用faas-cli工具链构建的。

    先决条件:

    让我们先来安装Docker、OpenFaaS CLI并选择Kubernetes或Swarm以便继续。

    Docker

    对于 Mac电脑:

    对于Windows电脑:

    请确保通过Windows任务栏通知区域中的Docker菜单使用Linux容器Docker守护程序。

    当您安装git bash时,请选择以下选项:install UNIX commandsuse true-type font

    注意:请在所有步骤中使用Git Bash:请勿尝试使用PowerShellWSLBash Windows

    Linux-Ubuntu或Debian

    • 适用于Linux的Docker CE

    您可以从[Docker Store](https://store.docker.com)安装Docker CE。

    注意:万一您有不兼容的PC,可以在https://labs.play-with-docker.com/上运行workshop。

    OpenFaaS CLI

    您可以使用官方的bash脚本安装OpenFaaS CLI,也可以使用“brew”,但可能会落后一两个版本。

    对于MacOS或Linux,请在终端中运行以下命令:

    $ curl -sLSf https://cli.openfaas.com | sudo sh
    

    对于Windows,在Git Bash中运行:

    $ curl -sLSf https://cli.openfaas.com | sh
    

    如果遇到任何问题,则可以从发布页面手动下载最新的faas-cli.exe。您可以将其放置在本地目录中或C:\Windows\路径中,以便在命令提示符下可用。

    我们将使用faas-cli创建新功能,构建,部署和调用功能。您可以使用faas-cli --help找出可用于cli的命令。

    测试faas-cli。打开终端或Git Bash窗口并输入:

    $ faas-cli help
    $ faas-cli version
    

    配置registry-Docker Hub

    注册Docker Hub帐户。Docker Hub允许您在互联网上发布Docker映像,以用于多节点群集或与更广泛的社区共享。我们将在workshop期间使用Docker Hub发布我们的功能。

    您可以在这里注册:Docker Hub

    注:需要科学上网

    打开终端或Git Bash窗口,并使用您在上面注册的用户名登录Docker Hub。

    $ docker login
    

    注意:来自开源社区的提示——如果在尝试在Windows计算机上运行此命令时遇到错误,请单击任务栏中的Docker for Windows图标,然后在此处登录Docker,而不是“登录/创建Docker ID”。

    • 为新镜像设置OpenFaaS前缀

    OpenFaaS镜像存储在Docker registry或Docker Hub中,我们可以设置环境变量,以便将用户名自动添加到您创建的新功能中。这将为您节省workshop课程的时间。

    编辑~/.bashrc~/.bash_profile——创建文件(如果不存在)。

    现在添加以下内容-根据上面看到的内容更改URL。

    export OPENFAAS_PREFIX =“”	#使用您的Docker Hub用户名填充
    

    设置单节点群集

    如果您正在参加讲师指导活动,那么组织者可能会要求您使用Docker Swarm,因为在短时间内设置起来更快,更容易。对于某些workshop,您将使用Kubernetes。

    如果您独立工作,那么您完全可以按照自己的意愿选择。

    通过选择以下两个方式其中之一,来开始第一个实验:

    • Docker Swarm:实验1a

    • Kubernetes:实验1b

    预拉系统映像(仅在使用Swarm时)

    拉最新的OpenFaaS图像。

    curl -sSL https://raw.githubusercontent.com/openfaas/faas/master/docker-compose.yml | grep image | awk -F " " '{print $NF}' | xargs -L1 docker pull
    

    这应该可以抵消试图同时提取镜像的多个参与者对公司网络的影响。

    展开全文
  • openfaas 了解

    2017-10-08 10:05:00
    OpenFaaS (Functions as a Service) is a framework for building serverless functions with Docker which has first class support for metrics. Any process can be packaged as a function enabling...
  • docs:OpenFaaS文档站点
  • 首先 OpenFaaS 可以部署在 k8s, OpenShift, Docker Swarm 上,其中官方推荐使用 k8s Install faas-cli 如果是Mac的话,可以直接 brew install faas-cli Create two namespaces openfaas & openfaas-fn kubectl ...
  • <div><p>I try to install openFaas on my openshift instance. <p>I follow this: - https://blog.getupcloud.com/openfaas-openshift-c76658949365. - https://blog.openshift.com/openfaas-on-openshift/</p> ...
  • 博客中,介绍了openfaas的安装以及基本操作,也介绍了一点基于命名空间做资源配额的内容,但是上篇博客说到,默认情况下,所有OpenFaaS函数和服务都部署到OpenFaaSOpenFaaS fn名称空间。要更改名称空间,请使用...
  • preview outside OpenFaaS?

    2020-12-09 06:31:34
    <p>Maybe the code rendering the frontend in OpenFaaS could be used to create a simple page, e.g. on GitHub pages and linked from this repo?</p><p>该提问来源于开源项目:openfaas/store</p></div>
  • <ul><li>[x] I have raised an issue to propose this change (<a href="https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md">required)</li></ul> <h2>How Has This Been Tested? <p>I have tested...
  • openfaas-python3-template
  • OpenFaaS 开发测试教程

    2021-04-13 21:25:23
    本来访问 OpenFaaS 控制台以后,国外的网络可以直接运行一些官方例子进行测试的,但是由于部署集群的机器都是国内的集群环境,所以无法直接使用官方例子,本文将会从动手写一个小栗子,展开 OpenFaaS 的功能全貌。...
  • OpenFaaS经典模板 要了解有关OpenFaaS模板的更多信息,请参见 。 注意:模板是完全可定制的-因此,如果要更改它们,请分叉它们,并使用faas template pull来利用更新的版本。 经典模板 该存储库包含Classic ...
  • adds openfaas-exif

    2020-12-09 10:18:30
    <div><p>Associated with Issue #100 </p><p>该提问来源于开源项目:openfaas/store</p></div>
  • OpenFaaS-无服务器应用

    2021-01-22 11:18:09
    OpenFaaS®使开发人员可以轻松地将事件驱动的功能和微服务部署到Kubernetes,而无需重复的样板代码。将您的代码或现有二进制文件打包到Docker映像中,以获得具有自动扩展和指标的高度可扩展的端点。 重点说明 通过...
  • <p>Currently we only allow the user to set the <code>topic</code> annotation in their functions. Since we now support custom health checks it would be good if we add ...openfaas/openfaas-cloud</p></div>
  • OpenFaaS-Nomad提供者 该存储库包含Nomad调度程序的OpenFaaS提供程序。 OpenFaaS允许您将私有功能作为服务运行。 函数打包在Docker容器中,使您可以使用任何语言进行工作,还可以与也可以安装在容器中的任何软件进行...
  • <p>i am using the jaeger python client library in my serverless functions run with OpenFaaS on Docker Swarm. So far it does work, but calling tracer.close only works if i put time.sleep behind it :( I...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,585
精华内容 634
关键字:

openfaas