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

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数