首页 > 其他分享 >在K8S中,Jenkins如何集成K8S集群?

在K8S中,Jenkins如何集成K8S集群?

时间:2024-08-13 21:20:11浏览次数:11  
标签:Kubernetes 部署 集群 jenkins Helm Jenkins K8S

在Kubernetes (K8s) 中集成Jenkins是一个常见场景,尤其是在持续集成/持续部署 (CI/CD) 流程中。以下是详细的步骤和说明,介绍如何在Kubernetes集群中部署和配置Jenkins。

1. 准备 Kubernetes 集群

确保你有一个运行良好的Kubernetes集群,并且你有权限在这个集群上执行操作。如果你还没有集群,可以使用像Minikube这样的工具来创建一个本地集群进行测试。

2. 部署 Jenkins

部署Jenkins可以通过多种方式完成,最常见的是使用Helm Chart或者编写自定义的YAML文件。这里我们将使用Helm Chart的方式进行部署。

2.1 安装 Helm

如果还没有安装Helm,你需要先安装它。Helm 是一个用于Kubernetes的包管理工具,可以简化应用程序的部署过程。

2.2 添加 Jenkins Helm Repository

使用以下命令添加 Jenkins Helm Repository:

helm repo add jenkinsci https://charts.jenkins.io
helm repo update
2.3 配置 Jenkins Helm Chart

根据你的需求,你可以通过修改 values.yaml 文件来自定义Jenkins的部署。例如,你可以指定Jenkins的持久化存储、插件安装等配置。

2.4 安装 Jenkins

使用以下命令安装 Jenkins:

helm install my-jenkins jenkinsci/jenkins

这将会在你的Kubernetes集群中部署Jenkins。

3. 配置 Jenkins

一旦Jenkins部署完成,你需要配置它以适应你的环境。

3.1 获取初始管理员密码

Jenkins首次部署时,会生成一个初始管理员密码。你可以使用以下命令来获取这个密码:

kubectl get secret --namespace default my-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode ; echo
3.2 登录 Jenkins

打开浏览器,访问Jenkins的URL。这个URL通常是通过Service的NodePort或LoadBalancer IP暴露出来的。例如,如果你使用的是NodePort类型的Service,URL可能是 <NodeIP>:<NodePort>

3.3 安装插件

在首次启动Jenkins时,你需要选择要安装的插件。你可以选择安装常用的插件,例如 GitHub PluginGit PluginKubernetes Plugin 等。

3.4 创建管理员账户

设置好密码后,创建一个新的管理员账户。

4. 配置 Jenkins 与 Kubernetes 的集成

为了使Jenkins能够与Kubernetes集群交互,你需要配置Jenkins的Kubernetes Cloud。

4.1 配置 Kubernetes Cloud

登录Jenkins,进入“Manage Jenkins” -> “Manage Nodes and Clouds” -> “Configure Clouds”,然后添加一个新的Kubernetes Cloud配置。

  • Cloud Name: 输入一个名称,比如 my-k8s-cloud
  • Plugin: 选择 Kubernetes Plugin
  • Server URL: 输入Kubernetes API Server的URL。
  • Credentials ID: 选择之前创建的Kubernetes服务账户的凭证ID。你需要创建一个服务账户,并将其证书导入到Jenkins中。
  • Namespace: 指定Jenkins在哪个命名空间中运行其Pod。
4.2 创建服务账户

在Kubernetes集群中创建一个服务账户,用于Jenkins与Kubernetes的通信。例如:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-sa
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins-sa
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
- kind: ServiceAccount
  name: jenkins-sa
  namespace: default

使用 kubectl apply -f <filename>.yaml 命令来应用这些配置。

4.3 导入服务账户凭证

在Jenkins中导入服务账户的凭证,以便Jenkins能够使用该凭证与Kubernetes通信。

5. 创建 Jenkins Pipeline

现在你已经配置好了Jenkins与Kubernetes的集成,可以开始创建Jenkins Pipeline来自动化你的构建和部署流程。

5.1 编写 Pipeline 脚本

编写一个 Jenkinsfile,定义你的构建和部署流程。例如:

pipeline {
    agent { kubernetes {
        yaml '''
        apiVersion: v1
        kind: Pod
        spec:
          containers:
            - name: jenkins-agent
              image: maven:3.5-jdk-8
        '''
    } }
    
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Deploy') {
            steps {
                sh 'kubectl apply -f deployment.yaml'
            }
        }
    }
}
5.2 创建 Jenkins 项目

在Jenkins中创建一个新的项目,并关联到你的 Jenkinsfile。

6. 触发构建

你可以通过手动触发构建、设置定时任务或者与源代码仓库集成来自动触发构建。

综上所述,你就可以在Kubernetes集群中部署和配置Jenkins,并利用它来进行持续集成和持续部署了。

标签:Kubernetes,部署,集群,jenkins,Helm,Jenkins,K8S
From: https://www.cnblogs.com/huangjiabobk/p/18357701

相关文章

  • Jenkins配置分布式构建环境——添加固定Agent并使用JNLP启动Agent详解
    1、概述在《Jenkins部署架构概述 》这篇博文中对Jenkins部署架构进行了讲解。对于分布式架构,Jenkins包括固态Agent和动态Agent两种方案。固定Agent(常用于虚拟机):Agent容器一直运行,任务构建完成后不会销毁,创建完成后将一直占用集群资源,配置过程较简单。动态Agent(常用于K8s):构建......
  • 利用Jenkins Pipeline高效部署Kubernetes服务
    什么是JenkinsPipelineJenkinsPipeline是一种持续集成和持续交付(CI/CD)的功能,它允许开发者将复杂的构建、测试和部署流程编码为一系列称为“管道”的自动化步骤。这些步骤以Groovy脚本的形式编写,并且可以在Jenkins中可视化管理。Pipeline提供了代码化和可重用的构建过程,支持更......
  • docker 部署 Jenkins
    dockerrun-d-uroot-p9095:8080-p50000:50000--namejenkins-v/data/jenkins:/var/jenkims_home-v/etc/localtime:/etc/localtimejenkins/jenkins查看容器日志,获取初始密码 ......
  • Kubeadm方式部署3master,2work集群(Kubernetes-1.22.0)
    目录一.环境准备二.安装Docker和keepalived三.安装kubernetes四.获取镜像五.集群部署启动六. 配置haproxy七.配置keepalived八. 初始化集群九.配置加入集群十.配置使用网络插件十一. kubernetes命令自动补全Kubernetes-1.22.0可视化部署-CSDN博客......
  • Apache SeaTunnel 2.3.5 Zeta-Server集群环境搭建与使用
    作者|月影幽篁在当前数据驱动的业务环境中,快速且高效的数据处理能力至关重要。ApacheSeaTunnel以其卓越的性能和灵活性,成为数据工程师和开发者的首选工具之一。本文将介绍如何在集群环境中搭建ApacheSeaTunnel2.3.5版本的Zeta-Server,并概述其使用方法。SeaTunnel二进制包......
  • 个人技能总结-ES集群部分技能总结
    ES集群架构总结规划ES应用场景Elasticsearch(ES)是一款功能强大的分布式搜索引擎,广泛应用于各种场景。以下是其主要应用场景的详细介绍:Elasticsearch被广泛用于构建全文搜索引擎,能够快速而准确地搜索大量的文本数据,并提供高效的分析和聚合功能。例如,维基百科和百度百科使用ES进......
  • KingbaseES RAC运维案例之---集群及数据库管理
    案例说明:KingbaseESRAC在部署完成后,进行日常的集群及数据库管理。适用版本:KingbaseESV008R006C008M030B0010操作系统版本:[root@node201KingbaseHA]#cat/etc/centos-releaseCentOSLinuxrelease7.9.2009(Core)集群架构:如下所示,node1和node2为集群节点:节点信息:......
  • Jenkins部署架构概述
    1、Jenkins是什么Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用......
  • k8s设置某台机器不调度
    在Kubernetes中,你可以通过给节点打上NoSchedule或NoExecute污点(taint)来阻止新的Pod调度到该节点上。以下是如何设置某台机器不调度的具体步骤:1.查看节点列表首先,查看当前的节点列表,确定你想要设置为不可调度的节点的名称:kubectlgetnodes2.给节点打污点(Tain......
  • RabbitMQ普通集群同一宿主机docker搭建
    1.准备3个节点安装rabbitmq,搭建集群(注意:每个节点启动间隔15~20s,如果启动失败,需删除宿主机文件重新启动)2.宿主机文件目录手动创建,并设置可操作权限准备宿主机文件目录cd/usr/local/创建rabbitmq映射目录mkdirrabbitmqcdrabbitmqmkdir1mkdir2mkdir3cd1mkdirli......