快速开始

安装 Refunc

在 Minikube 中部署

为了方便本地测试, Refunc 为 MinikubeDocker for Mac refunc 提供了 play 命令, 用来生成一个本地最小环境的k8s配置文件, 在终端里执行下面的命令:

docker run --rm -it refunc/refunc refunc play gen -n refunc-play | kubectl apply -f -

如果一切顺利的话此时 Refunc 已经在本地的 Kubernetes 里跑起来了:

$ kubectl get deployments,services -n refunc-play
NAME                                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/aws-api-gw        1         1         1            1           30s
deployment.extensions/nats-cluster      1         1         1            1           30s
deployment.extensions/refunc-play       1         1         1            1           30s
deployment.extensions/s3                1         1         1            1           30s

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/aws-api       ClusterIP   10.100.34.197    <none>        80/TCP     30s
service/nats          ClusterIP   10.110.36.186    <none>        4222/TCP   30s
service/refunc-http   ClusterIP   10.102.122.191   <none>        80/TCP     30s
service/s3            ClusterIP   10.110.184.0     <none>        80/TCP     30s

一键删除

docker run --rm -it -e REFUNC_ENV=cluster refunc/refunc \
refunc play gen -n refunc-play | kubectl delete -f -

TIP

Refunc 企业版提供基于 Helm Chart 在线上的集群中部署及多租户管理

添加运行时

这里我们添加 AWS 的 python3.7

kubectl create -n refunc-play -f \
https://github.com/refunc/lambda-python3.7-example/releases/download/v0.0.2/xenv.yaml

TIP

Refunc 支持所有基于 AWS provided 的运行时, 以及一部分AWS官方语言运行时, 具体看这里 此外, 基于 Refunc 用户可以开发更多的运行时支持: runtime

创建云函数

使用 AWS Cli

Refunc 做了一个兼容 AWS Lambda 和 S3 的 网关, 让用户可以使用 aws-cli 无缝使用 Lambda 函数

在此之前需要现将网关的端口转发到本地

kubectl port-forward deployment/aws-api-gw 9000:80 -n refunc-play

为了方便演示, 下载预先打包好的函数 Function

cd /tmp
wget https://github.com/refunc/lambda-python3.7-example/releases/download/v0.0.1/lambda.zip

TIP

函数打包可以参考各种相关文档及使用相关工具

创建 python3.7 的函数

aws --endpoint-url=http://127.0.0.1:9000 \
lambda create-function --function-name localtest \
--handler lambda_function.lambda_handler \
--zip-file fileb:///tmp/lambda.zip \
--runtime python3.7 \
--role arn:aws:iam::XXXXXXXXXXXXX:role/your_lambda_execution_role

调用

aws --endpoint-url=http://127.0.0.1:9000 \
lambda invoke --function-name localtest /tmp/output.json && cat /tmp/output.json

用户界面

在团队内部我们使用 Rancher 二次开发构建了整个中台, 这里 是 Refunc 集成到 rancher/ui 的图形界面, 它用 refunc-rancher 为前端提供兼容 Rancher API 的后端服务

functions.png

上次更新: 2019/2/25 下午4:04:55