《OpenFaaS梳理》系列是最近在做的一个项目需要用到openfaas,该项目基本的实现是通过利用openfaas将Python基础镜像结合用户自定义的Python脚本,并通过发布服务和调度任务等方式,实现将一个个机器学习任务隔离在不同的容器服务中执行,实现现场人员机器学习任务的利用。本系列从最基础的部署开始,希望通过对之前开发中的细节和实现的回顾,浅入深逐渐熟悉OpenFaaS的高级功能,并将整个研发的思路过程做一次回顾。
环境信息
整个实战系列用到的OpenFaaS都是部署在Kubernetes环境下,因此请小伙伴自行提前准备好Kubernetes环境;
我这里由于是开发环境,因此并未部署Kubernetes集群,而是在单机上部署的Kubernetes;
下面给出整个系列涉及到的环境和软件的版本信息,仅供参考:
接下来下载faas-netes的源码,使用其中的kubernetes资源配置文件进行部署;
1. 安装git命令
yum install -y git
2. 下载源码
git clone https://github.com/openfaas/faas-netes
3. 进入下载的文件夹
cd faas-netes
4. 创建namespace
[root@localhost openfaas]# kubectl apply -f namespaces.yml
namespace/openfaas created
namespace/openfaas-fn created
5. 设置登录web控制台的账号和密码,设置账号密码
[root@localhost openfaas]# kubectl -n openfaas create secret generic basic-auth \
> --from-literal=basic-auth-user=admin \
> --from-literal=basic-auth-password=openfaas
secret/basic-auth created
6. 部署
[root@localhost openfaas]# kubectl apply -f ./yaml
configmap/alertmanager-config created
deployment.apps/alertmanager created
service/alertmanager created
deployment.apps/basic-auth-plugin created
service/basic-auth-plugin created
deployment.apps/cron-connector created
serviceaccount/openfaas-controller created
role.rbac.authorization.k8s.io/openfaas-controller created
role.rbac.authorization.k8s.io/openfaas-profiles created
rolebinding.rbac.authorization.k8s.io/openfaas-controller created
rolebinding.rbac.authorization.k8s.io/openfaas-profiles created
deployment.apps/gateway created
service/gateway-external created
service/gateway created
namespace/openfaas unchanged
namespace/openfaas-fn unchanged
deployment.apps/nats created
service/nats created
customresourcedefinition.apiextensions.k8s.io/profiles.openfaas.com created
configmap/prometheus-config created
deployment.apps/prometheus created
serviceaccount/openfaas-prometheus created
role.rbac.authorization.k8s.io/openfaas-prometheus created
role.rbac.authorization.k8s.io/openfaas-prometheus-fn created
rolebinding.rbac.authorization.k8s.io/openfaas-prometheus created
rolebinding.rbac.authorization.k8s.io/openfaas-prometheus-fn created
service/prometheus created
deployment.apps/queue-worker created
7. 等待镜像下载、pod创建、启动等操作完成:
[root@localhost ~]# kubectl get pod -n openfaas
NAME READY STATUS RESTARTS AGE
alertmanager-c7d4dd89b-gr6sf 1/1 Running 1 62m
basic-auth-plugin-86d54f7c5f-rcht6 1/1 Running 1 62m
cron-connector-b747cb4b9-g6lrs 1/1 Running 1 53m
gateway-557854c544-swfb8 2/2 Running 4 62m
nats-76844df8b4-ts5zd 1/1 Running 1 62m
prometheus-5498dc8757-gvfch 1/1 Running 1 62m
queue-worker-5bb684c788-jcslt 1/1 Running 2 62m
至此,部署完成,接下来验证环境是否可用 。
1. 当前K8S宿主机IP地址是192.168.79.139,因此浏览器访问192.168.79.139:31112,如下图,会弹出账号密码输入窗口,账号admin,密码是openfaas:
2. 登录成功:
我们可以通过命令行工具远程访问openfaas,其安装也简单:
生产环境中一般需要将faas-cli安装到应用服务器上,开发环境也需要,我本地将其安装到了windowds下。
1. Linux下安装
curl -sL https://cli.openfaas.com | sh
echo export OPENFAAS_URL=192.168.79.131:31112 >> ~/.bashrc
source ~/.bashrc
faas-cli login -u admin -p openfaas
2.windows下安装
faas-cli
将安装路径添加到环境变量path中
将OPENFAAS_URL写入环境变量中
验证faas-cli是否可执行
xudb@LAPTOP-VKV71JIE MINGW64 /e/xuexi/works/openfaas/bin
$ faas-cli
___ _____ ____
/ _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___|
| | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \
| |_| | |_) | __/ | | | _| (_| | (_| |___) |
\___/| .__/ \___|_| |_|_| \__,_|\__,_|____/
|_|
Manage your OpenFaaS functions from the command line
Usage:
faas-cli [flags]
faas-cli [command]
Available Commands:
auth Obtain a token for your OpenFaaS gateway
build Builds OpenFaaS function containers
cloud OpenFaaS Cloud commands
completion Generates shell auto completion
deploy Deploy OpenFaaS functions
describe Describe an OpenFaaS function
generate Generate Kubernetes CRD YAML file
help Help about any command
invoke Invoke an OpenFaaS function
list List OpenFaaS functions
login Log in to OpenFaaS gateway
logout Log out from OpenFaaS gateway
logs Fetch logs for a functions
namespaces List OpenFaaS namespaces
new Create a new template in the current folder with the name given as name
publish Builds and pushes multi-arch OpenFaaS container images
push Push OpenFaaS functions to remote registry (Docker Hub)
registry-login Generate and save the registry authentication file
remove Remove deployed OpenFaaS functions
secret OpenFaaS secret commands
store OpenFaaS store commands
template OpenFaaS template store and pull commands
up Builds, pushes and deploys OpenFaaS function containers
version Display the clients version information
Flags:
--filter string Wildcard to match with function names in YAML file
-h, --help help for faas-cli
--regex string Regex to match with function names in YAML file
-f, --yaml string Path to YAML file describing function(s)
Use "faas-cli [command] --help" for more information about a command.
然后再bash下用账号密码登录:
$ faas-cli login -u admin -p openfaas
WARNING! Using --password is insecure, consider using: cat ~/faas_pass.txt | faas-cli login -u user --password-stdin
Calling the OpenFaaS server to validate the credentials...
WARNING! You are not using an encrypted connection to the gateway, consider using HTTPS.
credentials saved for admin http://192.168.79.139:31112
登录成功,可以执行客户端命令了,list命令的结果如下
$ faas-cli list
Function Invocations Replicas
至此,openfaas的安装部署和客户端的安装介绍完毕。