一,前言

上一篇,介绍了 k8s 污点和容忍度;

在了解前面 k8s 介绍之后,设计并完成一个前后端项目的部署和持续集成;

本篇,介绍基于 k8s 项目部署流程设计;

二,项目部署流程设计

  • 本地 IDE 进行代码开发,完成并提交到代码仓库(使用 gitee);
  • 代码提交后,触发 jenkins 构建任务,拉取代码到 ci-server 服务器,开启构建流程;
  • 构建流程:1,拉取最新代码 2,安装依赖 3,打包构建 4,创建 docker 镜像 5,将构件推送至私有仓库;
  • CI 过程可以执行单元测试,代码校验,质量检测,端到端测试等操作
  • k8s 拉取镜像完成部署更新;

部署顺序:

  • 配置并部署 mysql 数据库
  • 部署后端服务
  • 部署前端服务

备注:考虑到服务器成本,前端、后端和数据库全都部署在 k8s-node 上,和集群部署的是操作一致的;

三,部署操作梳理

部署MySQL

  • 可以为指定 node 添加污点,专门用于 mysql 部署(当前只有一个节点,不考虑);
  • 为了保证mysql容器重启时数据不会丢失:创建 mysql 数据目录,用于存储 mysql 数据,实现 MySQL 数据的持久化;
  • 创建 Secret 对象,向为 mysql 容器提供用户名、密码信息;
  • 创建 mysql Deployment 配置文件,并创建 deploy 完成 pod 部署;
  • 创建 mysql Service 配置文件,并创建 service 解决 ip 漂移问题,对外提供 pod 访问;
  • 为 k8s-master 安装 mysql,使 k8s-master 能够使用 mysql 命令,测试数据库使用;

部署后端项目(nodejs)

  • 创建后端项目,配置 dockerfile,上传代码到远程仓库;
  • 在 jenkins 创建并配置后端部署任务(配置 git 仓库地址、git 公钥私钥、构建环境、部署脚本);
  • 构建脚本:设置 npm 源,构建镜像,推送到镜像仓库;
  • 为后端项目配置数据库连接信息 configMap、数据库账号 Secret、docker 私有库认证 secret;
  • jenkins 配置凭据并绑定环境变量,提供 jenkins 环境变量登录 docker 私有仓库;

部署前端项目

  • 与前端项目相似

四,结尾

本篇,介绍了项目部署流程和操作梳理了;

下一篇,部署 mysql 服务;