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