https://opensource.com/article/18/11/open-source-serverless-platforms
最近,serverless一词在越来越多的对话中出现。让我们先弄明白这个概念以及与之相关的一些东西,例如无服务器计算和无服务器平台。
Serverless经常被当做FAAS(函数既服务)。serverless不是说没有服务器。事实上,服务器有很多,甚至性能还很强劲,这是为公共云提供商提供了部署、运行和管理应用程序的服务器。
Serverless computing是一个新兴的技术,改变了开发人员构建和交付软件的方式。它将基础设施和代码分离来简化开发过程,降低成本并提升效率。我相信,Serverless computing和FaaS将在帮助定义企业IT的下一个时代、云本地服务和混合云方面发挥重要作用。
Serverless平台提供api,允许用户运行代码函数(也称为操作)并返回每个函数的结果。无服务器平台还提供HTTPS终端,允许开发人员检索函数结果。这些终端可以用作其他函数的输入,从而提供相关函数的触发事件(或链接)。
在大多数serverless平台上,用户在执行函数之前部署(或创建)函数。serverless平台拥有所有必要的代码,以便在需要的时候执行这些函数。serverless函数的执行可以由用户通过命令手动调用,也可以由事件源触发,该事件源配置为在响应cron作业告警、文件上传或其他事件时激活函数。
Kubernetes是管理serverless和微服务的最流行的平台,它使用细粒度的部署模型来更快更轻松地处理工作负载。使用Knative 服务,您可以在Kubernetes上构建和部署无服务器的应用程序和函数,并使用Istio扩展和支持高级场景,例如:
Knative 元件焦距在解決如何更好的在本地云上构建、运行应用程序上。例如将运行行服务绑定到事件生态系统上、在部署期间的路由和流量管理、按需自动扩展及调整工作负载的大小。Istio是一个开放的平台,能有效连接并保护微服务,并且设计考虑多个角色交互的框架,包括开发商、运营商和平台提供商。
例如,您可以使用Knative服务在本地Minishift平台上部署一个JavaScript无服务器负载,代码片段如下:
## Dockerfile
FROM bucharestgold/centos7-s2i-nodejs:10.x
WORKDIR /opt/app-root/src
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080 3000
CMD ["npm", "start"]
## package.json
{
"name": "greeter",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "~4.16.0"
}
}
## app.js
var express = require("express");
var app = express();
var msg = (process.env.MESSAGE_PREFIX || "") + "NodeJs::Knative on OpenShift";
app.get("/", function(req, res, next) {
res.status(200).send(msg);
});
app.listen(8080, function() {
console.log("App started in port 8080");
});
## service.yaml
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: greeter
spec:
configuration:
revisionTemplate:
spec:
container:
image: dev.local/greeter:0.0.1-SNAPSHOT
在本地Kubernetes平台构建你的Node.js serverless应用程序并部署服务前需要提前在安装Knative、Istio、Knative组件。
1.使用以下命令连接到Docker守护进程:
(minishift docker-env
)&& eval
(minishift oc-env
)
2.使用Jib命令构建一个serverless应用程序容器映像:
./mvnw -DskipTests clean compile jib:dockerBuild
3. 把serverless服务如Minishift部署到您的Kubernetes集群:
kubectl apply -f service.yaml
上面的示例展示了在何处以及如何开始使用本地云平台(如Kubernetes、Knative service和Istio)开发无服务器应用程序。
/article/18/11/open-source-serverless-platforms