• fission使用指南


    Fission 简介

    Fission 是由私有云服务提供商 Platform9 领导开源的 serverless 产品,它借助 kubernetes 灵活强大的编排能力完成容器的管理调度工作,而将重心投入到 FaaS 功能的开发上,其发展目标是成为 AWS lambda 的开源替代品。从 CNCF 视角,fission 属于 serverless 平台型产品。

    核心概念

    Fission 包含 FunctionEnvironmentTrigger 三个核心概念,其关系如下图所示:

    1. Function - 代表用特定语言编写的需要被执行的代码片段。
    2. Environment- 用于运行用户函数的特定语言环境。
    3. Trigger - 用于关联函数和事件源。如果把事件源比作生产者,函数比作执行者,那么触发器就是联系两者的桥梁。

    关键组件

    Fission 包含 Controller、Router、Executor 三个关键组件:

    1. Controller - 提供了针对 fission 资源的增删改查操作接口,包括 functions、triggers、environments、Kubernetes event watches 等。它是 fission CLI 的主要交互对象。
    2. Router - 函数访问入口,同时也实现了 HTTP 触发器。它负责将用户请求以及各种事件源产生的事件转发至目标函数。
    3. Executor - fission 包含 PoolManager 和 NewDeploy 两类执行器,它们控制着 fission 函数的生命周期。

    fission部署

    helm安装

    1. export FISSION_NAMESPACE="fission"
    2. kubectl create namespace $FISSION_NAMESPACE
    3. kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.17.0"
    4. helm repo add fission-charts https://fission.github.io/fission-charts/
    5. helm repo update
    6. helm install --version v1.17.0 --namespace $FISSION_NAMESPACE fission \
    7. --set serviceType=NodePort,routerServiceType=NodePort \
    8. fission-charts/fission-all
     
    

    kubectl安装

    1. kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.17.0"
    2. export FISSION_NAMESPACE="fission"
    3. kubectl create namespace $FISSION_NAMESPACE
    4. kubectl config set-context --current --namespace=$FISSION_NAMESPACE
    5. kubectl apply -f https://github.com/fission/fission/releases/download/v1.17.0/fission-all-v1.17.0-minikube.yaml

    fission客户端安装

    fission客户端需要考虑不同的环境,本文是MacOs环境,

    Fission CLI Reference | Fission

    1. curl -Lo fission https://github.com/fission/fission/releases/download/v1.17.0/fission-v1.17.0-darwin-amd64 \
    2. && chmod +x fission && sudo mv fission /usr/local/bin/

    部署检测

    1. $ fission check
    2. fission-services
    3. --------------------
    4. √ controller is running fine
    5. √ executor is running fine
    6. √ router is running fine
    7. √ storagesvc is running fine
    8. fission-version
    9. --------------------
    10. √ fission is up-to-date

    举例

    环境

    python

    1. fission environment create --name python --image fission/python-env
    2. fission function create --name hello --env python --code hello.py --executortype poolmgr
    3. fission fn test --name hello

    go

    How to Develop a Serverless Application with Fission (Part 1) | FaaS on Kubernetes

    1. fission env create --name go --image fission/go-env --builder fission/go-builder
    2. fission fn create --name helloworld --env go --src hw.go --entrypoint Handler
    3. fission fn test --name helloworld

    注意:go环境需要指定builder:--builder fission/go-builder

    需要编译代码

    kubectl logs -f查看日志

    参考

    Installing Fission | Fission

  • 相关阅读:
    数据库中常见的六种约束,有一种MySql不支持,你知道是哪个吗?
    SV--类型转换
    进程:execve加载流程
    【数学模拟卷总结】2023李林六套卷数学二第三套
    pytorch 修改tensor数据类型
    高客单价产品做直播难吗?如何呈现高客单价产品的直播场景?
    【头歌C语言程序设计】指针及其应用
    Python采集电商平台数据信息
    Android NDK篇-C++之 SLT 中的容器学习与函数谓词
    apache http服务器学习
  • 原文地址:https://blog.csdn.net/cbmljs/article/details/127808804