cicd 03--构建通用scale流程

2024-05-30 23:48
文章标签 通用 流程 构建 03 scale cicd

本文主要是介绍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 基本配置

  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
    
  2. 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 注意事项

  1. 当前使用jenkins无法对用户进行细微的权限设置,如果想对用户做进一步的权限控制,例如A用户只能操作ns1的服务,那么可以考虑在jenkins的执行流程中调用专用的操作 api,通过 api调用kubectl,然后在api层面对应用户进行权限检查即可。
  2. 参数联动时候,参数名称首字母需要是大写的,否则在grovy脚本中无法识别,导致参数联动时效。

4 说明

软件环境:
jenkins 版本:2.299
参考文档:
jenkins 官方文档

这篇关于cicd 03--构建通用scale流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017096

相关文章

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.