本文主要是介绍cicd 03--构建通用scale流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
cicd 03--构建通用scale流程
- 1 介绍
- 2 cicd构建过程
- 2.1 基本配置
- 2.2 测试结果
- 3 注意事项
- 4 说明
1 介绍
在实际项目中, 如果没有专用的变更系统,那么可以使用jenkins来快速实现各类基础流程,而且能够达到操作溯源的效果。本文基于jenkins做了一个简单的k8s服务scale流程,用于用户scale服务,同时达到操作溯源的目的。
2 cicd构建过程
2.1 基本配置
-
参数
Cluster 参数:名称: Cluster 类型: Choice Parameter 数值: cloudsim data-pipeline dtp-quarantine
namespace 参数:
名称: namespace 类型: Active Choices Reactive Parameter Groovy Script:if( Cluster == "cloudsim" ){return ['sre-test', 'pi-prod', 'pi-dev', 'simulation-prod', 'simulation-dev' ] }else if ( Cluster == "data-pipeline" ){return ['sre-test', 'pi-prod', 'pi-dev', 'debezium-prod'] }else if ( Cluster == "dtp-quarantine" ){return ['sre-test', 'quarantine'] }else{ return[] }Choice Type: Single Select Referenced parameters: Cluster
deployment参数:
名称: deployment 类型: String Parameter 默认值: busybox
replicas 参数:
名称: replicas 类型: String Parameter 默认值: 1
-
jenkinsfile
实际中需要更改yourPath 为正确的用户目录,.kube下的文件最好为 config-${Cluster} 的形式, 节点标签 SRE_NODE 按需更改即可。k8s_cluster = "${params.Cluster}" namespace = "${params.namespace}" deployment = "${params.deployment}" replicas = "${params.replicas}" println("${k8s_cluster} namespace/deployment=${namespace}/${deployment} replicas=${replicas}")default_description = "${k8s_cluster} ${namespace}/${deployment} ${replicas}" currentBuild.description = "${default_description}"pipeline {agent anystages {stage('check deploy') {agent { node { label 'SRE_NODE' } }steps {echo 'Hello, check deployment ${namespace}/${deployment} exists'sh "/usr/bin/kubectl --kubeconfig /home/yourPath/.kube/config-${k8s_cluster} -n ${namespace} get deploy ${deployment}"}}stage("scale deploy"){agent { node { label 'SRE_NODE' } }steps {echo 'Hello, scale deployment ${namespace}/${deployment} exists'sh "/usr/bin/kubectl --kubeconfig /home/yourPath/.kube/config-${k8s_cluster} -n ${namespace} scale deployment ${deployment} --replicas=${replicas}"}} }post {always {echo 'I have finished'}success {echo "scale , succeed!"sh """curl -X POST -H "Content-Type: application/json" -d '{"msg_type":"text","content":{"text":"deploy_kubectl_scale notify: scale ${k8s_cluster} ${namespace}/${deployment} replicas=${replicas}, succeed!"}}' https://open.feishu.cn/open-apis/bot/v2/hook/6c**c8"""}failure {echo "scale , failed!"sh """curl -X POST -H "Content-Type: application/json" -d '{"msg_type":"text","content":{"text":"deploy_kubectl_scale notify: scale ${k8s_cluster} ${namespace}/${deployment} replicas=${replicas}, failed!"}}' https://open.feishu.cn/open-apis/bot/v2/hook/6c**c8"""}} }
2.2 测试结果
输入界面:
执行结果:
3 注意事项
- 当前使用jenkins无法对用户进行细微的权限设置,如果想对用户做进一步的权限控制,例如A用户只能操作ns1的服务,那么可以考虑在jenkins的执行流程中调用专用的操作 api,通过 api调用kubectl,然后在api层面对应用户进行权限检查即可。
- 参数联动时候,参数名称首字母需要是大写的,否则在grovy脚本中无法识别,导致参数联动时效。
4 说明
软件环境:
jenkins 版本:2.299
参考文档:
jenkins 官方文档
这篇关于cicd 03--构建通用scale流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!