在Kubernets上部署RAP2(使用Helm)

在Kubernets上部署RAP2(使用Helm)

需要找一个合适的API设计工具,考察了YAPI,RAP2,还有不成系统的RAML,暂定RAP2。

前端:https://github.com/thx/rap2-dolores
后端:https://github.com/thx/rap2-delos
在线Demo:http://rap2.taobao.org/
DockerHub:https://hub.docker.com/r/rapteam/rap2-delos

RAP2,官方是推荐用docker-compose安装的,安装也很方便,但是要利用现有的基础设置,
需要琢磨一下如何在Kubernetes上部署,总体还算简单,步骤如下。

安装前提:

 - 已部署Kubernetes环境 
 - 已在Kubernetes设置好默认的StorageClass
 - Node机器上可以正常使用kubectl

1. download 现有compose文件

#wget https://raw.githubusercontent.com/thx/rap2-delos/master/docker-compose.yml

2.download kompose

Kompose是Docker Compose到容器编排器(如Kubernetes(或OpenShift))的转换工具。
https://kompose.io/

#curl -L https://github.com/kubernetes/kompose/releases/download/v1.24.0/kompose-linux-amd64 -o kompose
#chmod u+x kompose
#mv kompose /usr/local/bin

3.将compose文件转为helm chart(在compose目录下)

重要的一部,将compose文件转成Helm chart(也可直接转为k8s文件)

#kompose convert --chart

默认生成的目录是docker-compose,为好辩识改名为rap2-helm

#mv docker-compose rap2-helm

4.删除错误设置(直接改compose文件也可)

似乎官方好久没有维护了,compose文件中存在问题,导致生成的k8s文件也有问题,需要如下修改:

#vim mysql-deployment.yaml

删除如下的MYSQL_USER的环境变量设置

40             - name: MYSQL_USER
41               value: root

5.增加mysql和redis的服务(要通过服务名访问)

根据现有dolores-service.yaml文件对应复制,修改即可(服务名和端口)
mysql的端口:3306
redis的端口:6379

如mysql-service.yaml ,redis的内容一样,只需要修改服务名为redis,端口为6379即可。

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert --chart
    kompose.version: 1.24.0 (4a2a0458)
  creationTimestamp: null
  labels:
    io.kompose.service: mysql
  name: mysql
spec:
  ports:
    - name: "3306"
      port: 3306
      targetPort: 3306
  selector:
    io.kompose.service: mysql
status:
  loadBalancer: {}

最后做成的有如下文件:

  • delos-service.yaml
  • delos-deployment.yaml
  • dolores-service.yaml
  • dolores-deployment.yaml
  • redis-deployment.yaml
  • redis-service.yaml (新做)
  • mysql-claim0-persistentvolumeclaim.yaml
  • mysql-deployment.yaml (需要修改)
  • mysql-service.yaml (新做)

6. 执行安装

在rap2-helm的同层目录执行(本地chart)

#helm  install my-rap2 rap2-helm
#helm ls

如果以上yaml修改的不对,修改可以重新upgrade,可执行多次

#helm upgrade my-rap2 rap2-helm

安装完成后,可以看到service和pod状况。如果没有修改上述的mysql设置,则mysql的pod不能运行成功。
在这里插入图片描述
在这里插入图片描述

7.DB初始化

原有的docker-compose模式中,需要执行DB初始化。是通过如下docker-compose excute命令执行的:

docker-compose exec delos node scripts/init

改成Kubernets后,需要手工连接到delos的pod下执行。可在K8S上进入delos pod的终端,或者通过kubectl连接到pod。
在/app目录下执行,原有初始化命令:

#node scripts/init

如果一切正常,可以看到数据被成功初始化。

8. 改为NodePort端口访问

在原有docker-compose模式下,直接装在宿主机上,端口是可以直接访问的,换成k8s,默认是ClusterIP形式。
为了使用方便,将访问方式从ClusterIP改为NodePort。当然也可以使用ingress做导出。
修改delos-service.yaml和dolores-service.yaml文件,

9. 在Node节点上做端口映射

因为rap2的镜像内部似乎是硬编码了delos的38080端口,无法修改。
而kubernetes上用nodeport只能映射最大32627的端口,所以只能在Node节点上做手工端口映射。
如节点ip是172.28.74.31
后端delos的Nodeport端口为:32720,执行以下命令做本地端口映射(Linux)

#ssh -gqTfnNL 38080:172.28.74.31:32720 localhost

10. 访问

dolores的Nodeport端口为:30263,浏览器访问如下URL即可。
http://172.28.74.31:30263/

终于可以访问了。
在这里插入图片描述
最后,修改后的helm chart打包如下,可以直接使用,一键安装。
https://download.csdn.net/download/ydogg/85966850

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值