目录
在前面的文章中,我们分享了很多关于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
本期内容就到这里啦,欢迎大家动手尝试!
版权声明:该内容由神州数码云基地团队编撰,转载请注明出处!
微信公众号后台回复“云原生”,可加入技术交流群!