Direktiv是一个事件驱动的容器编排引擎,在Kubernetes和Knative 上面运行,支持用简单的语言和图形描述你的业务逻辑、插件和微服务,有丰富的插件系统。
direktiv将容器作为工作流的一部分运行,在工作流状态之间传递JSON结构化数据。JSON结构化数据通过 8080 端口上的HTTP协议传递给容器。direktiv使用原始状态声明规范来描述YAML中的编排流程,可以使用工作流构建器UI来构建工作流。direktiv使用 jq JSON处理器,通过 states 实现复杂的控制流逻辑和数据操作工作流可以是基于事件的触发器(KnativeEventing 和 CloudEvents)、处理周期性任务的cron调度,或者用API编写的脚本。集成到 Prometheus(指标)、FluentBit(日志)和 OpenTelemetry(检测和跟踪)里边。Kubernetes安装参考以下代码创建命名空间、创建并运行第一个工作流
$curl-XPUT"https://localhost:8080/api/namespaces/demo"{"namespace":{"createdAt":"2021-10-06T00:03:22.444884147Z","updatedAt":"2021-10-06T00:03:22.444884447Z","name":"demo","oid":""}}$cat>helloworld.yml<<-EOFstates:-id:hellotype:nooptransform:msg:"Hello,jq(.name)!"EOF$curl-vv-XPUT--data-binary"@helloworld.yml""https://localhost:8080/api/namespaces/demo/tree/helloworld?op=create-workflow"{"namespace":"demo","node":{...},"revision":{...}}$cat>input.json<<-EOF{"name":"Alan"}EOF$curl-vv-XPOST--data-binary"@input.json""https://localhost:8080/api/namespaces/demo/tree/helloworld?op=wait"{"msg":"Hello,Alan!"}运行容器工作流以vorteil/request容器为例,容器在8080端口上启动HTTP监听器,接受包含HTTP(S)请求的所有参数的JSON对象作为输入,并将结果返回到同一监听器上的工作流。参考代码:
$cat>bitcoin.yaml<<-EOFfunctions:-type:reusableid:get-requestimage:vorteil/request:lateststates:-id:get-bitcointype:actionlog:jq(.)action:function:get-requestinput:method:"GET"url:"https://blockchain.info/ticker"retries:max_attempts:3delay:PT30Smultiplier:2.0codes:[".*"]transform:"jq({value:.return.body.USD.last})"transition:print-bitcoin-id:print-bitcointype:nooplog:"BTCvalue:jq(.value)"EOF$curl-vv-XPUT--data-binary"@bitcoin.yaml""https://localhost:8080/api/namespaces/demo/tree/get-bitcoin?op=create-workflow"{"namespace":"demo","node":{...},"revision":{...}}$curl-XPOST"https://localhost:8080/api/namespaces/demo/tree/get-bitcoin?op=wait"{"value":62988.71}工作流状态/日志UI展示
评论