serverless实战
本文介绍如何使用k3s来部署kubeless
有好几种部署模式 (non-rbac, rbac and openshift)
- kubeless-$RELEASE.yaml 是 RBAC Kubernetes 集群.
- kubeless-non-rbac-$RELEASE.yaml 是 non-RBAC Kubernetes 集群.
- kubeless-openshift-$RELEASE.yaml 是 OpenShift (1.5+).
下面是采用rbac方式来部署的
首先会找到最新的kubeless的版本,设置成变量RELEASE
其次闯将一个命名空间叫kubeless
然后把kubeless部署到同名的命名空间
$ export RELEASE=$(curl -s https://api.github.com/repos/kubeless/kubeless/releases/latest | grep tag_name | cut -d '"' -f 4)
$ kubectl create ns kubeless
$ kubectl create -f https://github.com/kubeless/kubeless/releases/download/$RELEASE/kubeless-$RELEASE.yaml
$ kubectl get pods -n kubeless
NAME READY STATUS RESTARTS AGE
kubeless-controller-manager-567dcb6c48-ssx8x 1/1 Running 0 1h
$ kubectl get deployment -n kubeless
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubeless-controller-manager 1 1 1 1 1h
$ kubectl get customresourcedefinition
NAME AGE
cronjobtriggers.kubeless.io 1h
functions.kubeless.io 1h
httptriggers.kubeless.io 1h
接下来,我们安装kubeless命令行工具
kubeless命令行工具用来部署函数,调用函数
linux和mac
export OS=$(uname -s| tr '[:upper:]' '[:lower:]')
curl -OL https://github.com/kubeless/kubeless/releases/download/$RELEASE/kubeless_$OS-amd64.zip && \
unzip kubeless_$OS-amd64.zip && \
sudo mv bundles/kubeless_$OS-amd64/kubeless /usr/local/bin/
接下来我们部署一个java函数
package io.kubeless;
import io.kubeless.Event;
import io.kubeless.Context;
public class Foo {
public String foo(io.kubeless.Event event, io.kubeless.Context context) {
return "Hello world!";
}
}
保存为Foo.java
部署这个函数,首次部署时间比较长
下面这个命令的意思是我们部署了一个叫get-java的函数
运行时是java1.8,处理器是Foo.foo,来自java文件
kubeless function deploy get-java --runtime java1.8 --handler Foo.foo --from-file Foo.java
查看部署进度,可以使用下面的命令
kubeless function ls get-java
调用这个函数
kubeless function call get-java
输出
hello world
删除这个函数可以使用下面的命令
kubeless function delete get-java
创建http trigger
kubeless trigger http create get-java --function-name get-java --path get-java --hostname fn.taihu.org --gateway traefik
然后我们可以通过浏览器来访问
http://fn.taihu.org/get-java
网友评论