Rancher + Jenkins k8s集群 CI/CD全流程最佳实践
CI方面,官方推荐的视频教程等多是使用极狐Gitlab CI,但社区版极狐每月仅400分钟构造时间,额外购买价格为1000分钟/68元,而私有化部署极狐Gitlab对比部署使用Jenkins,具有更高的成本、更狭窄的适用面,且如果个人使用其代码仓库功能,并不比Gitee可靠。
Gitee 同样提供CI服务,但相比极狐Gitlab更加抠门,只对新用户提供200分钟的构建时长。
CD方面,官方推荐使用内置的Fleet,但其模型和文档比较晦涩,而直接使用Jenkins脚本调取Rancher Server的API更为方便,故采取的解决方案为后者。
基于以下流程的结果,相信你将不难实现一个初步的Git Ops工作流。
需要:
- Jenkins(仅测试过非docker部署版本)
- Rancher2.7.3、非local的自定义RKE(k8s)集群
- 阿里云私有镜像仓库(服务器与仓库在同一地域时可以用内网连接,即vpc.cn-前缀的链接)
Jenkins
- 安装Jenkins
- 安装jdk
- 安装maven
- 将jenkins加入系统docker权限组
新建任务
流水线一般配置项:
Gitee仓库设置
Gitee WebHook 密码
点击生成,复制字串到仓库管理,并设置如下:
流水线脚本
pipeline {
agent any
tools {
// Install the Maven version configured as "M3" and add it to the path.
maven "maven3.8.4"
}
stages {
stage('git update') {
steps {
// 需要提前在Jenkins->manage credentials建立名称为gitee-copytool的凭据
git credentialsId: 'gitee-copytool', url: 'https://gitee.com/XXXXXXX/xxxxxxxx.git'
}
}
stage('maven install') {
steps {
sh 'mvn clean install'
}
}
stage('Docker Build') {
steps {
sh 'docker build -t registry-vpc.cn-xxxxxxx.aliyuncs.com/xxxxxx/xxxxxxx_repo:xxxxxx-backend-vX.1.0 .'
}
}
stage('Docker Push') {
steps {
// 需要提前在Jenkins->manage credentials建立名称为aliyun-image-repo的凭据
withCredentials([usernamePassword(credentialsId: 'aliyun-image-repo', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh "docker login --username $USERNAME --password $PASSWORD registry-vpc.cn-xxxxxxx.aliyuncs.com"
sh "docker push registry-vpc.cn-xxxxxxx.aliyuncs.com/xxxxxxx/repo_xxxxxxx:xxxxxxxx-backend-vX.1.0"
}
}
}
stage('Rancher Deploy') {
steps {
sh '''curl -u "token-gxxxxq:kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc" \\
-X POST \\
-H \'Accept: application/json\' \\
-H \'Content-Type: application/json\' \\
\'https://xxx.xxx.xx/v3/project/c-862b2:p-xfnmp/workloads/deployment:default:xxxxxxxx?action=redeploy\''''
}
}
}
}
其中:
Jenkins - maven
maven “maven3.8.4”
与Jenkins设置保持一致
另外jdk设置如下
其余保持默认
Rancher API
权限获取
token-g9gdq:klk8dnzc47rwmqz4hl89xvf2hhp75vcp45m7hwcgnqk876nk5ptrtc
API地址
查找最终结果地址:
https://xxx.xxxx.xx/v3/project/c-862b2:p-xfnmp/workloads/deployment:default:xxxxx?action=redeploy
curl指令:
curl -u "${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}" \ # 替换为权限获取到的key,即:token-gxxxq:kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
'https://xxx.xxxx.xx/v3/project/c-862b2:p-xfnmp/workloads/deployment:default:xxxxxxx?action=redeploy'
通过Jenkins pipeline脚本生成器生成
API查找过程
文章来源:https://www.toymoban.com/news/detail-445662.html
即为查找的API地址和curl命令,贴入权限的key-value即可。
文章来源地址https://www.toymoban.com/news/detail-445662.html
到了这里,关于Rancher2.7 + Jenkins CI/CD全流程保姆级最佳实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!