【云原生】kubevela如何集成低代码平台

发布于:2023-01-02 ⋅ 阅读:(152) ⋅ 点赞:(0)


在前面的文章中,我们分享了很多关于Odoo的内容。kubevela作为云原生中的一员大将,也能够与Odoo相结合。

本期我们来看看如何将Odoo应用作为addon插件集成到kubevela中吧!

前期准备工作

fluxcd addon

这里使用了Helm插件用来安装postgresql数据库,所以需要先启动fluxcd插件,使kubevela支持Helm。

图片

webservice2 component

这里处于需求限制,需要控制odoo应用暴露的端口固定到具体的端口上,所以为了满足要求,这里在官方的webservice component definition的基础上单独创建了一个component definition :

webservice2

webservice2.yaml

这里简单描述一下更改的位置:

首先在参数配置中的ports参数位置新增了一个nodePort参数,用来设置具体暴露的nodePort端口。

图片

其次在具体的service生成部分,将这里的nodePort加入到具体的暴露的参数exposePorts,并在生成的service中进行使用。

图片

更改完毕后,在kubevela的部署服务器上创建对应的webservice2.cue对应文件,并将代码粘入。

最后通过命令vela def apply webservice2.cue将这个component definition加入到kubevela中,之后也可以在页面中看到。

图片

调整odoo镜像

为了能够一键启动odoo!这里需要将postgresql数据库中的地址提前写入odoo镜像中。

因为使用的postgresql服务,并且service的名称也为postgresql,所以提前将odoo中配置的数据库地址选项设置为postgresql。

如果你的集群没有配置Storage Class

如果集群中没有配置storage class,那么在使用helm部署postgresql时,对应的statefuleset中创建的pv则无法创建,会处于pedding的状态。

所以如果集群中没有创建storage class,则需要先创建。

这里推荐:nfs+storage class

<script data-domain="xcmaterial.digitalchina.com" src="/web/static/src/js/plausible.js"></script>

PS:如果你的k8s集群的版本大于1.20,那么需要开启selfLink功能:

vim /etc/kubernetes/manifests/

kube-apiserver.yaml

在yaml文件中添加如下这行

图片

等待pod重启可以通过kubectl get po kube-apiserver-master -n kube-system 命令查看状态。

#添加helm仓库

helm repo add kubesphere https://charts.kubesphere.io/main

#安装 nfs provisioner

<script data-domain="xcmaterial.digitalchina.com" src="/web/static/src/js/plausible.js"></script>

编写Odoo addon

这里使用helm+webservice2,如果不用限制odoo暴露的端口,可以将代码中的webservice2替换为webservice,并将nodePort参数删除。

template.yaml

template文件中为addon启动时创建的application;

这里一共包含2个component:1个workflow,1个policy和1个triat;

component分别为helm类型webservice2类型。

使用helm来通过bitnami网站安装postgresql数据库,通过webservice2来创建odoo应用的deployment和service。

图片

注:

  • url为bitnami的 helm charts地址;

  • chart参数为要安装的具体chart;

  • version参数为安装的chart的版本;

  • values.auth.posrgrePassword参数为postgre用户的mima;

  • values.auth.username参数为创建的用户名;

  • values.auth.password参数为创建的用户的密码;

  • values.primary.service.type参数为postgresql应用启动完毕之后service的提供的类型。

图片

注:

  • cpu参数为该组件使用的cpu资源大小;

  • exposType为向外暴露的方式,这里选择使用NodePort;

  • image选择为更改好后的odoo镜像;

  • memory则为分配给该组件的内存大小;

  • 这里ports参数中选在暴露8069端口即odoo服务端口将协议类型选择为TCP类型并通过nodePort参数配置向外暴露的端口;

  • 其中traits参数则是配置了运维特征,这里选择使用scaler特折弹性的扩缩容。

图片

在policy中使用topology策略,将webservice2组件部署在对应的集群的对应命名空间中。

这里选在使用postgresql的数据部署的命名空间,

然后在工作流中使用刚刚定义的policy即可:

template.yaml

metadate.yaml

metadata文件主要为该addon的详细信息,以及对应的版本描述和依赖。

这里最好将metadata.yaml中的name也就是addon name和addon代码所在文件夹名称一致。

否则如果你的addon代码通过github等方式引入kubevela中,在启用时会报addon不存在的错误。

metadata.yaml

readme.md

read文件主要用来在页面中显示addon时作为详细信息展示,这里不做详细描述。

readme.md

本期内容就到这里啦,欢迎大家动手尝试!

版权声明:该内容由神州数码云基地团队编撰,转载请注明出处!
微信公众号后台回复“云原生”,可加入技术交流群!