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

简介: 在K8S中,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,并利用它来进行持续集成和持续部署了。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
238 1
|
1月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
227 89
|
2月前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
539 0
存储 jenkins 持续交付
492 2
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
274 9
|
8月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
835 33
|
8月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
484 19
|
8月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
8月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
296 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性

推荐镜像

更多