种地 发表于 2024-8-30 06:44:40

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

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


[*] 创建命名空间:
kubectl create namespace jenkins

[*] 创建PersistentVolume和PersistentVolumeClaim:
为了使Jenkins的数据持久化,必要创建一个PV和PVC。这里以NFS为例创建PV和PVC。
# jenkins-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
spec:
capacity:
    storage: 10Gi
accessModes:
    - ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
    path: /path/to/nfs/export
    server: nfs-server-ip
---
# jenkins-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
namespace: jenkins
spec:
accessModes:
    - ReadWriteMany
resources:
    requests:
      storage: 10Gi
应用YAML文件:
kubectl apply -f jenkins-pv.yaml
kubectl apply -f jenkins-pvc.yaml

[*] 创建ServiceAccount和ClusterRoleBinding:
为了使Jenkins能够与Kubernetes集群交互,必要创建一个ServiceAccount并绑定相应的脚色。
# jenkins-service-account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins
namespace: jenkins
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: jenkins-admin
subjects:
- kind: ServiceAccount
name: jenkins
namespace: jenkins
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
应用YAML文件:
kubectl apply -f jenkins-service-account.yaml

[*] 摆设Jenkins Master:
利用Jenkins的官方Docker镜像摆设Jenkins Master。
# jenkins-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: jenkins
spec:
replicas: 1
selector:
    matchLabels:
      app: jenkins
template:
    metadata:
      labels:
      app: jenkins
    spec:
      serviceAccountName: jenkins
      containers:
      - name: jenkins
      image: jenkins/jenkins:lts
      ports:
      - containerPort: 8080
      - containerPort: 50000
      volumeMounts:
      - mountPath: /var/jenkins_home
          name: jenkins-home
      volumes:
      - name: jenkins-home
      persistentVolumeClaim:
          claimName: jenkins-pvc
应用YAML文件:
kubectl apply -f jenkins-deployment.yaml

[*] 袒露Jenkins Master服务:
创建一个Service来袒露Jenkins Master的端口。
# jenkins-service.yaml
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: jenkins
spec:
selector:
    app: jenkins
ports:
- port: 8080
    targetPort: 8080
应用YAML文件:
kubectl apply -f jenkins-service.yaml

第二步:设置Jenkins Master


[*] 获取Jenkins初始暗码:
kubectl exec -it $(kubectl get pod -n jenkins -l app=jenkins -o jsonpath='{.items.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示例,它包含三个阶段:构建、测试和摆设。
pipeline {
    agent any // 任何可用的节点都可以执行Pipeline

    stages {
      stage('Checkout') {
            steps {
                checkout scm
            }
      }
      
      stage('Build') {
            steps {
                script {
                  // 定义环境变量,确保Maven可以使用指定的JDK
                  env.JAVA_HOME = '/path/to/jdk'
                  
                  // 调用Maven构建项目
                  sh "mvn clean package -DskipTests"
                }
            }
      }
      
      stage('Deploy') {
            steps {
                script {
                  // 部署应用到服务器,这里使用SSH Agent Plugin
                  sshagent(credentials: ['ssh-credential-id']) {
                        // 执行SSH命令或者SCP命令部署应用
                        sh "ssh user@server 'deploy-command'"
                  }
                }
            }
      }
    }
}
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 设置示例:
pipeline {
    agent {
      label 'slave'
    }

    stages {
      stage('Checkout') {
            steps {
                git branch: 'main', credentialsId: 'your-git-credentials', url: 'https://github.com/your/repo.git'
            }
      }

      stage('Build') {
            steps {
                sh 'mvn clean package'
            }
      }

      stage('Deploy') {
            steps {
                sh 'mvn deploy'
            }
      }

      stage('Cleanup') {
            steps {
                sh 'mvn clean'
            }
      }
    }

    post {
      success {
            echo 'Pipeline executed successfully!'
      }

      failure {
            echo 'Pipeline execution failed!'
      }

      always {
            echo 'Cleaning up...'
      }
    }
}
解释说明:


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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: k8s架构下jenkins主从架构详细设置教程