前言
在 jenkins 的根底上,设计 CICD 流程。具体流程如下:
- 拉取代码
- 代码扫描
- 构建镜像并推送到仓库
- 部署到 k8s
- 音讯告诉
一、流程阐明
1.1 环境阐明
两套 k8s 环境,分为开发测试环境(dev)和生产环境(pro),同时,镜像仓库也分为两套。两套环境都能连贯上 git 和 jenkins。
注:dev 和 pro 需在物理上进行隔离。
1.2 流程
需创立两条流水线:
dev 流水线:研发编码实现后,将代码提交到仓库,触发构建流程,先进行代码扫描,再生成镜像并推送到 dev 仓库,主动部署到开发测试环境。
所有功能测试验证通过后。
pro 流水线:运维手动触发流水线,将 dev 仓库的镜像推送到 pro 仓库,部署到线上环境。
注:上线前需思考预公布,比方蓝绿部署,金丝雀部署等,后续再进行欠缺。
二、代码构造
创立一个新工程,以单体 flask 利用为例,须要蕴含以下文件。
├── Dockerfile # 镜像构建文件
├── deploy
│ ├── dev # dev 环境部署文件
│ └── pro # pro 环境部署文件
└── tests
三、jenkins 配置
3.1 装置
通过 docker 装置,将数据目录挂载到本地门路。
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/opt/jenkins_data \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
3.2 装置 plugins
进入【系统管理】-【插件治理】,装置以下组件。
docker-build-step
SonarQube Scanner for Jenkins
Kubernetes Continuous Deploy Plugin
3.3 配置凭据
3.3.1 github
进入【凭据】-【零碎】-【全局凭据】,点击【增加凭据】,抉择类型【Username with password】。
注:以后采纳账号密码的模式,倡议采纳 token 的形式来配置 github 的凭据。
3.3.2 harbor
3.3.3 sonarqube
生成 sonarqube 的 token。
增加【secret text】凭据。
3.3.4 k8s
3.3.5 音讯推送
四、流水线
4.1 dev 流水线
dev 流水线的流程如下:代码拉取 - 代码扫描 - 镜像构建及推送 - 部署
登录 jenkins,【新建工作】,抉择【构建一个自在格调的软件我的项目】。
4.1.1 代码拉取
点击【源码治理】,抉择 git,填入仓库地址,抉择 GitHub 的凭证。默认分支为 master,批改为以后开发的分支。
4.2 pro 流水线
镜像降级 - 部署
五、FAQ
1.