通过阿里云云效(git+流水线)+k8s+kuboard实现git提交后自动部署前端(vue),后端(java)项目,解放双手。

当前实现条件(非绝对):|
1、git仓库使用的阿里云云效,阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

2、使用阿里云云效流水线,阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

3、服务器端安装K8s+kuboard控制工具

一、kuboard上建命名空间然后创建工作负载。

1.1、以java为例,创建页面选择部署,填写工作负载名称。

1.2、切换到容器信息位置点击“添加工作容器”,填写名称、容器镜像(建议使用阿里云个人镜像仓库,本例以阿里云个人镜像仓库为主。),如果镜像不是公开的要注意后面的镜像密码填写!!!

1.3、存储挂载(根据实际使用情况选择是否需要挂载,挂载后数据永久存储,不挂载则容器重启后丢失)

1.4、高级设置根据项目情况一般不设置,服务/应用路由可以设置应用对外暴露的端口,勾选“服务”,服务类型选择“NodePort”,然后点击“添加端口”,左边是应用本身端口,中间是对外暴露端口,右边的是应用内部使用的端口,一般左右两个都设置成应用或者代码本身要使用的端口即可。

1.5、设置完成点击左上角的保存,保存时会一次检查每项是否创建成功,创建完成即可。

1.6、拷贝镜像地址和CI/CD内容备用。

二、配置流水线

2.1、进入云效管理界面上进度到代码管理,然后点击左侧的菜单里“流水线”,然后点击右上角的“新建流水线”。

2.2、选择空模板,然后点击“基本信息”填写流水线名称

2.3、切换到“流程设置”,添加流水线源,选择代码源,注意选择对的分支!然后点击添加。

2.4、点击空任务,填写任务名称,点击任务步骤模块的“添加步骤”,然后选择构建-java构建

注意选择jdk版本及maven版本,构建命令根据实际情况增减。

2.5、继续点击“添加步骤”,继续选择构建-镜像构建并推送至阿里云镜像仓库个人版。

选择服务链接或者创建一个服务连接(前提是您得开通阿里云镜像仓库个人版),然后选择对应的地域,仓库名称(不包含版本号)需要和Kuboard里的容器的镜像地址保持一致。点击直接输入即可进行粘贴复制。标签即镜像的版本号(${BUILD_NUMBER}是流水线的构建编号,每次构建累加,${DATETIME}是构建时间),完整的镜像地址=仓库名:标签

打包镜像肯定少不了Dockerfile文件,填写时注意路径不要搞错了!

2.6、点击右边的新的任务,选择执行命令-执行命令。

2.7、切换到kuboard管理界面上,点击CI/CD,然后选择或者创建AccessKey,分别复制下面两段代码到流水线执行命令的窗口里,然后将“yourNewVersion”改成前面5里构建的标签内容,变量需要用单引号包裹(如果标签里填了1.${BUILD_NUMBER},那么这里的yourNewVersion替换成 1.'${BUILD_NUMBER}'

以上即完成了构建,然后点击右上角的“保存并运行”,等待构建完成后机会推送到kuboard上实现自动部署。

三、构建Vue项目流水线

构建vue项目大致相同,在第二步选择Node.js构建,然后选择node版本,执行npm install和打包命令npm run build,后面也是构建镜像推送阿里云镜像仓库个人版(如上面的2.5)。

PS:Vue项目的Dockerfile文件里一定要安装Nigix,下面分享一个Vue的Dockerfile仅供参考。

FROM xxx/nginx2work:1.23.3 (选择合适的nigix镜像地址)
LABEL email="346614975@qq.com"
WORKDIR /www
VOLUME /tmp
ENV LANG en_US.UTF-8
RUN echo "\
server {\
    listen       80;\
    server_name  localhost;\
    proxy_set_header X-Real-IP \$remote_addr;\
    proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \
    client_max_body_size 1024m;\
    client_body_buffer_size 256k;\
    client_header_timeout 180s;\
    client_body_timeout 180s;\
    location /api/ { \
          proxy_pass              http://xxxx/api/; \(接口地址)
          proxy_redirect          off; \
          proxy_set_header        Host xxx.xxx.xxx.xxx; \
          proxy_set_header        X-Real-IP \$remote_addr; \
          proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for; \
    } \
    location / {\
        root   /www;\
        index  index.html index.htm;\
        if (!-e \$request_filename) { \
            rewrite ^(.*)$ /index.html?s=\$1 last; \
            break; \
        } \
    }\
}" > /etc/nginx/conf.d/default.conf && mkdir -p /www

ADD ./dist/ /www/

RUN chmod 777 -R /www

EXPOSE 80
EXPOSE 443

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐