Mac OS 部署 OpenFaas

Serverless 是近年来比较火的云计算技术;而 Faas(函数即服务)作为 Serverless 中的主流技术之一,基本上呈必然发展趋势。平时开发 Faas 应用我们一般使用阿里云、腾讯云等云服务商提供的云技术产品。本着开源万岁(穷B烧不起钱)的理念,我在 Mac 上部署了开源框架 OpenFaas 作为开发环境,下面是一些笔记。

Serverless 基本概念入门

安装 Docker

Mac 安装 Docker 比较简单,直接去官网下载 dmg 包,拖出来安装即可。

Docker Desktop

安装完成后双击打开,发现 Docker 服务已经跑起来了,但是 Kubernets 服务还没有安装。

设置硬件配置,建议将内存设置为大于 4GB。

设置硬件

设置镜像源加速下载:

1
2
3
4
5
6
7
8
9
10
11
{
"debug": true,
"experimental": false,
"registry-mirrors": [
"https://reg-mirror.qiniu.com",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}

设置镜像源

注意:不要在此处一键安装 Kubernets,会因为缺少依赖跑不起来,后面我们单独安装。

安装 Kubernets

这里我们使用阿里云的脚本一键安装 Kubernets。

k8s-for-docker-desktop

需要在 Docker-Desktop 中查看 Kubernets 的版本,我这里是 v1.19.3

查看 Kubernets 版本

然后将分支切换到对应的版本,下载脚本并执行如下命令。

1
2
3
cd k8s-for-docker-desktop  # 进入脚本目录
chmod +x ./load_images.sh # 赋予权限
./load_images.sh # 执行安装脚本

稍等片刻后安装完成。此时我们在 Docker-Desktop 中设置【开启 Kubernets】,重启 Docker 即可。

开启 Kubernets

重启 Docker

安装 OpenFaas

执行以下命令安装 OpenFaas:

命名空间

1
2
3
git clone https://github.com/openfaas/faas-netes  # 克隆源码
cd faas-netes # 进入目录
kubectl apply -f namespaces.yml # 应用命名空间

设置账号

将以下脚本保存为 pwd.sh 文件并执行,设置用户名和密码。

1
2
3
kubectl -n openfaas create secret generic basic-auth \
--from-literal=basic-auth-user=admin \ # 用户名 admin
--from-literal=basic-auth-password=admin # 密码 admin
1
2
chmod +x ./pws.sh  # 赋予权限
./pwd.sh # 执行安装脚本

部署应用

1
2
3
4
kubectl apply -f ./yaml  #部署应用
kubectl get pods -n openfaas #查看应用运行状态

# 当应用全部启动(Running)时表示安装成功

此时浏览器访问 http://127.0.0.1:31112 输入用户名密码,即可进入 Web GUI。可在该页面部署函数,系统也自带了一些实例函数。

Web GUI

安装 OpenFaas-CLI

在实际开发中使用 GUI 并不是很方便,接下来我们安装 CLI,以命令行的形式部署函数。

Mac 中可以使用 brew 一键安装 openfaas-cli:

1
brew install openfass-cli  # 使用 brew 安装

也可以使用在线脚本安装:

1
curl -sSL https://cli.openfaas.com | sudo sh  # 使用在线脚本安装

测试一下是否安装成功:

1
fass-cli help # 打印帮助文档

示例

接下来部署一个名为 hello 的 Node.js 函数作为示例。

首先先我们去 Docker Hub 注册一个账号。

创建函数

1
faas-cli new hello --lang node12 -p zhaoo  # 创建函数

--lang node12 表示使用 Node v12,可以使用 faas-cli template store list 打印所有语言模板。
-p 表示命名前缀,使用刚才创建的 Docker Hub 的用户名即可。

构建函数

函数安装生成环境的依赖并打包构建。

1
faas-cli build -f hello.yml  # 构建函数

推送函数

将构建好的函数推送到 Docker Hub 仓库。

1
faas-cli push -f hello.yml  # 推送函数

推送完成后可在 Docker Hub 仓库 中查看。

部署函数

Docker Hub 仓库中拉取函数源码并部署到生产环境,这里的环境就是本地。

1
faas-cli deploy  # 部署函数

部署完成后可以通过 Web GUI 查看到我们部署的函数,点击 INVOKE 按钮可调用函数。

查看评论