jenkins+k8s

编程入门 行业动态 更新时间:2024-10-05 13:18:58

<a href=https://www.elefans.com/category/jswz/34/1770690.html style=jenkins+k8s"/>

jenkins+k8s

说明

该文章是使用Jenkins的Kubernetes插件对现有的k8s集群进行编排

前期准备

  • k8s集群环境
  • Jenkins服务

Jenkins安装插件并进行配置

1: 安装 Kubernetes 插件
系统管理 -> 插件管理 -> 可选插件 搜索 kubernetes
插件相关信息:

2:添加k8s凭证
系统管理 -> Mange Credentials

添加凭证:需要pfx证书,也就是 k8s-master 节点上的\root\.kube\config文件里面的内容
生成pfx证书步骤:

  • 把config文件内的key为:certificate-authority-data内容拷贝的certificate-authority-data文件然后生成ca.crt文件

    cat certificate-authority-data | base64 -d > ca.crt
    
  • 把config文件内的key为:client-certificate-data 内容拷贝的client-certificate-data 文件然后生成client.crt文件

    cat client-certificate-data | base64 -d > client.crt
  • 把config文件内的key为:client-key-data 内容拷贝的client-key-data 文件然后生成client.key文件

    cat client-certificate-data | base64 -d > client.crt
  • 生成pfx证书 [需要输入密码]

    openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt
  • Jenkins添加该凭证

3:配置 Clouds
系统管理 -> 节点管理 -> Configure Clouds

添加完内容可以测试是否连接成功

4:模板配置

  • pod配置

  • 相关容器配置 这里使用他们的配置也可以,我觉得添麻烦直接把yaml文件的内容粘贴进去了,效果一样

这里是使用的自己做的镜像也可以使用官网提供的镜像详见:

apiVersion: v1
kind: Pod
spec:containers:- name: jnlpworkingDir: C:\\Users\\docker\\Documents\\workspace\\build-v2\\common\\hr_sysdiag-app-50image: 192.168.3.227:8090/win_build/hr_agent_build:v1nodeSelector:kubernetes.io/os: windowshostAliases:- ip: "192.168.1.52"hostnames:- "dev.huorong"dnsPolicy: NonednsConfig:nameservers: [ "114.114.114.114" ]searches:- default.svc.cluster.local- svc.cluster.local- cluster.localoptions:- name: ndotsvalue: "5" 

5:测试

创建流水线任务

pipeline{agent{node {label 'build-tool'}}stages{stage('Deploy to Kubernetes'){steps{script{powershell 'ping www.baidu'}}}}
}

window编译模板相关配置

模板名称:window-build-pod
命名空间: default  #也可以用其他的命名空间
标签列表:window-build-pod #最好跟模板名称一直, pod为特殊字符,因为编译那边的groovy代码中是根据这个pod判断是否把项目拷贝到容器中

yaml 内容配置

apiVersion: v1
kind: Pod
spec:containers:- name: jnlpimage: 192.168.3.227:8090/win_build/hr-jenkins-agent:basevolumeMounts:- mountPath: C:\dataname: build-volumenodeSelector:kubernetes.io/os: windowsvolumes:- name: build-volumehostPath:path: C:\datatype: DirectoryhostAliases:- ip: "192.168.1.52"hostnames:- "dev.huorong"- ip: "192.168.1.200"hostnames:- "pub.huorong"- "git.huorong"- ip: "192.168.1.71"hostnames:- "gitlab.huorong"dnsPolicy: NonednsConfig:nameservers: [ "114.114.114.114" ]searches:- default.svc.cluster.local- svc.cluster.local- cluster.localoptions:- name: ndotsvalue: "5"

相关说明:

containers:容器的相关配置name: jnlp #必须使用 “jnlp” 使用该名称是要覆盖原有的配置image:192.168.3.227:8090/win_build/hr-jenkins-agent:base  #该镜像是自己根据window的jnlp镜像做的一个适合自己业务的镜像内部有vs2019编译工具volumeMounts:#挂载相关配置  主要是把宿主机上的app源码映射到容器中,方便把代码拷贝到代理的目录中- name: build-volumehostPath:path: C:\datatype: Directory

相关问题处理

问题描述:当启动的pod的下拉git代码并更新相关子模块时老是卡住,当时jnlp镜像里面的git版本是2.26,是git版本比较低导致的。
解决方式有两种:
1:换一个jnlp高版本的镜像

2:配置Jenkins全局git工具

注:需要安装git client 插件 ,然后再全局工具配置上配置git 工具
压缩包的地址:.38.0.windows.1/MinGit-2.38.0-64-bit.zip 可以使用github上的发布版,也可以把zip文件放到自己的服务器,使用github的话不稳定

git将安装在tools\git\mingw64中的每个代理上 git可执行文件的路径是tools\git\mingw64\bin\git.exe

参考文档: /

3: GITSCM配置

注: GITSCM的gitTool一定要配置,与上一步的git可执行文件的路径一致:tools\git\mingw64\bin\git.exe

pipeline{agent{node {label 'w-build-pod'}}parameters {string(name: 'GIT_REPO', trim: true)}stages{stage('Deploy to Kubernetes'){steps{script{dir(GIT_REPO){// 代理中含有 pod 则说明该代理是从k8s中进行编排运行的,需要把对应的项目从挂载盘中copy到代理的工作目录中def projectName = GIT_REPObat "xcopy C:\\data\\$projectName\\*  .\\ /Y /E /H "//tool.checkout(config['git'], params.GIT_BRANCH_OR_TAG, params.GIT_CREDENTIALS)checkout (changelog:true,scm: [$class: 'GitSCM',branches: [[name: "rc5.0.71.0"]],doGenerateSubmoduleConfigurations: false,extensions: [[$class: 'SubmoduleOption',disableSubmodules: false,recursiveSubmodules: true,trackingSubmodules: false,reference: '',timeout: 10,parentCredentials: true]],userRemoteConfigs: [[credentialsId: "compiler",url: "git@gitlab.huorong:hr50/hr_sysdiag-app-50.git"]],gitTool: "tools\\git\\mingw64\\bin\\git.exe"])}}}}//检测当前git提交版本是否编译过,编译过就不重复编译stage('CheckTag') {steps {script {echo "checkout 完成"//powershell 'sleep 99999'}}}}
}

更多推荐

jenkins+k8s

本文发布于:2024-02-28 09:29:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768841.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:jenkins   k8s

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!