CICD Day6、基于kubernetes动态创建代理

news/2025/1/8 10:11:41/文章来源:https://www.cnblogs.com/suyj/p/18658901
  Jenkins支持基于kubernetes动态创建代理,使代理程序能够运行在Pod中,这种方法可以根据构建任务的变化动态的增减代理,充分利用kubernetes的特性,为分布式构建提供灵活的运行环境
  • 如下图所示
    image
    当项目触发构建时,Jenkins会调用kubernetes api创建一个专用的pod作为从节点,在该pod执行一系列构建任务。一旦完成构建流程,该pod就会自动销毁,实现资源的高效利用。具体使用步骤如下:

1、kubernetes插件配置

基于kubernetes动态创建代理功能由kubernetes插件提供,使用之前需要在Jenkins插件管理中安装它
安装完成后,添加kubernetes云:Manage Jenkins》Nodes and Clouds》Clouds》Add a new cloud》kubernetes,配置如下

  • kubernetes地址:指定kubernetes API地址和端口(通常是Master节点IP地址和6443端口),并使用https协议
  • 凭据:选择访问kubernetes APi的凭据。单机Add按钮添加凭据,选择Jenkins,填写以下字段
    • Kind:指定类型,这里选择 Secret file
    • File:选择文件。这里上传kubectl使用的kubeconfig认证文件。为了提高安全性,该kubeconfig认证文件仅需授予管理pod资源的权限
    • Description:凭据描述。这里输入Jenkins-agent-kubeconfig

单击Add按钮添加凭据,然后选择该凭据。可以单击右下方连接测试按钮验证访问kubernetes API是否成功
image

  • Jenkins地址:指定Jenkins访问地址,这里输入http://172.16.99.82:8080/。
    最后点击save保存配置

2、 创建Pipeline类型项目

Pipeline项目类型是由Pipeline插件提供,在使用之前,需要在插件管理中安装它
创建一个名为web-pipeline-demo的项目,并选择Pipeline项目类型,单击ok按钮进行创建并进入项目配置页面,在Pipeline部分定义script脚本,如下图所示
image

  • Pipeline 脚本内容如下
pipeline {agent {kubernetes {yaml '''apiVersion: v1kind: Podmetadata:labels:app: jenkins-slavespec:containers:- name: jnlpimage: uhub.service.ucloud.cn/librarys/jenkins/inbound-agent:latest-jdk21args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']'''}}stages {stage('Build') {steps {echo  'Build...'}}stage('Test') {steps {echo  'Test...'}}stage('Deploy') {steps {echo  'Deploy...'}}}
}

在上述脚本中,agent部分使用了kubernetes指令,表示基于kubernetes动态创建代理,其中yaml块用于定义pod资源配置,包含一个使用uhub.service.ucloud.cn/librarys/jenkins/inbound-agent:latest-jdk21镜像创建的容器,并通过参数和引用变量(JENKINS_SECRET和JENKINS_NAME)将连接Jenkins所需的认证秘钥和代理名称传递给代理程序。但这两个环境变量在Pod中并未被定义,实际上,Jenkins在将Pod配置发送到kubernetes API之前,会自动将以下环境变量添加到容器中

  • JENKINS_URL:Jenkins访问地址
  • JENKINS_SECRET:连接Jenkins的认证秘钥
  • JENKINS_NAME:代理名称
    接着,定义三个阶段,每个阶段中有一个步骤,输出一个字符串

3、验证与测试

执行一次构建以验证Jenkins Pipeline和基于kubernetes动态创建代理功能
项目触发构建后,Jenkins会调用kubernetes API创建一个代理Pod,如下所示
image

image

image

  • Pod名称由项目名称和构建编号等信息组成。一旦构建流程完成,该Pod就会自动销毁。同时,在项目中可以实时查看每个阶段的执行结果和耗时。阶段视图(该功能需要安装Pipeline: Stage View插件)如下图所示

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865770.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

moectf2023 web wp

gas!gas!gas! 直接跑脚本 import requestssession=requests.Session() url="http://127.0.0.1:14447" steering_control=0 throttle=1 for i in range(10):datas={"driver":1,"steering_control":steering_control,"throttle":thro…

【译】GitHub Copilot Free 在 Visual Studio 中

可能您还没有听说过,GitHub 刚刚宣布了 Copilot Free(免费版)!好消息是:您现在已经可以在 Visual Studio 中开始使用 Copilot Free 了。它现在已经可用了,我们将在1月份对更精简的体验进行最后的润色。可能您还没有听说过,GitHub 刚刚宣布了 Copilot Free(免费版)!好…

文档管理工具:物流行业的‘隐形护城河’

在物流行业,效率和成本控制是企业的生命线。无论是运输管理系统、仓储自动化,还是物流管理软件,每一个环节都在为这两大目标服务。然而,在这场“效率与成本”的战争中,有一个关键角色常常被忽略——文档管理工具。 你可能觉得文档管理工具只是一个辅助工具,但事实上,它是…

ABAP 如何得到完整的错误消息(转)

场景描述:BDC或者BAPI返回的系统消息需要组成完整的文本,显示出来供查错误原因.方法一,用message into,语法如下:MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoINTO DATA(mtext)WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4方法二,调用函数 MESSAGE_TEXT_BUILD() 作用…

CDS标准视图:技术对象检验级别描述 I_TechObjInspectionLevelText

视图名称:技术对象检验级别描述 I_TechObjInspectionLevelText 视图类型:基础视图 视图代码:点击查看代码 @AbapCatalog: {sqlViewName: ITECHOBJINSPLVLT,compiler.compareFilter: true,preserveKey: true }@AccessControl.authorizationCheck: #NOT_REQUIRED@EndUserText.…

面向强化学习的状态空间建模:RSSM的介绍和PyTorch实现

循环状态空间模型(Recurrent State Space Models, RSSM)最初由 Danijar Hafer 等人在论文《Learning Latent Dynamics for Planning from Pixels》中提出。该模型在现代基于模型的强化学习(Model-Based Reinforcement Learning, MBRL)中发挥着关键作用,其主要目标是构建可…

从接单到反馈:看板软件打造家政服务闭环管理

家政行业通过应用看板软件可以更加高效、有序地管理日常工作,优化工作流程,提高团队协作效率和服务质量。根据《2024年中国家政服务行业发展状况及消费洞察报告》,2023年中国家政服务市场规模达11641亿元,仍呈增长趋势;预计到2026年,中国家政服务行业的市场规模将突破130…

国产化板卡设计资料:2270-VC709E 基于FMC接口的JFM7VX690T36 PCIeX8 接口卡

VC709E 基于FMC接口的JFM7VX690T36 PCIeX8 接口卡 一、板卡概述 本板卡基于FPGA JFM7VX690T36 芯片,支持PCIeX8、两组 64bit DDR3容量8GByte,HPC的FMC连接器,板卡支持各种FMC子卡扩展。软件支持windows,Linux操作系统。二、功能和技术指标 : 四、应用领域软件无线电处理平…

SAP SE37函数模块异常抛出

今天写了一个功能,生产订单批量打删除标识,我用一个函数来封装相应的功能,并且使用一下RAISE异常的功能 在函数里面判断用户是否在ALV界面选中了数据,如果没有选中则抛出异常 打断点发现,RAISE异常之后代码会中断执行,退出相应的函数模块。是非常好用的代码。函数部分调用…

网站管理助手无法创建数据库及连接问题的解决方案

问题描述: 用户在使用网站管理助手创建数据库时遇到困难,不仅无法创建新的数据库,而且已创建的数据库也无法正常连接。这种情况严重影响了用户的数据库管理效率和网站的正常运行。 解决方案:确认工具与环境兼容性: 首先,确保使用的网站管理助手版本与当前的操作系统和数据…

如何解决无法登录云服务器的问题

问题描述: 我无法登录我的云服务器,输入正确的账户密码后仍然无法成功登录。请问如何解决这个问题? 回答: 当您无法登录云服务器时,可能是由于多种原因引起的。以下是一些详细的排查和解决方案:检查远程服务状态:重启远程服务:首先,尝试重启服务器的远程服务(如SSH或…

请问如何处理网站频繁被篡改的问题

问题描述: 用户报告其网站频繁被篡改,首页文件不断被修改,甚至文件名也会被更改。尽管采取了多种防护措施,问题仍然频繁发生。用户希望了解如何彻底解决网站被篡改的问题,确保网站安全稳定运行。 解决方案:确认木马病毒和漏洞: 确认网站是否存在木马病毒或程序漏洞。可以…