k8s架构下jenkins主从架构详细设置教程

种地  金牌会员 | 2024-8-30 06:44:40 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 554|帖子 554|积分 1662

在Kubernetes(k8s)架构下设置Jenkins主从架构涉及到多个步骤,包罗安装Jenkins Master,设置持久化存储,创建Jenkins Slave,以及设置Kubernetes插件等。以下是一个详细的设置教程:
第一步:安装Jenkins Master


  • 创建命名空间
    1. kubectl create namespace jenkins
    复制代码
  • 创建PersistentVolume和PersistentVolumeClaim
    为了使Jenkins的数据持久化,必要创建一个PV和PVC。这里以NFS为例创建PV和PVC。
    1. # jenkins-pv.yaml
    2. apiVersion: v1
    3. kind: PersistentVolume
    4. metadata:
    5.   name: jenkins-pv
    6. spec:
    7.   capacity:
    8.     storage: 10Gi
    9.   accessModes:
    10.     - ReadWriteMany
    11.   persistentVolumeReclaimPolicy: Retain
    12.   nfs:
    13.     path: /path/to/nfs/export
    14.     server: nfs-server-ip
    15. ---
    16. # jenkins-pvc.yaml
    17. apiVersion: v1
    18. kind: PersistentVolumeClaim
    19. metadata:
    20.   name: jenkins-pvc
    21.   namespace: jenkins
    22. spec:
    23.   accessModes:
    24.     - ReadWriteMany
    25.   resources:
    26.     requests:
    27.       storage: 10Gi
    复制代码
    应用YAML文件:
    1. kubectl apply -f jenkins-pv.yaml
    2. kubectl apply -f jenkins-pvc.yaml
    复制代码
  • 创建ServiceAccount和ClusterRoleBinding
    为了使Jenkins能够与Kubernetes集群交互,必要创建一个ServiceAccount并绑定相应的脚色。
    1. # jenkins-service-account.yaml
    2. apiVersion: v1
    3. kind: ServiceAccount
    4. metadata:
    5.   name: jenkins
    6.   namespace: jenkins
    7. ---
    8. apiVersion: rbac.authorization.k8s.io/v1
    9. kind: ClusterRoleBinding
    10. metadata:
    11.   name: jenkins-admin
    12. subjects:
    13. - kind: ServiceAccount
    14.   name: jenkins
    15.   namespace: jenkins
    16. roleRef:
    17.   kind: ClusterRole
    18.   name: cluster-admin
    19.   apiGroup: rbac.authorization.k8s.io
    复制代码
    应用YAML文件:
    1. kubectl apply -f jenkins-service-account.yaml
    复制代码
  • 摆设Jenkins Master
    利用Jenkins的官方Docker镜像摆设Jenkins Master。
    1. # jenkins-deployment.yaml
    2. apiVersion: apps/v1
    3. kind: Deployment
    4. metadata:
    5.   name: jenkins
    6.   namespace: jenkins
    7. spec:
    8.   replicas: 1
    9.   selector:
    10.     matchLabels:
    11.       app: jenkins
    12.   template:
    13.     metadata:
    14.       labels:
    15.         app: jenkins
    16.     spec:
    17.       serviceAccountName: jenkins
    18.       containers:
    19.       - name: jenkins
    20.         image: jenkins/jenkins:lts
    21.         ports:
    22.         - containerPort: 8080
    23.         - containerPort: 50000
    24.         volumeMounts:
    25.         - mountPath: /var/jenkins_home
    26.           name: jenkins-home
    27.       volumes:
    28.       - name: jenkins-home
    29.         persistentVolumeClaim:
    30.           claimName: jenkins-pvc
    复制代码
    应用YAML文件:
    1. kubectl apply -f jenkins-deployment.yaml
    复制代码
  • 袒露Jenkins Master服务
    创建一个Service来袒露Jenkins Master的端口。
    1. # jenkins-service.yaml
    2. apiVersion: v1
    3. kind: Service
    4. metadata:
    5.   name: jenkins
    6.   namespace: jenkins
    7. spec:
    8.   selector:
    9.     app: jenkins
    10.   ports:
    11.   - port: 8080
    12.     targetPort: 8080
    复制代码
    应用YAML文件:
    1. kubectl apply -f jenkins-service.yaml
    复制代码
第二步:设置Jenkins Master


  • 获取Jenkins初始暗码
    1. kubectl exec -it $(kubectl get pod -n jenkins -l app=jenkins -o jsonpath='{.items[0].metadata.name}') -n jenkins cat /var/jenkins_home/secrets/initialAdminPassword
    复制代码
  • 访问Jenkins Web界面
    利用NodePort服务访问Jenkins Web界面,暗码是在上一步中获取的。
  • 安装插件
    根据必要安装Jenkins插件,例如Kubernetes插件。
第三步:设置Jenkins Slave


  • 创建Jenkins Slave的Pod模板
    在Jenkins中创建一个新的Pod模板,用于运行构建任务。
  • 设置Kubernetes插件
    在Jenkins中设置Kubernetes插件,指定Jenkins Master与Kubernetes集群的连接信息。
  • 创建Jenkins Slave Pod
    利用Kubernetes插件创建一个新的Pod作为Jenkins Slave。
第四步:测试Jenkins主从架构


  • 创建一个简单的Pipeline项目
    在Jenkins中创建一个新的Pipeline项目,用于测试主从架构是否工作正常。
  • 编写Jenkinsfile
    编写一个简单的Jenkinsfile,定义构建流程。
  • 运行Pipeline
    运行Pipeline,检查Jenkins Master是否成功触发了Jenkins Slave上的构建任务。
以上步骤提供了一个基本的Jenkins主从架构在Kubernetes上的设置流程。根据实际需求,可能还必要举行额外的设置和优化。
Pipeline和Jenkinsfile设置案例一
Jenkins的主从架构配合Pipeline功能可以实现自动化的一连集成和一连摆设(CI/CD)。以下是一个设置案例,包罗Pipeline的设置和Jenkinsfile的编写,用于实现Java Maven项目的自动化构建和摆设。
1. 环境准备

确保Jenkins Master和Slave节点已经正确设置,并且可以正常通讯。Jenkins Master必要安装必要的插件,例如Pipeline、Maven Integration和SSH Agent Plugin。
2. 创建Pipeline作业

在Jenkins Master上,创建一个新的Pipeline作业。选择“流水线”范例,并为作业命名。
3. 设置源代码管理

在作业设置中,设置源代码管理(SCM),例如Git。提供仓库的URL和认证信息,以便Jenkins可以拉取代码。
4. 编写Jenkinsfile

在项目的根目录下创建一个Jenkinsfile,这将定义整个Pipeline的步骤。以下是一个简单的Jenkinsfile示例,它包含三个阶段:构建、测试和摆设。
  1. pipeline {
  2.     agent any // 任何可用的节点都可以执行Pipeline
  3.     stages {
  4.         stage('Checkout') {
  5.             steps {
  6.                 checkout scm
  7.             }
  8.         }
  9.         
  10.         stage('Build') {
  11.             steps {
  12.                 script {
  13.                     // 定义环境变量,确保Maven可以使用指定的JDK
  14.                     env.JAVA_HOME = '/path/to/jdk'
  15.                     
  16.                     // 调用Maven构建项目
  17.                     sh "mvn clean package -DskipTests"
  18.                 }
  19.             }
  20.         }
  21.         
  22.         stage('Deploy') {
  23.             steps {
  24.                 script {
  25.                     // 部署应用到服务器,这里使用SSH Agent Plugin
  26.                     sshagent(credentials: ['ssh-credential-id']) {
  27.                         // 执行SSH命令或者SCP命令部署应用
  28.                         sh "ssh user@server 'deploy-command'"
  29.                     }
  30.                 }
  31.             }
  32.         }
  33.     }
  34. }
复制代码
5. 设置Pipeline参数

在Jenkins作业设置中,可以选择“流水线”部门,并从SCM中获取Jenkinsfile。确保Jenkinsfile中定义的参数与作业设置中的参数相匹配。
6. 运行Pipeline

保存设置并运行Pipeline。Jenkins将自动拉取代码,执行构建和摆设步骤。
7. 监控和调试

通过Jenkins的Web界面监控Pipeline的执行情况。如果构建或摆设失败,可以检察控制台输出来诊断题目。
8. 自动化触发

为了实现自动化的CI/CD,可以在Jenkins中设置触发器,例如GitLab或GitHub的Webhook,以便在代码提交时自动触发Pipeline。
留意事项



  • 确保Jenkins Slave节点上安装了全部必要的工具和环境,例如Maven、JDK和SSH Agent。
  • 在Jenkinsfile中利用的环境变量和参数应该在Jenkins作业设置中定义或通过参数通报。
  • 为了安全起见,敏感信息(如SSH密钥和暗码)应该作为根据存储在Jenkins中,并在Jenkinsfile中通过凭证ID引用。
  • 根据项目的具体需求,Jenkinsfile中的Pipeline步骤可能必要进一步定制和优化。
通过上述案例,可以实现一个基本的Jenkins主从架构下的Pipeline和Jenkinsfile设置,用于自动化构建和摆设Java Maven项目。
Pipeline和Jenkinsfile设置案例二
Jenkins 是一个流行的一连集成和一连交付工具,支持主从架构和 Pipeline。主从架构可以进步 Jenkins 的性能和可伸缩性,Pipeline 则可以帮助实现复杂的构建和摆设流程。下面是一个基本的 Jenkins 主从架构 Pipeline 和 Jenkinsfile 设置案例:
Jenkins 主从架构设置


  • 安装 Jenkins

    • 在主服务器上安装 Jenkins。您可以从 Jenkins 官网下载最新版本的 Jenkins,并按照官方文档举行安装。

  • 设置主从节点

    • 在 Jenkins 主控制台中,导航到“系统管理” > “管理节点”。
    • 添加从节点:单击“新建节点”,填写节点名称和形貌,并选择“永世代”作为节点范例。填写从节点的主机名或 IP 地址。
    • 保存并应用更改。

  • 设置节点身份验证

    • 在主节点控制台中,导航到“系统管理” > “节点管理” > “设置节点”。
    • 选择从节点,点击“高级”。
    • 在“节点属性”部门,选择“利用者根据”的自定义,填写从节点的用户名和暗码。
    • 保存设置。

  • 安装插件

    • 在 Jenkins 控制台中,导航到“系统管理” > “插件管理” > “可选插件”。
    • 安装 Pipeline 插件和其他您必要的插件。

  • 设置 Jenkinsfile 存储库

    • 在您的源代码存储库中创建一个名为 Jenkinsfile 的文件,用于定义 Pipeline 的构建流程。

Jenkinsfile 设置案例

假设您的项目利用 Maven 举行构建和摆设,以下是一个简单的 Jenkinsfile 设置示例:
  1. pipeline {
  2.     agent {
  3.         label 'slave'
  4.     }
  5.     stages {
  6.         stage('Checkout') {
  7.             steps {
  8.                 git branch: 'main', credentialsId: 'your-git-credentials', url: 'https://github.com/your/repo.git'
  9.             }
  10.         }
  11.         stage('Build') {
  12.             steps {
  13.                 sh 'mvn clean package'
  14.             }
  15.         }
  16.         stage('Deploy') {
  17.             steps {
  18.                 sh 'mvn deploy'
  19.             }
  20.         }
  21.         stage('Cleanup') {
  22.             steps {
  23.                 sh 'mvn clean'
  24.             }
  25.         }
  26.     }
  27.     post {
  28.         success {
  29.             echo 'Pipeline executed successfully!'
  30.         }
  31.         failure {
  32.             echo 'Pipeline execution failed!'
  33.         }
  34.         always {
  35.             echo 'Cleaning up...'
  36.         }
  37.     }
  38. }
复制代码
解释说明:


  • agent 部门指定了 Pipeline 执行的署理节点,这里利用标签为 “slave” 的从节点。
  • stages 部门定义了构建流程的各个阶段,如检出代码、构建、摆设和清理。
  • 每个阶段中的 steps 定义了具体的操作步骤,比如利用 Git 检出代码,运行 Maven 命令举行构建和摆设。
  • post 部门定义了 Pipeline 执行完成后的后置操作,包罗成功、失败和总是执行的操作。
请根据您的项目需求和实际情况举行适当的调整和修改。完成设置后,您可以在 Jenkins 中创建一个新的 Pipeline 项目,并关联到您的代码仓库和 Jenkinsfile,然后触发构建执行。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表